İçeriğe geç
academia.sh

Ders 06 / 20

Gezinme Komutları

Çalışma dizini değiştirme, listeleme çıktısının sütunlarının tek tek okunması, sıralama ölçütleri ve dosya üstverisinin tamamına erişim.

İçindekiler

Önceki konuda proje/ ağacı kuruldu ve içine bir betik yerleştirildi. Ağaç üzerinde çalışmadan önce onu okuyabilmek gerekir: hangi dosyalar var, ne kadar yer kaplıyorlar, en son ne zaman değiştiler, kime aitler.

Bu ders listeleme çıktısını sütun sütun çözer. Çıktının okunması, kursun geri kalanında yapılan her işlemin doğrulama aracıdır; kopyalamanın, taşımanın, bağ kurmanın ve izin değiştirmenin sonucu hep aynı çıktıda görülecektir.

Çalışma Dizini Değiştirme

cd komutu çalışma dizinini değiştirir ve dört yaygın biçimde kullanılır:

Komut Etki
cd yol Belirtilen dizine geçer
cd Ev dizinine döner (argümansız)
cd .. Bir üst dizine çıkar
cd - Bir önceki dizine döner ve adını yazdırır

Argümansız cd, ev dizinini HOME ortam değişkeninden okur. Bu, komut yolu dersinde kurulan ortam kavramının doğrudan bir kullanımıdır: ev dizini kabuğa gömülü bir değer değil, ortamdan gelen bir ayardır.

Varsayılan Listeleme

ls komutu argümansız çağrıldığında bulunulan dizini listeler:

$ cd proje
$ ls
arsiv  belge  betik  veri

Üç davranış varsayılandır: adlar sıralanır, nokta ile başlayanlar gösterilmez ve çıktı terminal genişliğine göre sütunlara bölünür.

Üçüncüsü, komutun çıktısının nereye gittiğine bağlıdır:

$ ls
arsiv  belge  betik  veri
$ ls | cat
arsiv
belge
betik
veri

Aynı komut, çıktısı bir terminale gidiyorsa sütunlu, başka bir programa gidiyorsa satır başına tek ad biçiminde yazar. Bunun nedeni, sütun genişliğinin terminal dışında anlamsız olmasıdır. Davranış, çıktıyı işleyen betikler için önemlidir: sütunlu biçimi ayrıştırmaya çalışmak gereksizdir, çünkü betik zaten satır başına tek ad alır.

Nokta ile başlayan adları da görmek için -a verilir:

$ ls -a betik
.  ..  ozet.sh

Uzun Listeleme

-l seçeneği her dosya için tek satırlık bir üstveri özeti verir:

$ ls -l
total 16
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 arsiv
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 belge
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:49 betik
drwxr-xr-x 4 ogrenci ogrenci 4096 Jul 26 18:47 veri

Satırlar yedi alandan oluşur:

1. Tür ve izinler. İlk karakter dosya türüdür: - sıradan dosya, d dizin, l sembolik bağ, c karakter aygıtı, b blok aygıtı. Kalan dokuz karakter izin bitleridir ve izinler konusunda ayrıntılı olarak çözülecektir.

2. Bağlantı sayısı. Bu dosyaya işaret eden dizin girdisi sayısı. Dizinlerde bu sayı 2’den başlar ve her alt dizin bir artırır: veri dizininin 4 değeri, içindeki iki alt dizinden gelir. Sayının ne anlama geldiği bağlantılar dersinde tam olarak açıklanacaktır.

3. Sahip kullanıcı. Dosyanın sahibi.

4. Sahip grup. Dosyanın ait olduğu grup.

5. Boyut. Sıradan dosyalarda bayt cinsinden içerik boyutu; dizinlerde dizin girdisi tablosunun kapladığı yer — içindeki dosyaların toplam boyutu değil.

6. Değişiklik zamanı. İçeriğin son değiştirildiği an. Altı aydan eskiyse saat yerine yıl gösterilir.

7. Ad.

İlk satırdaki total 16 değeri, listelenen dosyaların kapladığı blok sayısıdır; dosya sayısı veya bayt toplamı değildir. Blok boyutu araca ve sisteme göre değişir, bu yüzden bu sayı sistemler arasında karşılaştırılmaz.

Boyut sütunu bayt cinsindendir ve büyük dosyalarda okunması zorlaşır:

$ ls -l /usr/bin/bash
-rwxr-xr-x 1 root root 1543048 Mar 31  2024 /usr/bin/bash
$ ls -lh /usr/bin/bash
-rwxr-xr-x 1 root root 1.5M Mar 31  2024 /usr/bin/bash

-h seçeneği boyutu okunabilir birimlere çevirir. Çevrim yuvarlama yapar; kesin bayt değeri gerektiğinde -h kullanılmaz.

Dizinin Kendisini Listelemek

Bir dizin adı verildiğinde ls dizinin içeriğini listeler. Dizinin kendi satırını görmek için -d gerekir:

$ ls -ld veri
drwxr-xr-x 4 ogrenci ogrenci 4096 Jul 26 18:47 veri

Bu ayrım, izin ve sahiplik komutlarında sonucun doğrulanması için sürekli kullanılır: bir dizinin izinleri değiştirildiğinde bakılması gereken satır, içindeki dosyalarınki değil dizinin kendisininkidir.

Birden çok yol verildiğinde çıktı başlıklarla bölümlenir:

$ ls -li betik veri
betik:
total 4
21931 -rwxr-xr-x 1 ogrenci ogrenci 139 Jul 26 18:49 ozet.sh

veri:
total 8
21908 drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 ham
21909 drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 islenmis

-i seçeneği en sola bir sayı ekler: düğüm numarası (inode number). Bu sayı, dosyanın üstverisini tutan yapının dosya sistemi içindeki kimliğidir. Adın değil, dosyanın kimliğidir — bu ayrım bağlantılar dersinin tamamının dayanağıdır.

Sıralama

Varsayılan sıralama ada göredir. Değişiklik zamanına göre sıralamak için -t kullanılır:

$ ls -lt
total 16
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:49 betik
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 arsiv
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 belge
drwxr-xr-x 4 ogrenci ogrenci 4096 Jul 26 18:47 veri
$ ls -ltr
total 16
drwxr-xr-x 4 ogrenci ogrenci 4096 Jul 26 18:47 veri
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 belge
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:47 arsiv
drwxr-xr-x 2 ogrenci ogrenci 4096 Jul 26 18:49 betik

-t en yeniyi başa alır; -r sırayı ters çevirir. -ltr bileşimi en yeniyi sona alır ve uzun listelerde en çok kullanılan biçimdir: son değişen dosya, ekranı kaydırmaya gerek kalmadan en altta görünür.

Eşit zamanlı dosyalarda ikincil ölçüt addır; bu, çıktının aynı girdi için kararlı kalmasını sağlar.

Diğer sık kullanılan sıralamalar -S (boyuta göre, büyükten küçüğe) ve -X (uzantıya göre) seçenekleridir.

Üstverinin Tamamı

ls -l üstverinin bir özetidir. Tamamı stat ile okunur:

$ stat betik/ozet.sh
  File: betik/ozet.sh
  Size: 139       	Blocks: 8          IO Block: 4096   regular file
Device: 0,71	Inode: 21931       Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1001/ ogrenci)   Gid: ( 1001/ ogrenci)
Access: 2026-07-26 18:49:26.461777000 +0000
Modify: 2026-07-26 18:49:26.458777000 +0000
Change: 2026-07-26 18:49:26.460777000 +0000
 Birth: 2026-07-26 18:49:26.458777000 +0000

Çıktı, ls -l’de gizli kalan üç bilgiyi açar.

İzinler iki biçimde birden verilir: 0755 ve -rwxr-xr-x. Aynı değerin sekizlik ve harfli gösterimleridir; aralarındaki dönüşüm izin bitleri dersinin konusudur.

Kullanıcı ve grup sayısal kimlikleriyle birlikte gösterilir: 1001/ogrenci. Sistemin sakladığı değer sayıdır; ad, bir eşleme dosyasından çözülür.

Üç ayrı zaman damgası vardır:

  • Access — içeriğin son okunduğu an
  • Modify — içeriğin son değiştirildiği an; ls -l bu değeri gösterir
  • Change — üstverinin son değiştiği an; izin veya sahiplik değişikliği bunu günceller, içeriği değiştirmez

Üçüncüsü sık karıştırılır. Bir dosyanın izinleri değiştirildiğinde ls -lt sıralaması değişmez, çünkü değişen zaman Modify değil Change’dir. Bu ayrım, “dosyaya dokunulmuş mu” sorusunun yanıtını değiştirir.

Blocks alanı ayrılan blok sayısını verir ve Size ile orantılı olmak zorunda değildir: 139 baytlık bir dosya, blok boyutu nedeniyle diskte daha fazla yer kaplar.

stat POSIX’te tanımlı değildir ve çıktı biçimi araç ailesine göre değişir. Biçimlendirme seçeneği GNU araçlarında -c, BSD araçlarında -f’dir; taşınabilir olması gereken betiklerde stat yerine ls çıktısı veya find ölçütleri tercih edilir.

Özet

  • ls varsayılan olarak adları sıralar, gizli dosyaları atlar ve çıktısı terminale gidiyorsa sütunlara böler.
  • Uzun listeleme yedi alan verir: tür ve izinler, bağlantı sayısı, sahip, grup, boyut, değişiklik zamanı, ad.
  • Dizinlerde boyut sütunu dizin girdisi tablosunun büyüklüğüdür; içeriğin toplamı değildir.
  • -d dizinin kendi satırını, -i düğüm numarasını gösterir; düğüm numarası adın değil dosyanın kimliğidir.
  • -t değişiklik zamanına göre sıralar, -r ters çevirir; -ltr en yeniyi sona alır.
  • Üstveride üç zaman damgası vardır: erişim, içerik değişikliği ve üstveri değişikliği.

Sonraki Adım

Ağaç okunabiliyor ama hâlâ boş: ham dizininde tek bir ölçüm dosyası yok. Sonraki ders dosya oluşturma, kopyalama ve taşıma işlemlerini ele alır; bu üç işlemin dosya sistemi düzeyinde neden bambaşka maliyetlere sahip olduğunu ve hangi durumda sessizce veri kaybettirdiklerini gösterir.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat