Saída de stat no OSX

15

Eu quero usar o statcomando 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

A terceira e a quarta linhas são a saída que obtive. Isso acontece sempre que eu uso o statcomando 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 CentOS e coloquei os mesmos comandos. Funcionou perfeitamente. Isso me leva a acreditar que o aplicativo do terminal não é o problema. 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?

jgleoj23
fonte

Respostas:

21

O uso da -xopção for statdeve 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"
Tyilo
fonte
No zsh, por algum motivo, staté um shell embutido e mascara o comando stat real. Alguma idéia de como desativar isso? (Eu tenho o GNU coreutils instalado no meu macOS, mas o zsh me impede de usá-lo).
Ahmet Alp Balkan
9

O statcomando que você viu de "todos na Internet" é o do GNU coreutils , encontrado no Linux e Cygwin não-incorporado. Também pode ser o da BusyBox , que é comumente encontrada no Linux incorporado. O OSX possui um statutilitário diferente (o do FreeBSD / NetBSD / OpenBSD), com uma finalidade semelhante, mas com opções diferentes e um formato de saída diferente.

O statcomando 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á estatísticas BSD e Linux, e muitas outras variantes não têm um statcomando.

Gilles 'SO- parar de ser mau'
fonte
3
Note que não existe Linux stat(a menos que você esteja se referindo à Linuxchamada do sistema stat ()), apenas GNU statdo coreutils do GNU.
Stéphane Chazelas
O IRIX também tinha um statcomando muito antes dos GNU ou BSD. zshtambém tinha um statbuiltin muito tempo (embora não tão longo) antes dos GNU e BSD.
Stéphane Chazelas