Ausgabe von stat unter OSX

15

Ich möchte den statBefehl verwenden, um Informationen zu einer Datei abzurufen. Ich war das:

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

Die 3. und 4. Zeile sind die Ausgabe, die ich bekommen habe. Dies geschieht immer dann, wenn ich den statBefehl verwende. Mittlerweile bekommt jeder im Internet Sachen wie:

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

Ich habe dies auf Terminal und iTerm 2 und in einer neuen Sitzung versucht. Auf demselben Laptop habe ich eine Verbindung zu meinem CentOS-Server hergestellt und dieselben Befehle eingegeben. Es hat perfekt funktioniert. Dies lässt mich glauben, dass die Terminal-Anwendung nicht das Problem ist. Ich arbeite auf einem MacBook Pro (Retina, 15 Zoll, Ende 2013) mit OS X Yosemite Version 10.10.1

Was ist los und wie kann ich das beheben?

jgleoj23
quelle

Antworten:

21

Wenn Sie die -xOption für verwenden, statsollten Sie eine ähnliche Ausgabe erhalten:

$ 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

Um dies zum Standard zu machen, können Sie einen Alias ​​erstellen und ihn speichern unter ~/.bashrc:

alias stat="stat -x"
Tyilo
quelle
Unter zsh ist aus irgendeinem Grund stateine Shell eingebaut, die den eigentlichen Befehl stat maskiert. Irgendwelche Ideen, wie man das deaktiviert? (Ich habe GNU coreutils auf meinem macOS installiert, aber zsh hindert mich daran, es zu benutzen).
Ahmet Alp Balkan
9

Der statBefehl, den Sie von "Alle im Internet" gesehen haben, ist der Befehl von GNU coreutils , der unter nicht eingebettetem Linux und Cygwin zu finden ist. Es könnte sich auch um die von BusyBox handeln , die häufig unter Embedded Linux zu finden ist. OSX hat ein anderes statDienstprogramm (das von FreeBSD / NetBSD / OpenBSD) mit einem ähnlichen Zweck, aber unterschiedlichen Optionen und einem anderen Ausgabeformat.

Der statBefehl ist nicht standardisiert, sodass Sie nicht erwarten können, dass er auf allen Unix-Varianten dasselbe Verhalten aufweist. In der Praxis gibt es BSD stat und Linux stat, und viele andere Varianten haben keinen statBefehl.

Gilles 'SO - hör auf böse zu sein'
quelle
3
Beachten Sie, dass es keine gibt Linux stat(es sei denn, Sie beziehen sich auf den Systemaufruf Linuxstat ()), sondern nur GNU statvon GNU coreutils.
Stéphane Chazelas
IRIX hatte auch einen statBefehl lange vor den GNU- oder BSD-Befehlen. zshhatte auch ein stateingebautes langes (wenn auch nicht so langes) vor GNU und BSD.
Stéphane Chazelas