← man/files
readlink — man readlink — 80×24
ugur@toprak:~/man/files$man readlink
Bölüm 1 Dosyalar

readlink

dosya durumunu görüntüler

Ö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. -F kullanımı -l seçeneğini dolaylı olarak etkinleştirir.

  • -L: lstat(2) yerine stat(2) kullanır. stat tarafından bildirilen bilgi, eğer file bir sembolik bağlantı ise file dosyası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 -lT biç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) veya lstat(2) çağrıları başarısız olursa başarısızlık mesajlarını bastırır. readlink olarak çalıştırıldığında hata mesajları otomatik olarak bastırılır.

  • -r: Ham (raw) bilgiyi görüntüler. Yani, stat yapısındaki tüm alanlar için ham, sayısal değeri görüntüler (örneğin, çağdan (epoch) 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ğrudan strftime(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 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 eden D, O, U, X, F veya S seçeneklerinden biri olan isteğe bağlı bir çıktı biçimi belirteci. Bazı çıktı biçimleri tüm alanlara uygulanmaz. Kayan noktalı çıktı yalnızca timespec alanlarına (a, m ve c alanları) 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 Tarihi strftime(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 modunu ls -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. Y iç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) — r veya d'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 ve T'nin uzun çıktı biçimini belirtir.

L "Low" (Düşük) — r veya d'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 ve T ile kullanıldığında dosya türü için ls -F tarzı çıktı karakterini belirtir (bunun için L kullanımı isteğe bağlıdır).

M "Middle" (Orta) — p'nin dize çıktı biçiminden gelen izinler için "grup" (group) bitlerini veya p'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ü veya sub alan belirteci H verilmişse daha açıklayıcı bir biçim.

Y Bir sembolik bağlantının hedefi.

Z Karakter veya blok özel aygıtları için rdev alanı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

     Eğer hiçbir seçenek belirtilmemişse, varsayılan biçim "%d %i %Sp %l %Su %Sg %r %z \"%Sa\" \"%Sm\" \"%Sc\" \"%SB\" %k %b %#Xf %N" şeklindedir.

	   > stat /tmp/bar
	   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/bar

     /tmp/foo konumundan / dizinine işaret eden sembolik bir "foo" bağlantısı verildiğinde, stat'ı şu şekilde kullanırsınız:

	   > stat -F /tmp/foo
	   lrwxrwxrwx 1 jschauma cs 1 Apr 24 16:37:28 2002 /tmp/foo@ -> /

	   > stat -LF /tmp/foo
	   drwxr-xr-x 16 root wheel 512 Apr 19 10:57:54 2002 /tmp/foo/

     Bazı kabuk değişkenlerini başlatmak için, -s bayrağını şu şekilde kullanabilirsiniz:

	   > csh
	   % eval set `stat -s .cshrc`
	   % echo $st_size $st_mtimespec
	   1148 1015432481

	   > sh
	   $ eval $(stat -s .profile)
	   $ echo $st_size $st_mtimespec
	   1148 1015432481

     Eğer dosya bir sembolik bağlantı ise işaret edilen dosyaları da içerecek şekilde dosya türlerinin bir listesini almak için aşağıdaki biçimi kullanabilirsiniz:

	   $ stat -f "%N: %HT%SY" /tmp/*
	   /tmp/bar: Symbolic Link -> /tmp/foo
	   /tmp/output25568: Regular File
	   /tmp/blah: Directory
	   /tmp/foo: Symbolic Link -> /

     Aygıtların, türlerinin ve major ile minor aygıt numaralarının sekmeler (tabs) ve satır sonları ile biçimlendirilmiş bir listesini almak için aşağıdaki biçimi kullanabilirsiniz:

	   stat -f "Name: %N%n%tType: %HT%n%tMajor: %Hr%n%tMinor: %Lr%n%n" /dev/*
	   [...]
	   Name: /dev/wt8
		   Type: Block Device
		   Major: 3
		   Minor: 8

	   Name: /dev/zero
		   Type: Character Device
		   Major: 2
		   Minor: 12

     Bir dosya üzerinde ayarlanan izinleri ayrı ayrı belirlemek için aşağıdaki biçimi kullanabilirsiniz:

	   > stat -f "%Sp -> owner=%SHp group=%SMp other=%SLp" .
	   drwxr-xr-x -> owner=rwx group=r-x other=r-x

     En son değiştirilen üç dosyayı belirlemek için aşağıdaki biçimi kullanabilirsiniz:

	   > stat -f "%m%t%Sm %N" /tmp/* | sort -rn | head -3 | cut -f2-
	   Apr 25 11:47:00 2002 /tmp/blah
	   Apr 25 10:36:34 2002 /tmp/bar
	   Apr 24 16:47:35 2002 /tmp/foo

     Bir dosyanın değiştirilme zamanını görüntülemek için:

	   > stat -f %m /tmp/foo
	   1177697733

     Aynı değiştirilme zamanını okunabilir bir biçimde görüntülemek için:

	   > stat -f %Sm /tmp/foo
	   Apr 27 11:15:33 2007

     Aynı değiştirilme zamanını okunabilir ve sıralanabilir bir biçimde görüntülemek için:

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

     Aynısını UTC formatında görüntülemek için:

	   > sh
	   $ TZ= stat -f %Sm -t %Y%m%d%H%M%S /tmp/foo
	   20070427181533

Ayrıca Bakınız

file(1), ls(1), lstat(2), readlink(2), stat(2), 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.

macOS 26.4 Haziran 22, 2017 macOS 26.4