stat adalah utilitas baris perintah yang menampilkan informasi terperinci tentang file yang diberikan sebagai argumen atau file sistem.

Artikel ini menjelaskan cara menggunakan perintah stat.

Menggunakan Perintah stat

Sintaks untuk perintah stat adalah sebagai berikut:

stat [OPTION]... FILE...

stat menerima satu atau lebih nama input FILE dan menyertakan sejumlah opsi yang mengontrol perilaku perintah dan output.

Mari kita lihat contoh berikut:

stat file.txt

Outputnya akan terlihat seperti ini:

  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.991878701 +0100
Modify: 2019-11-06 09:52:17.971878714 +0100
Change: 2019-11-06 09:52:17.971878714 +0100
 Birth: -

Ketika dipanggil tanpa opsi, stat akan menampilkan informasi dari file sebagai berikut:

  • File – Nama dari suatu file.
  • Size – Ukuran file dalam byte.
  • Blocks – Jumlah blok yang dialokasikan yang diambil file.
  • IO Block – Ukuran dalam byte dari setiap blok.
  • File type – (misal File biasa, direktori, symbolic link …)
  • Device – Nomor perangkat dalam heks dan desimal.
  • Inode – Nomor Inode.
  • Links – Jumlah hard links.
  • Access – File permissions dalam metode numerik dan simbolik
  • Uid – User ID dan nama owner.
  • Gid – ID grup dan nama owner.
  • Context – Konteks keamanan SELinux.
  • Access – Terakhir kali file diakses.
  • Modify – Terakhir kali konten file diubah.
  • Change – Terakhir kali atribut atau isi file diubah.
  • Birth – Waktu pembuatan file (tidak didukung di Linux).

Menampilkan Informasi Tentang Sistem File

Untuk mendapatkan informasi tentang file sistem di mana file yang diberikan berada, alih-alih informasi tentang file itu sendiri, gunakan opsi -f, (--file-system):

stat -f file.txt

Output dari perintah akan terlihat seperti ini:

  File: "package.json"
    ID: 8eb56097b4564d20 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 61371211   Free: 24595668   Available: 22365251
Inodes: Total: 15645336   Free: 13899610

Ketika stat dipanggil dengan opsi -f, stat akan menunjukkan informasi berikut:

  • File – Nama file.
  • ID – ID sistem file dalam hex.
  • Namelen – Panjang maksimum nama file.
  • Fundamental block size – Ukuran setiap blok pada sistem file.
  • Blocks:
    • Total – Jumlah total blok dalam sistem file.
    • Free – Jumlah blok yang tersedia di sistem file.
    • Available – Jumlah blok yang tersedia untuk pengguna non-root.
  • Inodes:
    • Total – Jumlah total inode dalam sistem file.
    • Free – Jumlah inode yang tersedia dalam sistem file.

Dereference (Ikuti) Symlinks

Secara default, stat tidak mengikuti symlink. Jika Anda menjalankan perintah pada symlink, output akan menyertakan informasi tentang symlink, bukan file yang ditunjuknya:

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: 8122259     Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-11-06 21:12:26.834956073 +0100
Modify: 2019-08-14 12:11:48.122354519 +0200
Change: 2019-08-14 12:11:48.122354519 +0200
 Birth: -

Copy

Untuk melakukan dereferensi (ikuti) symlink dan menampilkan informasi tentang file yang ditunjuk symlink, gunakan opsi -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 21:12:26.834956073 +0100
Modify: 2019-08-14 12:11:48.122354519 +0200
Change: 2019-08-14 12:11:48.122354519 +0200
 Birth: -

Kustomisasi Output

Perintah stat memiliki dua opsi yang memungkinkan Anda untuk kustomisasi output agar sesuai dengan kebutuhan Anda: -c, (--format="format") dan --printf="format".

Perbedaan antara kedua opsi ini adalah ketika dua atau lebih file digunakan sebagai operan --format secara otomatis menambahkan baris baru setelah setiap output operan. --Printf mengartikan backslash escapes.

Ada banyak format directives untuk file dan sistem file yang dapat digunakan dengan --format dan --printf.

Misalnya, untuk melihat hanya tipe file yang akan Anda gunakan:

stat --format="%F" /dev/null
character special file

Anda dapat menggabungkan sejumlah arahan pemformatan dan secara opsional menggunakan pemisah kustom di antaranya. Pemisah dapat berupa karakter tunggal atau string:

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

Untuk menafsirkan karakter khusus seperti baris atau tab baru, gunakan opsi --printf:

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

\n mencetak baris baru:

Name: /etc
Permissions: 755

Stat juga dapat menampilkan informasi dalam bentuk singkat. Format ini berguna untuk parsing oleh utilitas lain.

Aktifkan perintah dengan opsi -t (--terse) untuk mencetak output dalam bentuk singkat:

stat -t /etc
/etc 12288 24 41ed 0 0 801 8134465 147 0 0 1543063333 1543063333 1543063333 0 4096

Untuk daftar lengkap semua directive format untuk file dan sistem file, ketikkan man stat atau stat --help di terminal distribusi Linux Anda.

Kesimpulan

Perintah stat mencetak informasi tentang file yang diberikan dan sistem secara mendetail.

Di Linux, ada beberapa perintah lain yang dapat menampilkan informasi tentang file yang diberikan, dengan ls yang paling banyak digunakan, tetapi hanya memperlihatkan sebagian informasi dan tidak selengkap seperti yang disediakan oleh perintah stat.