Menü Kapat

LS komutu bilenler için linux 101-2

ls komutundan kaldıgımız yerden devam edelim bir  önceki yazımızı okumadı iseniz Bir önceki yazı

Uzun dizin listeleri

ls komut satırında bir ya da birden fazla dosya ya da dizin belirtebilirsiniz. Eğer bir dosya belirtirseniz, ls
sadece o dosyayı gösterecektir. Eğer bir dizin belirtirseniz, ls bu dizinin içeriğini gösterecektir. -l seçeneği,
dosya haklarını, sahibi olan kişi ve grupları, değişikliğe uğradığı zamanı ve boyut bilgilerini görmek
istediğinizde işinize yarayacaktır.

Aşağıdaki örnekte -l seçeneğini /usr dizininin tam bir listesini almak için kullanıyoruz.

İlk sütun listedeki her eleman için izinleri gösterir. Bu bilgiyi nasıl yorumlamanız gerektiğini birazdan
açıklayacağız. Bir sonraki kolon ise her bir dosya sistemi nesnesinin sahip olduğu linkleri gösterir, daha
sonra değinmek üzere bu özelliği şimdilik geçeceğiz. Üçüncü ve dördüncü sütunlar ise sırasıyla dosyanın
sahibini ve ait olduğu grubu belirtir. Beşinci sütun ise dosya büyüklüğüdür. Altıncı sütun ”son müdahale
edilen tarih” veya ”mtime”’dır. Son sütunda ise nesnenin ismi vardır. Eğer nesne bir sembolik link ise,
− > işareti ve devamında sembolik linkin işaret ettiği adresi görürsünüz.

Dizinlere bakmak

Bazen bir dizinin içine değil de kendisine bakmak istersiniz. Bu gibi durumlar için -d seçeneğini kullana-
bilirsiniz, bu sayede ls dizinlerin içine değil kendilerine bakar.

Özyineli listeler ve inode listeleri

Bir dizinin kendisine bakmak için -d kullanabileceğinizi gördünüz ancak -R ile tam tersini de yapabilirsiniz
yani sadece bir dizinin içinde değil zincirleme olarak o dizinin içinde bulunan tüm dizinlerin ve onların
da içinde bulunan ve… Bu şekilde mevcut tüm dizinlerin içine bakabilirsiniz! Bunun çıktısını buradagöstermiyoruz çünkü böyle bir komutun çıktısı ep e y uzun olur ancak siz kendi sisteminizde hemen ls -Rve ls -Rl komutlarının deneyip sonucu görebilirsiniz.
Son olarak, -i seçeneği dosya sistemindeki nesnelerin inode numaralarını göstermek için kullanılabilir:

İnode’ları anlamak

Bir dosya sistemindeki her nesneye özgün bir indeks numarası verilir, bu indeks’e de inode denir. Bu
biraz önemsiz, ya da gereksiz detay gibi görünebilir ama bir çok dosya sistemi işlemini anlamanın temeliinode mantığını anlamayı gerektirir. Örnek olarak, her dizinde gördüğünüz . .. bağlantılarını düşünelim. Gerçekte .. dizininin ne olduğunu tam olarak anlayabilmek için /usr/local’ın inode numarasına bir
bakalım:

/usr/local dizininin inode numarası 6603888 imiş, şimdi de, /usr/local/bin/.. ’in inode numarasına
bakalım:

inode’ları anlamak, bölüm 2

Gördüğünüz gibi, /usr/local/bin/.. ile /usr/local’ın inode numaraları aynı! Açığa çıkan bu bilgiden va-
rabileceğimiz nokta şu: Eskiden, /usr/local’ı dizinin kendisi olarak düşünürdük. Ama şimdi, keşfettik ki
aslında 6603888 inode’u dizinin kendisi, ayrıca da bu inode’a işaret eden iki tane de dizin tanımı (link’i)
var. Hem /usr/local, hem /usr/local/bin/.. de 6603888 inode’una işaret ediyor.

inode’ları anlamak, bölüm 3

Aslında ls -dl komutu ile 6603888 numaralı inode’a kaç kere bağlantı yapıldığını, başka bir deyişle aynı
yeri gösteren kaç farklı ismin dosya sisteminde mevcut olduğunu görebiliriz:

Soldan ikinci sütuna bakacak olursak görürüz ki /usr/local (inode 6603888) dizinine 9 bağlantı (link)
vardır. Benim dizinimde bu inode’a bağlı olan birkaç yolu göstermem gerekirse:

evet ls yeter bence

mkdir

Yeni dizinler yaratmak için kullanılan mkdir komutuna hızlı bir göz atalım. Aşağıdaki örnek /tmp altında
3 yeni dizin yaratır, tic, tac ve toe.

Varsayılan olarak, mkdir komutu üst dizinleri sizin için yaratmaz; yaratılması istenilen dizinin tüm yolunda sondan bir önceki dizin’e kadar bütün dizinlerin var olması gerekli dir. Bunun anlamı /de/ne/medizinlerini yaratmak istiyorsanız, üç ayrı mkdir komutu çalıştırmalısınız:

mkdir -p

Ancak, mkdir’in faydalı opsiyonu -p ile mkdir’i dizin yolunda var olmayan ust dizinleri yaratmasınısağlayabilirsiniz, aşağıda görüldiği gibi:

mkdir komutu hakkında daha detaylı bilgi almak için man mkdir yazarak mkdir’in yardım sayfasına başvurabilirsiniz. Bu yöntem burada bahsedilen hemen hemen her komut için geçerli olacaktır, (örnekolarak man ls), sadece cd komutu bash kabuğunun içinde geldiği için bunun dışında kalır.

touch

Şimdi kopyalama, yeniden adlandırma, dosya ve dizin taşımak için kullanılan cp ve mv komutlarına gözatacağız. Buna başlamadan önce /tmp de bir dosya oluşturmak için touch komutunu kullanacağız:

touch komutu varolan bir dosyanın ”mtime” değerini günceller (ls -l çıktısındaki 6. sütunu hatırlayın).
touch komutuna parametre olarak verilen dosya mevcut değilse boş bir yeni dosya yaratılacaktır. Yukarıdaki komutun sonucunda sıfır boyutlu bir /tmp/benikopyala oluşturmuş oluyorsunuz.

echo ve yönlendirme

Şimdi artık dosya varolduğuna göre bu dosyaya biraz veri ekleyelim. Bunu echo komutu ile yapabiliriz, bu
komut kendisine geçilen argümanları alıp bunu standart çıktıya basar. Önce echo komutunun kendisine bir göz atalım:

Ve şimdi aynı echo komutunu bu sefer çıktı yönlendirme tekniği ile kullanalım:

Yukarıda gördüğünüz büyüktür işareti kabuğa echo’nun çıktısını benikopyala isimli bir dosyaya yönlendirmesini söyler. Bu dosya eğer mevcut değilse yaratılır, yok eğer mevcut ise üzerine yazılır. ls -l komut ilebeni kopyala dosyasının 9 byte büyüklüğünde olduğunu görebiliriz çünkü ”ilkdosya” sözcüklerini, boşluk karakterini ve yenisatır karakterini barındırır:

Bu yazımızda şimdilik bukadar yazı serimize cat ,cp ve diğer bir çok konu ile devam edicez.