Sortie de stat sur OSX


15

Je souhaite utiliser la statcommande pour obtenir des informations sur un fichier. J'ai fait ça:

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

Les 3ème et 4ème lignes sont la sortie que j'ai obtenue. Cela se produit chaque fois que j'utilise la statcommande. Pendant ce temps, tout le monde sur Internet obtient des trucs comme:

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

J'ai essayé cela sur Terminal et iTerm 2 et dans une nouvelle session. Sur le même ordinateur portable, je me suis connecté à mon serveur CentOS et j'ai entré les mêmes commandes. Cela a parfaitement fonctionné. Cela m'amène à croire que l'application de terminal n'est pas le problème. Je suis sur un MacBook Pro (Retina, 15 pouces, fin 2013) avec OS X Yosemite version 10.10.1

Que se passe-t-il et comment puis-je résoudre ce problème?

Réponses:


21

L'utilisation de l' -xoption pour statdevrait vous donner une sortie similaire:

$ 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

Pour en faire la valeur par défaut, vous pouvez créer un alias et l'enregistrer dans ~/.bashrc:

alias stat="stat -x"

Sur zsh, pour une raison quelconque, statun shell est intégré et masque la commande stat actuelle. Des idées sur la façon de désactiver cela? (J'ai installé GNU coreutils sur mon macOS, mais zsh m'empêche de l'utiliser).
Ahmet Alp Balkan

9

La statcommande que vous avez vue de «tout le monde sur Internet» est celle de GNU coreutils , qui se trouve sur Linux et Cygwin non embarqués. Il pourrait également s'agir de BusyBox , que l'on trouve couramment sur Linux embarqué. OSX a un statutilitaire différent (celui de FreeBSD / NetBSD / OpenBSD), avec un objectif similaire mais des options différentes et un format de sortie différent.

La statcommande n'est pas standardisée, vous ne pouvez donc pas vous attendre à ce qu'elle ait le même comportement sur toutes les variantes Unix. En pratique, il y a BSD stat et Linux stat, et de nombreuses autres variantes n'ont pas de statcommande.


3
Notez qu'il n'y a pas Linux stat(sauf si vous faites référence à l' Linuxappel système stat ()), juste GNU statde GNU coreutils.
Stéphane Chazelas

IRIX avait également une statcommande bien avant celles GNU ou BSD. zshavait également un statlong intégré (mais pas aussi long) avant ceux de GNU et BSD.
Stéphane Chazelas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.