Here documents
Here document, interaktif bir programa veya komuta girdi(input) olarak yönlendirilen text veya kod bloklarıdır. Ayrıca heredoc, hereis, here-string, here-script olarak da anılır.
Genel kullanımı:
KOMUT << [-]AYIRICI komutun kullanacagi metin komuta yönlendirilecek baska bir metin daha AYIRICI |
Not: Ayırıcı önünde – kullanılırsa, input bloğundaki satır başında yer alan tab karakterleri dikkate alınmaz, ama boşluk karakteri etkilenmez. Başka bir deyişle daha okunabilir scriptlerin yazılması için kullanılır.
Örnek:
kucuk-büyük harf dönüşümü yapmak istediğimiz metni tr komutuna şu şekilde yönlendirebiliriz.
tr a-z A-Z <<END_TEXT mazhar fuat ozkan metin ali feyyaz END_TEXT MAZHAR FUAT OZKAN METIN ALI FEYYAZ |
Yukardaki kullanim, aşağıdaki olduğu gibi bir dosyayı input olarak bir komuta yönlendirmeye denktir.
komut < dosya.txt
tr a-z A-Z < kelimeler.txt |
Ayırıcı olarak istenilen bir sözcük kullanılabilir. Ayırıcı çift tırnak içerisinde değilse, blokta kullanılan parametrenin içeriği kullanılır. Aksi taktirde parametrenin ismi kalır.
Aşağıdaki heredoc1.sh ve heredoc2.sh isimli betikleri incelerseniz daha anlaşılır olacaktır.
cat heredoc1.sh #!/bin/bash TARIH=`date "+%Y-%d-%m"` cat<<EOF Merhaba Dunya Bugun $TARIH EOF exit |
cat heredoc2.sh #!/bin/bash TARIH=`date "+%Y-%d-%m"` cat<<"EOF" Merhaba Dunya Bugun $TARIH EOF exit |
Yukardaki iki betik arasındaki tek fark EOF isimli ayırıcının tırnak içerisinde kullanılması. Bunları çalıştırınca çıktılardan ayırıcının tırnak içinde kullanmasının etkisi görülebilir.
./heredoc1.sh Merhaba Dunya Bugun 2012-12-07 |
./heredoc2.sh Merhaba Dunya Bugun $TARIH |
Ek olarak ayırıcı önünde – (tire) kullanılsaydı baştaki tab karakteri yoksayılacaktı. EOF önünde – koyup scripti yeniden çalıştıralım.
cat heredoc2.sh #!/bin/bash TARIH=`date "+%Y-%d-%m"` cat<<-EOF Merhaba Dunya Bugun $TARIH EOF exit |
./heredoc3.sh Merhaba Dunya Bugun 2012-12-07 |
Görüldüğü gibi çıktıda, satır başındaki tab karakteri yok sayıldı.
cpu kullanımı kısıtlamak | cpulimit linux – Toplu kullanıcı oluşturma
ibretlik paylaşım, çok güzel özet geçilmiş.
o zaman daha iyisi senin olsun.