readlink (ve stat) - macOS Kılavuz Sayfası (Bölüm 1)
Özet
stat [-FLnq] [-f format | -l | -r | -s | -x] [-t timefmt] [file ...]
readlink [-fn] [file ...]
Açıklama
stat aracı, file (dosya) ile işaret edilen dosya hakkında bilgi görüntüler. Belirtilen dosyanın okuma, yazma veya yürütme izinlerine sahip olunması gerekmez, ancak dosyaya giden yol adında listelenen tüm dizinlerin aranabilir olması gerekir. Herhangi bir argüman verilmezse, stat standart girdi için dosya tanımlayıcısı (file descriptor) hakkında bilgi görüntüler.
readlink olarak çağrıldığında, yalnızca sembolik bağlantının (symbolic link) hedefi yazdırılır. Eğer verilen argüman bir sembolik bağlantı değilse ve -f seçeneği belirtilmemişse, readlink hiçbir şey yazdırmaz ve bir hata ile çıkar. Eğer -f seçeneği belirtilmişse, çıktı, verilen yolun her bir bileşenindeki her bir sembolik bağlantıyı yinelemeli (rekürsif) olarak takip ederek kurallaştırılır (canonicalized). readlink hem mutlak hem de göreceli yolları çözecek ve file dosyasına karşılık gelen mutlak yol adını döndürecektir. Bu durumda, argümanın bir sembolik bağlantı olması gerekmez.
Görüntülenen bilgi, verilen argümanla lstat(2) çağrılarak ve döndürülen yapı değerlendirilerek elde edilir. Varsayılan biçim; sırasıyla st_dev, st_ino, st_mode, st_nlink, st_uid, st_gid, st_rdev, st_size, st_atime, st_mtime, st_ctime, st_birthtime, st_blksize, st_blocks ve st_flags alanlarını görüntüler.
Seçenekler şunlardır:
-F: ls(1)'de olduğu gibi, dizin olan her yol adından hemen sonra bir eğik çizgi (/), yürütülebilir olan her birinden sonra bir yıldız işareti (*), her sembolik bağlantıdan sonra bir et işareti (@), her whiteout'tan sonra bir yüzde işareti (%), her soketten sonra bir eşittir işareti (=) ve FIFO olan her birinden sonra dikey bir çizgi (|) görüntüler.-Fkullanımı-lseçeneğini dolaylı olarak etkinleştirir.-L:lstat(2)yerinestat(2)kullanır.stattarafından bildirilen bilgi, eğerfilebir sembolik bağlantı isefiledosyasının kendisine değil, dosyanın hedefine başvuracaktır. Eğer bağlantı bozuksa veya hedef mevcut değilse,lstat(2)çağrısına geri döner ve bağlantı hakkında bilgi bildirir.-f format: Belirtilen biçimi (format) kullanarak bilgiyi görüntüler. Geçerli biçimlerin açıklaması için Biçimler bölümüne bakın.-l:ls -lTbiçiminde çıktı görüntüler.-n: Her çıktı parçasının sonunda yeni bir satır karakteri bulunmasını zorlamaz.-q:stat(2)veyalstat(2)çağrıları başarısız olursa başarısızlık mesajlarını bastırır.readlinkolarak çalıştırıldığında hata mesajları otomatik olarak bastırılır.-r: Ham (raw) bilgiyi görüntüler. Yani,statyapısındaki tüm alanlar için ham, sayısal değeri görüntüler (örneğin, epoch'tan bu yana saniye cinsinden zamanlar vb.).-s: Değişkenleri başlatmak için uygun olan "kabuk çıktısı" (shell output) biçiminde bilgileri görüntüler.-t timefmt: Belirtilen biçimi kullanarak zaman damgalarını görüntüler. Bu biçim doğrudanstrftime(3)işlevine aktarılır.-x: Bazı Linux dağıtımlarından bilindiği üzere bilgileri daha ayrıntılı bir şekilde görüntüler.
Biçimler
Biçim dizeleri, % ile başlamaları, ardından bir dizi biçimlendirme karakterinin gelmesi ve biçimlendirilecek struct stat alanını seçen bir karakterle bitmeleri bakımından printf(3) biçimlerine benzer. Eğer % işaretinden hemen sonra n, t, % veya @ karakterlerinden biri gelirse; sırasıyla yeni bir satır karakteri, sekme (tab) karakteri, yüzde karakteri veya geçerli dosya numarası yazdırılır; aksi takdirde dize aşağıdakiler açısından incelenir:
Aşağıdaki isteğe bağlı bayraklardan herhangi biri:
#: Sekizli (octal) ve on altılı (hexadecimal) çıktılar için alternatif bir çıktı biçimi seçer. Sıfır olmayan sekizli çıktının başında bir sıfır bulunacak ve sıfır olmayan on altılı çıktının başına"0x"eklenecektir.+: Bir sayının pozitif mi yoksa negatif mi olduğunu gösteren bir işaretin her zaman yazdırılması gerektiğini belirtir. Negatif olmayan sayılar genellikle bir işaretle yazdırılmaz.-: Dize çıktısını sağa hizalamak yerine alanın soluna hizalar.0: Soldan dolgu için dolgu karakterini boşluk yerine'0'karakteri olarak ayarlar.space(Boşluk): Negatif olmayan işaretli çıktı alanlarının önünde bir boşluk ayırır. Her ikisi de kullanılıyorsa,+işareti boşluğu geçersiz kılar.
Ardından aşağıdaki alanlar:
size: Minimum alan genişliğini belirten isteğe bağlı bir ondalık basamak dizesi.prec: Maksimum dize uzunluğunu, kayan noktalı çıktıda ondalık noktadan sonra görünecek basamak sayısını veya sayısal çıktıda görünecek minimum basamak sayısını belirten, ondalık nokta.ve bir ondalık basamak dizesinden oluşan isteğe bağlı bir hassasiyet.fmt: Sırasıyla işaretli ondalık çıktıyı, sekizli çıktıyı, işaretsiz ondalık çıktıyı, on altılı çıktıyı, kayan noktalı çıktıyı ve dize çıktısını temsil edenD,O,U,X,FveyaSseçeneklerinden biri olan isteğe bağlı bir çıktı biçimi belirteci. Bazı çıktı biçimleri tüm alanlara uygulanmaz. Kayan noktalı çıktı yalnızcatimespecalanlarına (a,mvecalanları) uygulanır.
Özel çıktı belirteci S, çıktının (varsa) dize biçiminde olması gerektiğini belirtmek için kullanılabilir. Şunlarla birlikte kullanılabilir:
amc: Tarihistrftime(3)biçiminde görüntüler.dr: Gerçek aygıt adını görüntüler.f: Dosyanın bayraklarınıls -lTdo'da olduğu gibi görüntüler.gu: Grup veya kullanıcı adını görüntüler.p: Dosyanın modunuls -lTd'de olduğu gibi görüntüler.N: Dosyanın adını görüntüler.T: Dosyanın türünü görüntüler.Y: Çıktıya" -> "ekler.Yiçin varsayılan çıktı biçiminin bir dize olduğunu, ancak açıkça belirtilirse bu dört karakterin başına eklendiğini unutmayın.
sub — p, d, r ve T çıktı biçimlerine uygulanan isteğe bağlı bir alt alan belirteci (yüksek, orta, düşük). Aşağıdakilerden biri olabilir:
H: "High" (Yüksek) —rveyad'den gelen aygıtlar için ana (major) numarayı,p'nin dize biçiminden gelen izinler için "kullanıcı" (user) bitlerini,p'nin sayısal biçiminden gelen dosya "tür" (type) bitlerini veT'nin uzun çıktı biçimini belirtir.L: "Low" (Düşük) —rveyad'den gelen aygıtlar için ikincil (minor) numarayı,p'nin dize biçiminden gelen izinler için "diğer" (other) bitlerini,p'nin sayısal biçiminden gelen "kullanıcı" (user), "grup" (group) ve "diğer" (other) bitlerini veTile kullanıldığında dosya türü içinls -Ftarzı çıktı karakterini belirtir (bunun içinLkullanımı isteğe bağlıdır).M: "Middle" (Orta) —p'nin dize çıktı biçiminden gelen izinler için "grup" (group) bitlerini veyap'nin sayısal biçimleri için "suid", "sgid" ve "sticky" bitlerini belirtir.
datum — Gerekli bir alan belirteci olup aşağıdakilerden biridir:
d: Dosyanın bulunduğu aygıt (st_dev).i: Dosyanın inode numarası (st_ino).p: Dosya türü ve izinleri (st_mode).l: Dosyaya olan sabit bağlantıların (hard link) sayısı (st_nlink).u,g: Dosya sahibinin Kullanıcı Kimliği ve Grup Kimliği (st_uid,st_gid).r: Karakter ve blok aygıtı özel dosyaları için aygıt numarası (st_rdev).a,m,c,B: Dosyaya en son erişilen veya değiştirilen zaman ya da inode'un en son değiştirildiği zaman ya da inode'un oluşturulma zamanı (st_atime,st_mtime,st_ctime,st_birthtime).z: Bayt cinsinden dosya boyutu (st_size).b: Dosya için tahsis edilen blok sayısı (st_blocks).k: Optimum dosya sistemi G/Ç (I/O) işlemi blok boyutu (st_blksize).f: Dosya için kullanıcı tanımlı bayraklar.v: Inode nesil numarası (st_gen).
Aşağıdaki beş alan belirteci doğrudan struct stat verilerinden çekilmez, ancak şunlardır:
N: Dosyanın adı.R: Dosyaya karşılık gelen mutlak yol adı.T:ls -F'deki gibi dosya türü veyasubalan belirteciHverilmişse daha açıklayıcı bir biçim.Y: Bir sembolik bağlantının hedefi.Z: Karakter veya blok özel aygıtları içinrdevalanından "major,minor" olarak genişler ve diğer tüm dosyalar için boyut çıktısı verir.
Yalnızca % ve alan belirteci gereklidir. Çoğu alan belirteci, varsayılan olarak O olan p; varsayılan olarak D olan a, m ve c; ve varsayılan olarak S olan Y, T ve N hariç olmak üzere çıktı biçimi olarak varsayılan olarak U değerini alır.
Çıkış Durumu
stat ve readlink araçları başarı durumunda 0, bir hata oluşursa >0 değeriyle çıkar.
Örnekler
Aşağıdaki örnekler kabukta (shell) çalıştırılabilecek şekilde gösterilmiştir:
Varsayılan çıktı biçiminde dosya durumunu görüntüleme:
stat /tmp/barÇıktı örneği:
0 78852 -rw-r--r-- 1 root wheel 0 0 "Jul 8 10:26:03 2004" "Jul 8 10:26:03 2004" "Jul 8 10:28:13 2004" "Jan 1 09:00:00 1970" 16384 0 0 /tmp/barSembolik bir bağlantıyı ve hedefini detaylı listeleme:
stat -F /tmp/fooÇıktı örneği:
lrwxrwxrwx 1 jschauma cs 1 Apr 24 16:37:28 2002 /tmp/foo@ -> /Sembolik bağlantının hedefini (takip ederek) listelemek için
-Lseçeneği eklenebilir:stat -LF /tmp/fooÇıktı örneği:
drwxr-xr-x 16 root wheel 512 Apr 19 10:57:54 2002 /tmp/foo/Kabuk değişkenlerini başlatmak için
-sseçeneği kullanımı:- csh:
eval set `stat -s .cshrc` echo $st_size $st_mtimespec - sh / zsh:
eval $(stat -s .profile) echo $st_size $st_mtimespec
Her iki kabukta da çıktı olarak dosya boyutu ve zaman damgası değerleri dönecektir.
- csh:
Dosya türlerini ve bağlantı hedeflerini listeleme:
stat -f "%N: %HT%SY" /tmp/*Çıktı örneği:
/tmp/bar: Symbolic Link -> /tmp/foo /tmp/output25568: Regular File /tmp/blah: Directory /tmp/foo: Symbolic Link -> /Aygıt bilgilerini özel bir biçimde listeleme:
stat -f "Name: %N%n%tType: %HT%n%tMajor: %Hr%n%tMinor: %Lr%n%n" /dev/*Çıktı örneği:
Name: /dev/wt8 Type: Block Device Major: 3 Minor: 8 Name: /dev/zero Type: Character Device Major: 2 Minor: 12İzinleri sahiplik bazında detaylı ayrıştırma:
stat -f "%Sp -> owner=%SHp group=%SMp other=%SLp" .Çıktı örneği:
drwxr-xr-x -> owner=rwx group=r-x other=r-xEn son değiştirilen üç dosyayı bulma:
stat -f "%m%t%Sm %N" /tmp/* | sort -rn | head -3 | cut -f2-Çıktı örneği:
Apr 25 11:47:00 2002 /tmp/blah Apr 25 10:36:34 2002 /tmp/bar Apr 24 16:47:35 2002 /tmp/fooDosyanın son değiştirilme zaman damgasını alma:
- Ham (epoch saniyesi) biçiminde:
Örnek çıktı:stat -f %m /tmp/foo1177697733 - Okunabilir zaman biçiminde:
Örnek çıktı:stat -f %Sm /tmp/fooApr 27 11:15:33 2007 - Özel biçimlendirilmiş zaman damgası ile (YılAyGünSaatDakikaSaniye):
Örnek çıktı:stat -f %Sm -t %Y%m%d%H%M%S /tmp/foo20070427111533 - UTC saat diliminde görüntüleme:
Örnek çıktı:TZ= stat -f %Sm -t %Y%m%d%H%M%S /tmp/foo20070427181533
- Ham (epoch saniyesi) biçiminde:
Ayrıca Bkz.
file(1), ls(1), lstat(2), readlink(2), stat(1), printf(3), strftime(3)
Tarihçe
stat aracı ilk olarak NetBSD 1.6 ve FreeBSD 4.10 sürümlerinde ortaya çıkmıştır.
Yazarlar
stat aracı Andrew Brown atatat@NetBSD.org tarafından yazılmıştır. Bu kılavuz sayfası Jan Schaumann jschauma@NetBSD.org tarafından yazılmıştır.