14
Konuya ait anahtar kelimeler : alias, grep, pipeline alias : Güzel isim, takma ad anlamına gelmektedir. Kelimeleri yada komutları başka bir isimle çağırma işlemini gerçekleştirir. Kullanımı : alias yeni_isim='eski_isim&komut' şeklinde olmaktadır. Bu tür kullanımları Shell, "~/.bashrc" adlı ayar dosyasından okumaktadır. Her Shell için bu dosya farklı yerde ve isimde olabilir. Mesela "tcsh" Shell'i için bu dosya "~/.tcshrc" dosyası, "csh" için "~/.cshrc" dosyası şeklinde olmaktadır. Alias vb. birçok komut ve özellikler Terminal için bu dosyada saklı tutulmaktadır.
[alax@alax ~]$ cd ~/tux/script [alax@alax script]$
Yukarıdaki örneğimizde, "cd ~/tux/script" yazarak home dizini içerisinde tux klasörü içerisinde, script klasörüne girdik. Şimdi bu komutu kısaltalım. Önce home klasörüne geçelim ardından yeni alias ile takma ad belirleyerek bu klasöre tekrar girelim.
[alax@alax script]$ cd [alax@alax ~]$ pwd /home/alax [alax@alax ~]$ alias cdd='cd ~/tux/script/' [alax@alax ~]$ cdd [alax@alax script]$ pwd /home/alax/tux/script [alax@alax script]$
Gördüğünüz gibi yeni ismimiz belirlendi. Artık sadece "cdd" yazarak, "/home/alax/tux/script" klasörüne girebiliriz. İstediğiniz komut kısaltmalarını bu şekilde yapabilirsiniz. Not : Bu işlemlerin kalıcı olması için alias tanımlamasını ~/.bashrc dosyası içerisine eklememiz gerekmektedir. Şimdi kalıcı olarak bir alias tanımlaması yapalım.
[alax@alax script]$ nano ~/.bashrc # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return alias ls='ls --color=auto' PS1='[\u@\h \W]\$ »» ' alias cdd='cd ~/tux/script' alias tux='echo Penguen ' [alax@alax script]$
Dosya içerisine en alta iki adet alias tanımlamamızı ekledikten sonra dosyayı kaydedip çıkıyoruz. Şimdi bütün Shell(Terminal, uç birim vb..) leri kapatıp yeni bir tane Shell açınız ve komutlarımızı test edelim.
[alax@alax ~]$ cdd # script klasörüne giriyoruz. [alax@alax script]$ tux # "echo Penguen" komutunu çalıştırıyoruz. Penguen [alax@alax script]$
İstediğiniz şekilde, hayal gücünüze bağlı olarak Alias'lar tanımlayabilirsiniz. grep : Kesinlikle öğrenmeniz gereken komutlardan bir tanesi. Girdi olarak verilen dosyalar yada kelimeler içerisinde belirlenen kelimeleri satır satır arama işlemi yapar. Birçok parametre alabilir. Kullanım : grep aranacak_kelime dosya/kelime Şimdi Terminal ile "tux" klasörüne girelim ve bir adet "boru.txt" adında dosya oluşturalım, ve içerisine aşağıdaki verileri ekleyip kaydedelim.
[alax@alax ~]$ cd ~/tux [alax@alax tux]$ nano boru.txt Burası birinci satır. Burası ikinci satır. burası üçüncü satır. burası dördüncü satır ve son satır. [alax@alax tux]$
Evet dosyamıza yukarıdaki dört satırı ekledik. Şimdi bu dosya içesindeki satırlardan belirlediğimiz kelimeyi içeren satırları gösterelim.
[alax@alax tux]$ grep "satır" boru.txt Burası birinci satır. Burası ikinci satır. burası üçüncü satır. burası dördüncü satır ve son satır. [alax@alax tux]$ grep "Burası" boru.txt Burası birinci satır. Burası ikinci satır. [alax@alax tux]$ grep "burası" boru.txt burası üçüncü satır. burası dördüncü satır ve son satır. [alax@alax tux]$
Gördüğünüz gibi kullanımı çok kolay. Şimdi girdi olarak verilen dosya içerisinden, içerisinde "dördüncü" olan satırı yazdıralım.
[alax@alax tux]$ grep "dör*" boru.txt burası dördüncü satır ve son satır. [alax@alax tux]$
-nBulunan satırları satır numarası ile yazdırma.
-vAranan kelimenin olmadığı satırları yazdırma.
-cSatır sayısı, kaç satır?.
-iBüyük küçük harf duyarlılığı olmadan.
Şimdi bu parametreleri kullanarak örnekler yazalım.
[alax@alax tux]$ grep -n "satır" boru.txt 1:Burası birinci satır. 3:Burası ikinci satır. 5:burası üçüncü satır. 7:burası dördüncü satır ve son satır. [alax@alax tux]$
Her satırdan sonra bir boş satır ekleyerek verilerimizi yazdığımızı unutmayalım. Şimdi "son" kelimesi olmayan satırları listeleyelim.
[alax@alax tux]$ grep -v "son" boru.txt Burası birinci satır. Burası ikinci satır. burası üçüncü satır. [alax@alax tux]$
Not : Kriter olan kelime herhangi bir kelime içerisinde de olabilir. Mesela "az" kelimesini kriter olarak belirlersek, "beyaz", "ayaz" kelimellerinin içerisinde "az" söz öbeği olduğu için bu kelimelerin olduğu satırlar da işleme tabii tutulur. Grep komutunun çalışma prensibi, kriter olan kelimenin satırların herhangi biryerinde herhangi bir şekilde geçmiş olmasıdır.
[alax@alax tux]$ grep -c "atır" boru.txt 4 [alax@alax tux]$
Yukarıdaki örneğimizde "atır" kelimesinin boru.txt içerisinde dört satırda olduğunu gördük.
[alax@alax tux]$ grep -i "bUrASı" boru.txt Burası birinci satır. Burası ikinci satır. burası üçüncü satır. burası dördüncü satır ve son satır. [alax@alax tux]$
^ : Üzeri işareti. Bu işaret "ile başlayan" anlamına gelmektedir. Diğer bir ifadeyle satırbaşı anlamına gelmektedir. Dikkat edilmesi gereken nokta, bu işaret içerisinde geçen kelime anlamında değil, ile başlayan kelime anlamında kullanılır. Şimdi kullanıcı ve grup bilgilerinin olduğu "/etc/passwd" dosyası üzerinde bir kaç örnek yapalım. Mesela "root" ile başlayan satırları yazdıralım.
[alax@alax tux]$ grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash [alax@alax tux]$
Şimdi de kendi kullanıcı adımız ile başlayan satırı yazdıralım.
[alax@alax tux]$ grep ^$USER /etc/passwd alax:x:1000:1000::/home/alax:/bin/bash [alax@alax tux]$
$ : Dolar işareti, grep içerisinde kullanıldığı zaman, satır sonu anlamına gelmektedir. Mesela "bash$" kelimesinin anlamı satırın en sonu "bash" ile bitiyor, bu kelimeden sonra herhangi bir kelime yada harf yoktur. Şimdi sonu "bash" ile biten satırları listeleyelim.
[alax@alax tux]$ grep bash$ /etc/passwd root:x:0:0:root:/root:/bin/bash alax:x:1000:1000::/home/alax:/bin/bash [alax@alax tux]$
Yukarıdaki " ^ " satırbaşı yerine "\<", ve " $ " satır sonu yerine ise "\>" karakterlerini kullanılabiliriz.Seçim size kalmış. Pipeline : Unix/Linux sistemlerin ana mekanizmalarından bir tanesidir. Temel yapı taşlarından birisidir. Türkçe olarak "boru" yada "boru yolu ile" anlamlarına gelebilir. | : İşareti ile gösterilir. Klavyede "AltGr" ve "<> küçük-büyük" işareti tuşlarına birlikte basılarak yazılır. Borunun mantığını kısaca şu şekilde yorumlayabiliriz: Bir komut sonucunda elde edilen çıktı(değer,kelime,işaret vb.. olabilir) diğer bir işlem için girdi olacaktır. A işleminin sonucunda elimize bir kelime geçiyor olsun. Bu çıkan sonuç kelimesini, B işlemi içerisinde kullanabiliriz. Bir işlemin çıktısı diğer işlemin girdisine eşit oluyor. Boru işaretinin solundaki işlemlerin çıktısı, sağındaki işlemler için girdi olarak belirlenir ve işleme alınır. Şimdi tekrar "/etc/passwd" dosyasında sonu "bash" ile biten satırları yazdıralım.
[alax@alax tux]$ grep bash$ /etc/passwd root:x:0:0:root:/root:/bin/bash alax:x:1000:1000::/home/alax:/bin/bash [alax@alax tux]$
Şimdi bu komut ile elimize geçen veri içerisinde yine grep komutu ile root ile başlayan satırı yazdıralım.
[alax@alax tux]$ grep bash$ /etc/passwd | grep ^root root:x:0:0:root:/root:/bin/bash [alax@alax tux]$
İlk komut(borunun sol kısmı) ile elimize iki adet satır geçti, daha sonra ikinci komut(borunun sağ kısmı) ile bu iki satır içerisinde "root" ile başlayan satır seçme işlemi yapılmış oldu. Şimdi boru.txt dosyası içerisinde; - İlk önce "burası" kelimesi ile başlayan satırları. - Sonra bu satırlar arasında "inci" kelimesi olmayan satırları. - Son olarak, içerisinde "üç" olan satırları yazdıralım.
[alax@alax tux]$ grep "^burası" boru.txt | grep -v "inci" | grep "üç" burası üçüncü satır. [alax@alax tux]$
Gördüğünüz gibi istediğimiz sonucu elde ettik. Son olarak "/usr/bin" klasörü içerisinde sonu "sh" ile biten dosyaları listeleyelim.
[alax@alax tux]$ ls /usr/bin/ | grep "sh$" alsa-info.sh amuFormat.sh avahi-publish bash bssh capsh chsh c_rehash findssl.sh gettext.sh gpgkey2ssh gvfs-trash jemalloc.sh ldns-nsec3-hash lprsetup.sh nettle-hash rsh ssh unix-lpr.sh xrefresh [alax@alax tux]$
Gördüğünüz gibi boru kullanımı işlerimizi çok kolaylaştırıyor. İleriki derslerimizde boru kullanımını daha derinlemesine kullanacağız.