Вывод статистики на OSX

15

Я хочу использовать statкоманду для получения информации о файле. Я сделал это:

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

3-я и 4-я строки - это вывод, который я получил. Это происходит всякий раз, когда я использую statкоманду. Между тем, все в Интернете получают такие вещи, как:

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

Я попробовал это на терминале и iTerm 2 и на свежем сеансе. На том же ноутбуке я подключился к своему серверу CentOS и ввел те же команды. Это сработало отлично. Это заставляет меня поверить, что терминальное приложение не является проблемой. Я работаю на MacBook Pro (Retina, 15-дюймовый, конец 2013 г.) с OS X Yosemite версии 10.10.1

Что происходит и как я могу это исправить?

jgleoj23
источник

Ответы:

21

Использование -xопции для statдолжно дать вам похожий вывод:

$ 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

Чтобы сделать это по умолчанию, вы можете создать псевдоним и сохранить его в ~/.bashrc:

alias stat="stat -x"
Tyilo
источник
В zsh по какой-то причине statвстроен в оболочку и маскирует фактическую команду stat. Есть идеи как это отключить? (У меня установлен macutils GNU на моей macOS, но zsh не позволяет мне его использовать).
Ахмет Алп Балкан
9

Команда, statкоторую вы видели у «всех в Интернете», - это команда GNU coreutils , которая встречается в не встроенных Linux и Cygwin. Это может быть также BusyBox , который обычно используется во встроенном Linux. OSX имеет другую statутилиту (из FreeBSD / NetBSD / OpenBSD), с аналогичной целью, но с разными опциями и другим форматом вывода.

Команда statне стандартизирована, поэтому нельзя ожидать, что она будет иметь одинаковое поведение во всех вариантах Unix. На практике есть статистика BSD, статистика Linux и многие другие варианты без statкоманды.

Жиль "ТАК - прекрати быть злым"
источник
3
Обратите внимание, что нет Linux stat(если вы не обращаетесь к Linuxсистемному вызову stat ()), просто GNU statиз GNU coreutils.
Стефан Шазелас
У IRIX также была statкоманда задолго до GNU или BSD. zshтакже имел statвстроенную задолго (хотя и не так долго) перед GNU и BSD.
Стефан Шазелас