Linux shell ile dosya içeriği yönetimi

Linux dosya sisteminde gezinmeyi ve shell üzerinden dosya ve klasör yönetimi ile ilgili komutlar vermeyi bir önceki yazımızda anlatmıştık. Yeni dosya ve klasör oluşturma, kopyalama, yapıştırma, taşıma ve yeniden adlandırma işlemleri ile birlikte dosya ve klasörleri nasıl sileceğimizi de öğrendiğimize göre artık bir sonraki aşamaya geçebiliriz. Bu yazımızda dosyaların türünü ve içeriğini komut satırı kullanarak nasıl görebileceğimizi ve dosyalarda meydana gelecek değişimleri nasıl takip edebileceğimizi anlatacağız. Linux dosya görüntüleme komutları dosyalarla çalışmayı oldukça kolaylaştıracak.

Bir dosyanın içeriğine bakmak için grafik masaüstüne geçip bir metin editörü kullanmak zorunda değilsiniz. Bu işi yapmak için komut satırında kullanabileceğimiz birkaç komut var.

Dosya türünü görüntüleme

Dosya içeriğini görüntülemeye geçmeden önce dosyaların türlerini nasıl görüntüleyeceğimize bir bakalım. Peki neden böyle bir şeye ihtiyaç duyuyoruz?

Bir dosyayı görüntülemeye çabalamadan önce, dosyanın türünü anlamakta fayda var. İkili (binary) bir dosyayı ya da Microsoft Office’in XML tabanlı dosyalarını görüntülemeye çalışırsanız, monitörünüzde anlamsız yığınlar görebilir hatta terminal emülatörünüzü kilitleyebilirsiniz.

Aklınıza şu soru da gelebilir, dosya uzantısından bunu anlayamaz mıyız?

Hayır, anlayamayabilirsiniz.

Öncelikle şunu tekrarlayalım, Linux’ta dosyalara uzantı vermek zorunda değilsiniz. Uzantısı olmayan bir dosyanın türünü bir bakışta anlayamazsanız. Ayrıca uzantısı .txt olan bir dosyanın barındırdığı içerikten dolayı da türünü anlamak kolay olmaz. İçerisinde birkaç sayfalık log bilgileri de olabilir, Gigabaytlar büyüklüğünde veriler de.

Oldukça küçük ve kullanışlı bir araç olan“file” komutu bu iş için biçilmiş kaftandır. İki dosya için sorgu yapalım;

file komutu ile dosya türü sorgusu

dosyam” ve “sayilarim” adlı iki dosya türünü öğrenmek için sorgu yaptık. “dosyam” olan dosyanın UTF-8 kodlama ile metin içerdiğini, “sayilarim” adlı dosyanın ise ASCII kodlamalı metin içerdiğini anladık.

Farklı bir dosya deneyelim;

komut sonrası, dosyanın uzun satırlar içerdiği bilgisi ediniyoruz

hitabe” adlı dosya da UTF-8 kodlu bir metin dosyası, ama çok uzun satırları olduğuna dair bilgilendiriliyoruz. Uzun satırlar bizim için problem teşkil eden bir işlem yapacaksak sorun çıkarabilir, buna göre önlem alınması gerekebilir.

İlginç bir dosya deneyelim;

filo komutu, bir Word dosyasının tüm detaylarını veriyor

İlginç bir sonuç çıktı. “linux_nedir” adlı dosyanın uzantısı olmadığından Word dosyası olduğunu bir bakışta bilemezdik. Sorgudaki bilgiler dosya ile ilgili (yazarı, sayfa sayısı, kelime sayısı, hangi yazılımla oluşturulduğu, işletim sistemi, tarihler…) pek çok bilgi verdi. Bunun Word ile yazılmış bir .doc ya da .docx dosyası olması gerekir. “Composite Document File V2 Document” bilgisinden bunun .doc olduğunu anlayabiliyoruz, .docx olsaydı “Microsoft Word 2007+” bilgisi gelecekti (bunu nasıl anlayacağımız konumuz dışı).

Resim dosyalarının detaylarını da gösterir

Şimdi iki dosya daha deneyeceğiz. Birinin adı “logo_p” ve diğeri “logo_ps”;

file komutu resim dosyaları için de ayrıntılar veriyor

İki dosyayı tek satırda sorguladık. “logo_p”nin .png uzantılı, 2000×2000 çözünürlükte 8 bit bir resim dosyası olduğunu; “logo_ps”nin ise aynı çözünürlükteki bir Photoshop dosyası olduğunu öğrendik.

Bir script dosyası için sonuçlara bakalım.

file komutu ile script dosyasının yazıldığı dili ve durumunu öğrenebiliriz

script_a.sh” dosyasının bir bash kabuğu kodlama dosyası olduğunu ve bunun “executable” yani çalıştırılabilir olduğunu anlıyoruz. Hangi dilde yazıldığını ve durumunu bilmek işimizi kolaylaştırabilir.

Son olarak bir klasörü sorgulayalım;

Beklendiği gibi bunun bir klasör olduğu bilgisi geldi.

Bir dosyayı açmadan ya da çalıştırmadan, dosya hakkında bilgi edinmek faydalı olabilir. Şimdi Linux dosya görüntüleme komutlarına içerikle devam edelim.

Tüm dosya içeriğini görüntüleme

Metin içeren bir dosyanın içeriğini görmek için Linux komut satırında kullanabileceğimiz birkaç komut var. Dosya metin içermiyorsa zaten metin tabanlı çalışan konsol ekranında bunu göremezsiniz. Karmakarışık karakterlerden oluşan bir yapı görürsünüz ki dosya türünü öncelikle görüntülemeyi bu yüzden anlattık.

Gelelim komutlarımıza ve nasıl kullanılacağına.

cat komutunu kullanma

cat” komutu bir metin dosyasının tüm içeriğini göstermek için oldukça kullanışlıdır. Yukarıdaki örneklerde türünü görmek için uğraştığımız dosyaların içeriğini de görüntüleyelim.

cat komutuyla metin dosyalarının içeriğini görüntüleyebiliriz

dosyam” ve “sayilar” adlı dosyaların metin dosyası olduğunu biliyorduk, içerikleri de ekranda görüldüğü şekilde.

Yine yukarıda deneyip, çok uzun satırlar içerdiği bilgisini aldığımız metin dosyasına bakalım;

hitabe” adlı dosyamızın içeriğinde “Gençliğe Hitabe” var. Her bir paragraf bir satıra sığdırılmış, ama bizim terminal öykünücümüz (gnome-teminal) bunları kaydırarak gösterme kabiliyetinde olduğundan görüntülemede problem yaşamadık.

Bir de Word dosyası olduğunu öğrendiğimiz “linux_nedir” dosyasını görüntülemeye çalışalım;

cat komutuyla Mİcrosoft Office dosyalarını görüntülerken karmaşa yaşanabilir

Ortalık biraz karıştı. Word’un kullandığı kodlama türü nedeniyle, bazı biçimlendirme ayarlarını temsil eden kodlar terminal ekranında karışık kodlar şeklinde göründü. Zaten dosya türünü sorguladığımızda bize bunun bir metin (text) dosyası olduğu söylenmemişti. Word ya da gelişmiş editörlerle yazılan dosyaları yine bu özel editörlerle görüntülemek gerekiyor.

Bir resim dosyasını cat komutu ile görüntülemeye çalışmıyoruz bile, sonuç yukarıdaki ekrandan daha karışık olacaktır.

Eğer metin dosyasında satır numaralarını da görmek istiyorsak cat komutuna “-n” parametresi ekliyoruz.

-n parametresi ile satır numaralarını görebiliriz

hitabe” dosyasındaki  her bir paragrafın bir satır olduğunu söylemiştik. Şimdi daha iyi anlaşılmıştır herhalde. Bir de İstiklal Marşının olduğu bir dosyayı numaralandıralım;

Her bir satırı numarasıyla görüntülemiş olduk.

Soru: Her bir satırı numaralandırmak ne işimize yarayacak?

Cevap: İlerleyen yazılarımızda metin içinde kelime arayacağız, çıkan sonucun hangi satırda olduğunu bilmek çok faydalı olabilir, özellikle çok uzun metin dosyalarında. Bunun dışında shell scripting (kodlama, programlama) işlemlerinde satır numarasını bilmek kullanışlı olacaktır.

Çok uzun metin dosyalarında cat komutunu kullanmak can sıkıcı olabilir. Sonu gelmeyen metin yığınını aşağı kaydırmaya çalışmak bazen işkence halini alabilir. Neyse ki böyle durumlar için bir başka komut imdadımıza yetişiyor.“more”:

more komutunu kullanma

cat komutuyla başlattığımız görüntüleme işlemi uzun dosyalar için kontrol altına alınamaz bir hale gelebilir.

more” komutu bir metin dosyasının tüm sayfalarını görüntüledikten sonra durur.

Şöyle bir örnek yapalım, /etc/manpath.config dosyasını cat ve more komutlarıyla ayrı ayrı görüntüleyelim:

cat komutu uzun metinler görüntülerken metnin en sonuna gider ve program sonlanır

cat komutuyla sorgu yaptığımızda ekran, sayfalar dolusu metnin son kısmına gitti. Baş tarafları görmek için yukarı kaydırmamız lazım. Bir de more komutunu deneyelim.

more komutu uzun metinleri görüntülerken en baştan itibaren sayfa sayfa gösterir

more komutu ise sayfanın en başından itibaren konsol penceresine sığan ilk sayfayı gösterdi. Sol alt tarafta yüzde kaçını gördüğümüzü bildiriyor.

Space tuşuna basarak her bir sayfayı, Enter tuşuna basarak her bir satırı göstererek ilerleyebilirsiniz. Çıkmak için “q” tuşuna basabilirsiniz. Görüntüleme bitince komut satırına geri dönecek. cat komutuna göre oldukça kullanışlı.

less komutunu kullanma

more komutu ile metin görüntülediğimiz araçtan daha gelişmiş bir komut daha var: “less” komutu. Adına göre aslında more komutundan daha fazla özellik barındırması güzel bir kelime oyunu (less is more).

more komutuyla sayfa sayfa ya da satır satır aşağıya inebilirken, yukarı doğru çıkamıyoruz. less komutu ile görüntülemede ise, sayfa sayfa ve satır satır aşağı ve yukarı çıkabiliriz. PageDown ve PageUp tuşları ile Aşağı Ok ve Yukarı Ok tuşları da işlevseldir.

Ayrıca metin sonuna gelince programdan çıkmaz (tekrar yukarı çıkmak isterseniz diye). Çıkmak için “q”ya basmak gerekir.

Dosya içeriğinin bir bölümünü görüntülemek

Görüntülemek istediğimiz veriler metin dosyasının üst, alt ya da herhangi bir alanında olabilir. Hele ki metin dosyası çok uzunsa, sadece istediğimiz yere bakmak için tüm metni görüntülemek işimizi zorlaştırabilir. Özellikle istediğimiz bilgi log dosyalarında olduğu gibi en altta ise.

Linux dosya görüntüleme konusunda gayet etkili çözümler sunuyor, bu sorunları da çözmek için özel komutlar içeriyor.

tail komutunu kullanma

tail” komutu kelime anlamı olan “kuyruk” kelimesinden geliyor. Varsayılan olarak dosyanın sonundaki 10 satırı gösterir (dosyanın kuyruğu).

Örneğimizde, bir internet sitesine saatlik giriş sayısının log kaydını tutan bir dosya var. cat ile görüntüleyelim;

cat komutuyla bir log dosyasını görüntülemek

Dosya çok uzun olmasa da bu log kaydının bir ay için alındığını düşünürseniz sayfalar dolusu bilgi içerecektir. Genelde bu tür log dosyalarında ihtiyaç son satırlardır. tail komutuyla inceleyelim;

tail komutu bir dosyanın son 10 satırını gösterir

tail komutu son 10 satırı gösterdi.

tail komutu istersek “-n” parametresi ile bize istediğimiz kadar satır da gösterebilir. Son 3 satırı gösterelim;

-n parametresi ile dilediğimiz satırları gösterebiliriz
tail komutu ile dosyada değişiklik takip etme

tail komutunun en güzel özelliği ise, değişken bir dosyanın sonunda meydana gelecek değişimi ekrana yazması (tabi bash ile program geliştiren biri bunu çok fazla amaç için kullanabilir).

Bunu gerçekleştirmek için şunu yapalım; saatlik log kaydımız için tail ile “-f” parametreli bir komut yazacağız. Komut sonrası komut satırı işlemi sonlandırmayacak ve değişimleri anlık olarak ekrana getirecek şekilde bekleyecek. Şöyle ki;

tail komutu -f parametresi ile çalışırken dosyadaki değişiklikleri bildirmek üzere bekler

İlk durumda “-f” parametresi nedeniyle son 10 kayıt yazdırıldıktan sonra terminal ekranı beklemeye başladı.

son satıra ekleme olduğunda komut penceresi yenilendi

Log kaydına 18.00’daki bilgi girildiği anda ekrana güncel bilgiler getirildi.

head komutunu kullanma

head komutu adından bekleneni veriyor. Ekranda ilk 10 satırı görüntülüyor. tail komutunda olduğu gibi burada da istediğimiz kadar satırı “-n” parametresiyle görüntüleyebiliriz.

head komutu dosyadaki ilk 10 satırı görüntüler

head komutu her ne kadar tail kadar kullanışlı olmasa da dosyanın ilk bölümlerini görüntülemek için kullanışlı.

Bu ve önceki yazılarımızla (yazıların bağlantılarını aşağıda vereceğiz) bash kabuğu ile Linux dosya sistemi üzerinde çalışmanın temellerini anlatmış olduk. Komut satırı kullanarak Linux dosya sistemini gezebiliyor, dosyalar ve klasörler üzerinde temel işlemleri yapabiliyor ve dosya içeriklerine bakabiliyoruz. Linux dosya görüntüleme komutları ile önceki konuları bütünleştirmiş olduk.

Gelecek yazılarımızda, şu ana kadar öğrendiğimiz kabuk komutlarının devamını işleyeceğiz (öğrendiğimiz komutlar her ne kadar Linux komutları olarak bilinse de aslında hepsi kabuk komutları). İşleyeceğimiz komutlar bir Linux sistemini verimli bir şekilde kullanmanızı sağlayacak ve adım adım shell skripting konusuna geçeceğiz.

Linux Nedir? Kernel, GNU ve Masaüstü Ortamları Ne İşe Yarar?

En İyi Linux Dağıtımları

Linux Shell Nedir? Linux Komut Satırı Nasıl Kullanılır?

Linux Dosya Sistemi Yapısı

Temel Linux Dosya ve Klasör Komutları

BİR CEVAP BIRAK