Saída do stat no OSX

13

Eu quero usar o comando stat para obter informações sobre um arquivo. Eu fiz isso:

Josephs-MacBook-Pro:Desktop Joseph$ echo 'hello' > info.txt
Josephs-MacBook-Pro:Desktop Joseph$ stat info.txt
16777220 21195549 -rw-r--r-- 1 Joseph staff 0 6 "Dec 21 20:45:31 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" 4096 8 0 info.txt

As linhas 3 e 4 são a saída que recebi. Isso acontece sempre que eu uso o comando stat . Enquanto isso, todos na internet recebem coisas como:

File: 'index.htm'
Size: 17137 Blocks: 40 IO Block: 8192 regular file
Device: 8h/8d Inode: 23161443 Links: 1
Access: (0644/-rw-r--r--) 
Uid: (17433/comphope) Gid: ( 32/ www)
Access: 2007-04-03 09:20:18.000000000 -0600
Modify: 2007-04-01 23:13:05.000000000 -0600
Change: 2007-04-02 
16:36:21.000000000 -0600

Eu tentei isso no Terminal e no iTerm 2 e em uma nova sessão. No mesmo laptop, conectei-me ao meu servidor do CentOS e coloquei os mesmos comandos. Funcionou perfeitamente. Isso me leva a acreditar que o aplicativo do terminal não é o problema. Eu estou em um MacBook Pro (Retina, 15 polegadas, final de 2013) com o OS X Yosemite versão 10.10.1

O que está acontecendo e como posso corrigir isso?

    
por jgleoj23 22.12.2014 / 02:59

2 respostas

17

Usar a opção -x para stat deve fornecer uma saída semelhante:

$ stat -x foo
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (  501/   Tyilo)  Gid: (    0/   wheel)
Device: 1,4   Inode: 8626874    Links: 1
Access: Mon Dec 22 06:17:54 2014
Modify: Mon Dec 22 06:17:54 2014
Change: Mon Dec 22 06:17:54 2014

Para tornar isso o padrão, você pode criar um alias e salvá-lo em ~/.bashrc :

alias stat="stat -x"
    
por 22.12.2014 / 06:20
8

O comando stat que você viu em "todos na internet" é o de GNU coreutils , que é encontrado em Linux e Cygwin não embutidos. Também pode ser o de BusyBox , que é comumente encontrado no Linux embarcado. OSX tem um utilitário stat diferente (o um de FreeBSD / NetBSD / OpenBSD), com um propósito semelhante, mas diferentes opções e um formato de saída diferente.

O comando stat não é padronizado, então você não pode esperar que ele tenha o mesmo comportamento em todas as variantes do Unix. Na prática, há o BSD stat e o Linux stat, e muitas outras variantes não possuem o comando stat .

    
por 22.12.2014 / 03:09