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.