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>