Виведення stat на 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

Я спробував це на Terminal та iTerm 2 та на новому сеансі. На цьому ж ноутбуці я підключився до свого сервера CentOS і ввів ті самі команди. Це спрацювало чудово. Це призводить мене до думки, що термінальна програма не є проблемою. Я на MacBook Pro (Retina, 15-дюймовий, кінець 2013 року) з ОС X Yosemite версії 10.10.1

Що відбувається і як це можна виправити?

Відповіді:


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"

На zsh чомусь statвбудована оболонка і маскує фактичну команду stat. Будь-які ідеї, як відключити це? (У мене на macOS встановлені coreutils GNU, але zsh заважає мені його використовувати).
Ahmet Alp Balkan

9

statКоманда , яку ви бачили від «всіх в Інтернеті» є один з GNU Coreutils , який знаходиться на не здійснення Linux і Cygwin. Це також може бути той , який є BusyBox , який зазвичай зустрічається на вбудованому Linux. OSX має іншу statутиліту (ту, яку вона пропонує від FreeBSD / NetBSD / OpenBSD), з подібною метою, але різними параметрами та іншим форматом виводу.

statКоманда не стандартизована, тому ви не можете очікувати , що вона має таку ж поведінку на всі варіанти Unix. На практиці є BSD stat і Linux stat, і багато інших варіантів не мають statкоманди.


3
Зверніть увагу, що немає Linux stat(якщо ви не посилаєтесь на Linuxstat () системний виклик), а лише GNU statз GNU coreutils.
Стефан Шазелас

IRIX також мав statкоманду задовго до GNU або BSD. zshтакож мав statвбудований довгий (хоча і не такий довгий) перед GNU та BSD.
Stéphane Chazelas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.