Linux komut satırında hayatta kalma ipuçları — 3

Bu flood’da Linux’u komut satırından çıkmadan etkin olarak kullanabilmek için gerekli araç ve konseptleri tanıtmaya devam edeceğim.

Önceki flood’larda Linux’ta her şeyin birer dosya (veya daha doğru bir tabirle stream) olduğunu anlatmış ve yönlendirme (redirection) >, <, >> operatörlerinden bahsetmiştik. pipe (|) operatörü ise bir komutun çıktısını bir başka komuta girdi olarak vermeye yarar. pipe operatörü, her biri sadece bir iş yapan komutları farklı kombinasyonlarda bir araya getirerek istenen sonuçların elde edilmesini ve komutların tekrar tekrar kullanılabilmesini sağlar. Aşağıda cat, sort, head ve tail komutları ile farklı işlemler yapılmıştır.

Yukarıdaki örneklere benzer şekilde pipe kullanarak, verilen bir CSV dosyasındaki başlık kısmından sonraki ilk satırı ekrana bastırmak istediğimizi varsayalım. Komutların aşağıdaki şekilde kullanılması ile bu amaca kolayca erişilebilir.

Pipe ile farklı komutlara aktarılan akışlar (stream), yönlendirme operatörleri ile dosya sistemindeki bir dosyaya ya da bir aygıta aktarılabilir. Aşağıda bir önceki örnekte verilen CSV dosyasının SHA-1 hash'i hesaplanarak farklı bir dosyaya aktarılmıştır.

Şimdi pipe operatörü ile birlikte kullanılabilecek bazı faydalı komutları incelemeye başlayalım. wc - word count komutu bir metin dosyası içindeki kelime, satır, bayt ve en uzun satırdaki kolon sayısını göstermeye yarar. Aşağıda bu komut örneklenmiştir.

Bir komutun çıktısını hem başka bir komuta vermek hem de ekrana yazdırmak istediğimizde tee komutunu kullanabiliriz. Örneğin, birkaç pipe yardımıyla işlenen bir akışı hem bir dosyaya yazarak saklamak hem de sonucu doğrulamak üzere ekranda göstermek için tee kullanılabilir.

tr - translate komutu metin akışları içinde karakter değiştirme ve silme işlemleri için kullanılır. tr, akışları stdin yani standart girdiden okuyarak stdout'a yani standart çıktıya yazar. Aşağıda tr'nin değişik kullanım alanları örneklenmiştir.

more terminal ekranına sığmayacak büyüklükteki text dosyalarını sayfa sayfa göstermeye yarar. less, more ile aynı amaç için kullanılır ancak more'un aksine kullanıcının bir önceki sayfaya dönmesi ve birçok başka özelliğe imkan tanır. Aşağıda more komutu örneklenmiştir.

İlk örneklerden görüldüğü üzere sort komutu bir metin dosyasındaki girdilerin sıralanmasını sağlar. uniq komutu ise bir akışta üst üste tekrarlayan satırları tek bir satıra indirerek gösterir. Aşağıda sort ve uniq komutları örneklenmiştir.

grep komutu bir akış içerisinde kalıp ya da kalıpları (pattern) aramaya yarar. /etc/passwd dosyası içerisinde root geçen satırları ekrana bastırmak için grep root /etc/passwd, içinde root geçmeyen satırları ekrana bastırmak içinse grep -v /etc/passwd kullanılır.

grep komutu kullanılarak bir dizin ve altındaki bütün dizinlerde bulunan metin dosyalarında bir kalıp aranabilir. Bunun için grep -r <text_pattern> <folder> komutu verilebilir. Aşağıdaki ekran çıktısında /home/vagrant klasörü altında lorem metni aranmıştır.

grep'i daha güçlü kılan özelliği, metin dosyaları içinde kelime veya kelime gruplarını aramasının yanında düzenli ifadeler (regex) kullanılarak da arama yapılmasına izin vermesidir. regex'i ilerleyen flood'larda grep'teki kullanımı ile birlikte inceleyeceğiz.

find komutu kullanılarak bir dizin altındaki bütün klasörlerde bir dosya veya dizin aranabilir. Aşağıda find komutunun değişik kullanım alanları (bir dizindeki bütün dosyaları ve dizinleri arama, dosyaları isimle arama, vb) örneklenmiştir.

Anlık olarak işletim sistemi kaynaklarının hangi prosesin ne kadar kullandığını görmek için top komutu kullanılabilir.

Son olarak belirli aralıklarla bir komutu koşturarak sonucunun ekranda gösterilmesi gereken durumlarda watch komutu kullanılır. watch komutuna -d parametresi geçilerek bir önceki çıktı ile son çıktı arasındaki farklılıkları işaretlemesi sağlanabilir.