Efendim, malum, çoğu zaman konsolda çalışmak gerekebiliyor ve akabinde uzun komutlarla (gerçi göreceli bir kavram) uğraşmak can sıkabiliyor. Böyle durumlarda ufak tefek fonksiyonlarla kendinizi tembelleştirebilirsiniz.
Mesela, şahsen .tar.bz2 arşiv dosyalarına -j parametresini vermeyi unuturum, unuttuğum gibi, bazen öyle durumlarda oluyor ki, tar –help kullanır hale bile gelebiliyorum. Neyse, Linux altında hangi dosyayı nasıl açarız tarzı tek tek açıklamak yerine, bu işlemi oluşturduğumuz bir fonksiyonla, komut şeklinde kullanalım. Arif olan zaten neyin nasıl olduğunu fonksiyondan anlar. Aşağıdaki kodları .bashrc (veya .zshrc) dosyanıza ekledikten sonra:
ayikla () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "don't know how to extract '$1'..." ;; esac else echo "'$1' is not a valid file!" fi }
ayikla fonksiyonundan yararlanabilirsiniz. (tabii ki .bashrc’yi tekrar source ettirmek kaydıyla.)
Bundan sonra yapmanız gereken tek şey ayikla dosya şeklinde, istediğiniz dosyayı açmak olacaktır.
Arch kullanırken bazen, sudo /etc/rc.d/xyz start|stop|restart komutlarını yazmak zulüm gibi geliyor. Ha diyeceksiniz, ulan toplasan 20 karakter etmez yazdığın diye; lakin sudo komutunu olabildiğince az kullanmaya çalıştığım için bu şekilde bir yöntem izlemem gerekiyor. Nitekim sistem açıldıktan sonra kök dizinde bir tek /etc/rc.d/* ile muhatap olduğum için bunlara has bir fonksiyonu şu şekilde tanımladım:
srv () { sudo /etc/rc.d/$1 $2 }
Böylelikle istediğim servisi srv daemon start|stop|restart ile kullanabiliyorum. Bu örneklerden yola çıkarak basit ama faydalı fonksiyonlar geliştirebilirsiniz. Mesela twitter’a o anki durumunuzu yazabileceğiniz bir fonksiyonu şu şekilde tanımlayabilirsiniz ve twit “durumunuz” şeklinde kullanabilirsiniz:
twit() { echo "Kullanıcı: " read me echo "Şifre: " read -s sifre echo "" curl -u $me:$sifre -d status="$1" http://twitter.com/statuses/update.xml }
Amacım tabii ki kimseye bash vesaire öğretmek değil; sadece gündelik işleri kolaylaştırmaya yönelik ufak tefek ipuçları vermek, dolayısıyla bash hakkında ileri derecede sorulara yanıt verebilecek düzeyde değilim ve uzun süre de olabileceğimi zannetmiyorum. Ancak öğrenmeniz için harika bir kaynak verebilirim: BASH Programming HOWTO
