İleri seviye Linux komutlarını öğrenmek ve bir “Linux Ninjası” olmak istiyorsanız, doğru yerdesiniz. Şimdi Kung Fu zamanı!

Bu yazıya başlamadan önce, eğer okumadıysanız Linux Komutlarına Giriş yazısını okumanızı tavsiye ederim. Bu sayede bilenler bilgilerini tazeleyebilir, bilmeyenler ise yeni bilgiler öğrenebilir. Bir “Linux Ninjası” olmak istiyorsanız, doğru yerdesiniz. Şimdi Kung Fu zamanı!

Bu yazıda anlatılacak olan komutların bazılarını Linux Komutlarına Giriş yazısında da görmüş olmalısınız. Bol bol tekrar yapmak iyidir çekirge…

Yine bir önceki yazıda olduğu gibi bu yazıya da Linux komut yapısı ile başlayacağım. O halde hazırsanız, başlayalım!

Kung Fu derslerine giriş

Bağlantıyı sağlam kurmak ve konuyu iyice pekiştirmek için bu başlık altında yine en temelden başlayacağım. 

Önceki yazıdan hatırlayacağınız üzere, Linux komutları genel olarak aşağıdaki dizimi kullanır. 

<komut> <-seçenek(ler)> <(varsa) parametre>

Seçenekler, genel olarak tek harf olarak tanımlanmıştır. Bunlar, seçeneklerin baş harfleridir. Bu seçeneklerin uzun halleri de bulunabilir. Hatta bazı komutlarda aynı işleve sahip olan seçenek hem kısa hem de uzun haliyle bulunabilir (-s / --size gibi). 

Linux komutlarında seçenek yazılırken - (tire) işareti kullanılır. Şayet uzun biçimde yazılacaksa -- (iki tire) kullanılır. 

Örneklerle devam edelim.

<komut> --help

Bir komut hakkında bilgi almak için --help seçeneği kullanılır. Biraz daha detaya inmek gerekirse: 

ls --help komutunu yazdığınızda, ekranda ls komutunun alabileceği parametreleri listeleyen ve onları kısaca açıklayan bir çıktı göreceksiniz. Burada ls komut, --help seçenektir.

cd / komutunu yazdığınızda ise çalışma dizini / (kök) dizini olacaktır. Burada cd komut, / parametredir. 

Bütün komutlarda aynı anda seçenek ve parametre kullanmak zorunda değilsiniz. Bazı komutlar seçenek ve parametre girmeden de çalışabilir.

Komut çıktılarının insanlar tarafından (yani bu siz oluyorsunuz) daha rahat okunabilir formatta yazdırılması için -h (--human-readable) seçeneği kullanılır. 

Birbiri ardına komutlar çalıştırmak istiyorsanız, bağlı komut (&&) kullanmalısınız. Komutlardan herhangi biri çalışmadığı takdirde komut dizisi duracak ve bir sonraki komut çalışmayacaktır. 

<komut> && <komut1> && <komut2>

Örneğin Debian tabanlı sisteminizi güncellemek için teker teker yazmak yerine sudo apt update && sudo apt upgrade -y bağlı komut dizisini kullanabilirsiniz.

<komut> | <komut1> | <komut2>

Bir komutun çıktısını diğer bir komutun girdisi olarak kullanmak istiyorsanız ardışık komutlar kullanmalısınız. Örneğin:

<komut> | grep arama

grep komutu, bir dosyada veya bir komut çıktısında arama yapmanızı sağlar. Daha detaylı bilgi için yazının devamında bulunan grep komutunun anlatımını okuyabilirsiniz.

<komut> | more

Komut sonucunu sayfa sayfa incelemek istiyorsanız bu komutu kullanabilirsiniz.

<komut> | less

Temel işlevi more komutu ile aynı olup, ek özellikler içerir. Daha detaylı bilgi için man less komutunu girebilir, komutun kullanımını ve tüm parametrelerini öğrenebilirsiniz.

<komut> > dosya.txt

Komut çıktısını bir dosyaya yazdırmak istiyorsanız bu komut kullanılır.

<komut> >> dosya.txt

Komut çıktısını var olan bir dosyanın üzerine eklemek için ise bu komut kullanılır.

İşin temelinden detaylıca bahsettiğimize göre artık komutlara geçebiliriz.

İleri seviye Linux komutları ile Kung Fu

grep

Dosya içinde ifade araması yapmaya yarayan bir komuttur. Çoğunlukla bir başka komutun çıktısı üzerinde arama yapmak için kullanılır. Tek başına da kullanılabilir.

grep <aranan_kelime> <dosya>

Aramanın büyük-küçük harf duyarsız olarak yapmak istiyorsanız -i parametresini kullanmalısınız.

grep -i <aranan_kelime> <dosya>

Aramayı, tek bir dosya özelinde olmadan dizin altındaki tüm dosya ve dizinlerde yapmak istiyorsanız -r parametresini kullanmalısınız.

grep -r <aranan_kelime> <dizin>

Başlangıç (^) ve bitiş ($) karakterlerini kullanarak arama yapabilirsiniz. Aşağıdaki örnekte dosya.txt içerisinde Merhaba ile başlayan yer aranmakta.

grep -ir '^Merhaba' dosya.txt

Başlangıçta da bahsettiğimiz gibi komut, çoğunlukla ardışık komutların çıktısında arama yapmak için kullanılır.

ls -lah | grep '^d' 

find

Adı üstünde, aradığınız şeyi bulmanıza yarayan komuttur. Hiyerarşik olarak dosya ve dizinleri tarayarak aradığınız dosya veya dizini bulmanıza yarar. Kullanımı aşağıdaki gibidir:

find <aranacak_yer> -name <aranan>

Aramayı büyük-küçük harf duyarsız olarak yapmak istiyorsanız -iname parametresini kullanmalısınız.

find <aranacak_yer> -iname <aranan>

Aranacak dosya veya dizinin tam adını bilmiyorsanız yıldız (*) karakterini kullanabilirsiniz. Yıldız (*) karakteri, tüm ifadeleri içine alan bir karakterdir. Basitleştirmek gerekirse, “farketmez” anlamına gelir.

find <aranacak_yer> -name <ara*>

Aynı şekilde belirli bir uzantıya sahip dosyaları bulmak istiyorsanız yıldız (*) karakterinin ardından istediğiniz uzantıyı girmelisiniz. Örneğin .txt uzantılı dosyaları bulmak için şöyle yazmalısınız:

find <aranacak_yer> -name <*.txt>

Aramada bulunan dosya veya dizinleri ayırarak listelemek için -type parametresi kullanılır.

Parametre olarak d yazarsanız yalnızca dizinleri, f yazarsanız yalnızca dosyaları listeler.

find -type d <aranan>

Arama yaparken boyut filtresi oluşturmak için -size parametresi kullanılır. Artı (+) ifadesi büyüktür, eksi (-) ifadesi küçüktür anlamına gelir. k ifadesi kilobayt, M ifadesi megabayt, G ifadesi gigabayt anlamında kullanılır. Aşağıdaki örnekte çıkan sonuçtan yalnızca 10 kilobayttan büyük dosyaları listele diyoruz.

find <aranacak_yer> -name <aranan> -size +10k

Boş dosya veya dizinleri bulmak için -empty parametresini kullanabilirsiniz.

find <aranacak_yer> -name <aranan> -empty

Belirli haklara sahip dosya veya dizinleri bulmak için -perm parametresini kullanabilirsiniz.

find <aranacak_yer> -name <aranan> -perm 777

Arama sonucunda bulunan dosya ve dizinleri değerlendirmek için bir komut çalıştırmak istiyorsanız -exec parametresini kullanmalısınız.

find <aranacak_yer> -name <aranan> -exec <komut>

Örneğin arama sonucunda bulduğunuz dosya ve/ya dizinleri silmek istiyorsanız aşağıdaki komutu kullanabilirsiniz.

find <aranacak_yer> -name <aranan> -exec rm -rf {} \;

Aranacak dizin derinliğini, yani ne kadar alt dizine girileceğini belirtmek için -maxdepth parametresi kullanılır.

find <aranacak_yer> -name <aranan> -maxdepth X

Örnek olarak, /etc dizininde aranan .conf uzantılı tüm dosyaların yalnızca belirttiğiniz dizinde aranması ve o dizinin alt dizinlerinde arama yapılmaması için aşağıdaki komutu kullanabilirsiniz.

find /etc *.conf -maxdepth 1

find komutunu ihtiyacınıza göre farklı parametreler ile birlikte kullanabilir, aramalarınızı kolaylaştırabilirsiniz. Daha detaylı bilgi için man find komutunu kullanabilirsiniz.

cat – concatenate files

Dosyanın içeriğini okumak için kullanılır. Kullanım:

cat <dosya>
cat -n <dosya>

-n seçeneği ile çıktıya satır numaraları ekleyebilirsiniz.

touch

Dosya oluşturmak için kullanılır. Komut parametresine var olan bir dosya verilirse dosyanın tarih-saat bilgisini sıfırlar, içeriğini aynen korur.

touch dosyaadi.uzanti

echo

Komut satırı arayüzüne değer ve/veya değişken yazdırmak için kullanılır.

echo “Pardus”

Ekrana Pardus yazdırır.

whoami

Mevcut kullanıcının bilgisini verir.

whoami

whatis

Komutlarla ilgili kısa bilgi almak için kullanılır. 

whatis <komut>

man

Komutlarla ilgili detaylı bilgi almak için kullanılır.

man <komut>