man/files
man · Dosyalar

$ stat

Bölüm 1 · Dosyalar

dosya durum bilgilerini görüntüler ve sembolik bağlantıları çözümler

Özet

stat [-FLnq] [-f format | -l | -r | -s | -x] [-t zamanbiçimi] [dosya ...]
readlink [-fn] [dosya ...]

Açıklama

stat yardımcı programı, komut satırında belirtilen her bir dosya hakkında ayrıntılı meta veri (boyut, izinler, oluşturma/değiştirilme zamanları, sahiplik vb.) bilgilerini görüntüler. Dosya bilgilerini çekmek için ilgili dosya üzerinde okuma, yazma veya yürütme izinleri gerekmez; ancak dosyaya giden yol adında listelenen tüm üst dizinlerin aranabilir (çalıştırılabilir) olması şarttır. Herhangi bir argüman verilmezse stat, standart girdi (stdin) dosya tanımlayıcısı hakkındaki bilgileri görüntüler.

readlink olarak çağrıldığında (veya ilgili modda), yalnızca sembolik bağlantının (symlink) işaret ettiği hedef konum ekrana yazdırılır. Eğer verilen argüman bir sembolik bağlantı değilse (ve -f seçeneği belirtilmemişse) hiçbir şey yazdırılmaz ve araç hata ile sonlanır. -f seçeneği verilirse, sembolik bağlantılar rekürsif olarak çözümlenerek mutlak yol adı kurallı hale (canonicalized) getirilir.

Seçenekler

Aşağıdaki seçenekler mevcuttur:

  • -F: ls(1) komutunda olduğu gibi, her dosya türünü ayırt eden bir simge görüntüler: Dizinler için /, yürütülebilir dosyalar için *, sembolik bağlantılar için @, whiteout dosyaları için %, soketler için = ve FIFO boruları için |. -F seçeneği otomatik olarak -l seçeneğini de kapsar.
  • -L: lstat(2) yerine stat(2) sistem çağrısını kullanır. Bu sayede, dosya bir sembolik bağlantı ise bağlantının kendisine ait bilgileri değil, hedeflenen dosyanın bilgilerini görüntüler. Bağlantı bozuksa veya hedef mevcut değilse, otomatik olarak sembolik bağlantının kendi bilgilerine geri döner.
  • -f format: Çıktıyı belirtilen format yapısına göre özelleştirerek yazar (detaylar için aşağıdaki Biçimlendirme Kuralları bölümüne bakın).
  • -l: Çıktıyı ls -lT çıktısı ile aynı formatta gösterir.
  • -n: Çıktının sonuna otomatik olarak yeni satır (\n) karakteri eklemez.
  • -q: stat(2) veya lstat(2) çağrılarının başarısız olduğu durumlarda hata mesajlarını gizler. readlink modunda bu hata gizleme varsayılan olarak etkindir.
  • -r: Ham (raw) bilgileri görüntüler; stat yapısındaki tüm alanları hiçbir biçimlendirme uygulamadan ham sayısal değerler halinde (örneğin Unix epoch'tan bu yana geçen saniye olarak) yazdırır.
  • -s: Çıktıyı, kabuk (shell) ortam değişkenlerini doğrudan başlatmak (örneğin eval) için uygun olan atama formatında (st_size=123 st_mode=...) yazdırır.
  • -t zamanbiçimi: Zaman damgalarını belirtilen zamanbiçimi yapısıyla yazdırır. Biçim dizgesi doğrudan strftime(3) fonksiyonuna iletilir.
  • -x: Bilgileri, Linux dağıtımlarındaki stat çıktısına benzer şekilde çok daha ayrıntılı ve açıklayıcı bir formatta görüntüler.

Biçimlendirme Kuralları (Formatting)

Biçim dizgileri, % karakteriyle başlaması ve struct stat yapısındaki alanları seçen bir karakterle bitmesiyle printf(3) formatına oldukça benzer.

Biçim Bayrakları (Flags)

  • #: Sekizlik (octal) çıktının başına 0, onaltılık (hex) çıktının başına 0x eklenmesini sağlar.
  • +: Sayıların önündeki artı/eksi işaretini her zaman yazdırır (pozitif sayılar dahil).
  • -: Çıktıyı sola hizalar (varsayılan olarak sağa hizalıdır).
  • 0: Sayıları boşluk yerine soluna sıfır (0) doldurarak yazar.
  • (boşluk): Negatif olmayan sayıların önüne bir adet boşluk karakteri ayırır.

Alan Belirteçleri (Format Specifiers)

Belirteç struct stat Karşılığı Açıklama
d st_dev Dosyanın üzerinde bulunduğu aygıtın kimliği.
i st_ino Dosyanın inode numarası.
p st_mode Dosya türü ve erişim izinleri (modu).
l st_nlink Dosyaya giden sabit bağlantı (hard link) sayısı.
u st_uid Dosya sahibinin sayısal kullanıcı kimliği (UID).
g st_gid Dosyanın sayısal grup kimliği (GID).
r st_rdev Karakter ve blok aygıt özel dosyaları için aygıt numarası.
a st_atime Dosyaya son erişim zamanı (atime).
m st_mtime Dosyanın son değişiklik zamanı (mtime).
c st_ctime Dosya meta verilerinin (inode) son değişiklik zamanı (ctime).
B st_birthtime Dosyanın ilk oluşturulma (doğum) zamanı (birthtime).
z st_size Dosyanın bayt cinsinden boyutu.
b st_blocks Dosya için ayrılan fiziksel disk blok sayısı.
k st_blksize En uygun dosya sistemi G/Ç (I/O) blok boyutu.
f st_flags Dosya için kullanıcı tanımlı sistem bayrakları.
v st_gen Inode üretim (generation) numarası.

Özel Çıktı Belirteçleri (Uzatılmış Yapılar)

Belirteç Açıklama
N Dosyanın adı.
R Dosyaya karşılık gelen mutlak fiziksel yol adı.
T Dosya türü (ls -F stili veya daha açıklayıcı formatta).
Y Sembolik bir bağlantının hedef aldığı yol.
Z Aygıt dosyaları için "major,minor" çıktısı, diğer dosyalar için boyut çıktısı verir.

[!NOTE] Özel çıktı belirteci S, çıktının (uygulanabilir olduğunda) dizgi (string) biçiminde olmasını sağlamak için kullanılabilir (örn. %Sp dosya izinlerini -rw-r--r-- şeklinde, %Su sahip adını root şeklinde görüntüler).

Alt Alan Belirteçleri (Subfield Modifiers)

  • H (Yüksek - High): Aygıtlar için ana (major) numarayı; izinler (p) için kullanıcı (user) bitlerini; dosya türleri (T) için uzun açıklama biçimini temsil eder.
  • M (Orta - Middle): İzinler için grup (group) bitlerini veya sayısal izinler için suid/sgid/sticky bitlerini temsil eder.
  • L (Düşük - Low): Aygıtlar için ikincil (minor) numarayı; izinler için diğer (other) bitlerini; tür (T) için ls -F tarzı simgeyi temsil eder.

Örnekler

Aşağıdaki örnekler kabukta (shell) çalıştırılabilecek şekilde gösterilmiştir:

  1. Varsayılan biçimde dosya meta verilerini görüntüleme:

    stat /tmp/bar
  2. Sembolik bir bağlantının kendisi yerine, işaret ettiği hedef dizinin bilgilerini / ile sonlandırarak alma (-LF):

    stat -LF /tmp/foo
  3. Kabuk ortam değişkenlerini topluca başlatmak için eval ve -s seçeneğini kullanma:

    eval $(stat -s .profile)
    echo "Dosya Boyutu: $st_size, Son Degistirilme: $st_mtimespec"
  4. Belirli dosyaların adlarını, türlerini ve bağlantı hedeflerini özel biçim dizgesiyle listeleme:

    stat -f "%N: %HT%SY" /tmp/*
  5. Aygıtların isimlerini, türlerini, major ve minor numaralarını detaylıca listeleme:

    stat -f "Ad: %N%n%tTür: %HT%n%tAna: %Hr%n%tİkincil: %Lr%n%n" /dev/zero
  6. Dosya üzerindeki sahiplik ve grup izin yetkilerini açık biçimde ayırma:

    stat -f "%Sp -> sahip=%SHp grup=%SMp diğer=%SLp" .
  7. Dosyaların değiştirilme zamanlarını (%Sm) yıl-ay-gün-saat-dakika-saniye biçiminde sıralanabilir yazma:

    stat -f %Sm -t %Y%m%d%H%M%S /tmp/foo

Ayrıca Bakınız

file(1), ls(1), readlink(1), lstat(2), readlink(2), stat(2), printf(3), strftime(3)