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 -lbu 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
lsvarsayı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.
-ddizinin kendi satırını,-idüğüm numarasını gösterir; düğüm numarası adın değil dosyanın kimliğidir.-tdeğişiklik zamanına göre sıralar,-rters çevirir;-ltren 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.