Android

Comanda stat în linux

C Programming in Linux Tutorial #077 - stat() Function

C Programming in Linux Tutorial #077 - stat() Function

Cuprins:

Anonim

stat este un utilitar pentru linia de comandă care afișează informații detaliate despre fișierele sau sistemele de fișiere date.

Acest articol explică modul de utilizare a comenzii stat .

Folosind comanda stat

Sintaxa pentru comanda stat este următoarea:

stat… FILE…

stat acceptă unul sau mai multe nume FILE intrare și include o serie de opțiuni care controlează comportamentul și ieșirea comenzii.

Să aruncăm o privire la următorul exemplu:

stat file.txt

Rezultatul va arăta astfel:

File: file.txt Size: 4030 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 13633379 Links: 1 Access: (0644/-rw-r--r--) Uid: (1000/ linuxize) Gid: (1000/ linuxize) Access: 2019-11-06 09:52:17.991979701 +0100 Modify: 2019-11-06 09:52:17.971979713 +0100 Change: 2019-11-06 09:52:17.971979713 +0100 Birth: -

Când este invocat fără nicio opțiune, stat afișează următoarele informații despre fișier:

  • File - Numele fișierului.Size - Dimensiunea fișierului în bytes.Blocks - Numărul de blocuri alocate pe care le ia fișierul.IO Block - Mărimea în octeți a fiecărui tip block.File - (ex. Fișier regulat, director, legătură simbolică…) Dispozitiv - Număr dispozitiv în hex și zecimal.Inode - Număr inode.Linkuri - Număr de legături dure.Access - Permisiunile fișierului în metodele numerice și simbolice.Uid - ID de utilizator și numele proprietarului.Gid - Grup ID și numele proprietarului.Context - Contextul de securitate SELinux.Access - Ultima dată când a fost accesat fișierul.Modifica - Ultima dată când a fost modificat conținutul fișierului.Change - Ultima dată când atributul sau conținutul fișierului a fost schimbat. Timpul de creare a fișierelor (nu este acceptat în Linux).

Afisarea informatiilor despre sistemul de fisiere

Pentru a obține informații despre sistemul de fișiere în care se află fișierul dat, în loc de informații despre fișierul în sine, folosiți opțiunea -f , ( --file-system ):

stat -f file.txt

Ieșirea comenzii va arăta astfel:

File: "package.json" ID: 8eb53097b4494d20 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 61271111 Free: 25395668 Available: 22265851 Inodes: Total: 15630336 Free: 13979610

Când stat este invocat cu opțiunea -f , acesta arată următoarele informații:

  • Fișier - Numele fișierului.ID - ID de sistem de fișiere în hex.Namelen - Lungimea maximă a numelor de fișiere.Mărimea blocului fundamental - Mărimea fiecărui bloc din sistemul de fișiere.Blocks:
    • Total - Număr de blocuri totale în sistem de fișiere.Free - Număr de blocuri gratuite în sistem de fișiere.Disponibil - Numărul de blocuri gratuite disponibile pentru utilizatorii non-root.
    inodes:
    • Total - Numărul total de inode din sistemul de fișiere.Free - Numărul de inode liberi în sistemul de fișiere.

Simboluri Dereference (Follow)

În mod implicit, stat nu respectă simbolurile. Dacă rulați comanda pe un simbol, ieșirea va include informații despre simbol, nu fișierul către care indică:

stat /etc/resolv.conf

File: /etc/resolv.conf ->../run/systemd/resolve/stub-resolv.conf Size: 39 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 8126659 Links: 1 Access: (0777/lrwxrwxrwx) Uid: (0/ root) Gid: (0/ root) Access: 2019-11-06 21:12:26.875956073 +0100 Modify: 2018-07-24 11:11:48.128794519 +0200 Change: 2018-07-24 11:11:48.128794519 +0200 Birth: -

Pentru a elimina (urma) simbolul și a afișa informații despre fișierul către care punctează --dereference , utilizați opțiunea -L , (- --dereference ):

stat -L /etc/resolv.conf

File: /etc/resolv.conf Size: 715 Blocks: 8 IO Block: 4096 regular file Device: 17h/23d Inode: 989 Links: 1 Access: (0644/-rw-r--r--) Uid: (101/systemd-resolve) Gid: (103/systemd-resolve) Access: 2019-11-06 20:35:25.603689619 +0100 Modify: 2019-11-06 20:35:25.555689733 +0100 Change: 2019-11-06 20:35:25.555689733 +0100 Birth: -

Personalizarea ieșirii

Comanda stat are două opțiuni care vă permit să personalizați ieșirea în funcție de nevoile dvs.: -c , ( --format="format" ) și --printf="format" .

Diferența dintre aceste două opțiuni este că atunci când două sau mai multe fișiere sunt utilizate ca operanti --format adaugă automat o linie nouă după ieșirea fiecărui operand. --printf interpretează --printf spate.

Există multe directive de format pentru fișiere și sisteme de fișiere care pot fi utilizate cu --format și --printf .

De exemplu, pentru a vizualiza numai tipul de fișier pe care l-ați folosi:

stat --format="%F" /dev/null

character special file

Puteți combina orice număr de directive de formatare și, în mod opțional, puteți utiliza separatoare personalizate între ele. Separatorul poate fi un singur personaj sau o șir:

stat --format="%n, %F" /dev/null

/dev/null, character special file

Pentru a interpreta caractere speciale precum linia nouă sau fila, utilizați opțiunea --printf :

stat --printf='Name: %n\nPermissions: %a\n' /etc

tipărește o linie nouă:

Name: /etc Permissions: 755

De asemenea, stat poate afișa informațiile sub formă de terse. Acest format este util pentru analizarea altor utilități.

Invocați comanda cu opțiunea -t ( --terse ) pentru a tipări ieșirea sub formă --terse :

stat -t /etc

/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096

Pentru o listă completă a tuturor directivelor de format pentru fișiere și sisteme de fișiere de tip man stat sau stat --help în terminalul dvs.

Concluzie

Comanda stat imprimă informații despre fișierele și sistemele de fișiere date.

În Linux, există mai multe alte comenzi care pot afișa informații despre fișierele date, ls fiind cea mai folosită, dar arată doar o bucată din informațiile furnizate de comanda stat .

terminalul stat