• mesela evinizde bir linux box var ve nete devamli bagli ancak modem'in wan ip'si static degil dinamik. sonra bastiniz ucu$a gittiniz 3 4 gun yoksunuz, o sirada modem bi kac kere reset atmi$ ip degi$mi$ olsun, ssh ile uzaktan bi desktop'a baglanip i$inizi goresiniz geldi ama ip yok.

    tamam bu senaryo biraz dyndns.org gibi siteleri hatirlatio ancak diyelim yok, o zaman yapilcaklar.

    oncelikle bi tane bash script yazilir ve updateip.sh gibi bir isimle save edilir

    # bura linux distro'sunda yazili, o anki wan ip'si. 1.2.3.4 formati haliyle, degi$irse script update edicek o ankiyle, dosya yoksa ilk ba$ta onemli degil yaratir.
    currentip=$(cat /home/anil/_robots/current.ip)
    # burdaki domain sizin bir hosting'iniz oldugunu var saydik, orda host edilen bi domain, alttaki url cagrildigi zaman sadece baglanan client'in* ip'sini return ediyo
    actualip=$(wget -q -o - http://www.cicidomain.com/?action=showip)

    # aynilar mi farklilar mi onu check edicek
    if [ "$currentip" = "$actualip" ]; then
    echo "ip'ler ayni babaaaaaa$"
    else
    # ayni degilse update edicek
    echo "ip'ler tutmuyo."
    echo -n $actualip > /home/anil/_robots/current.ip
    # burda da bu sefer bi php script'i cali$io ve o anki ip'yi saati ve dakikasi ile current.ip 'ye yaziyo ama bu sefer domain tarafinda, home box'da degil.
    wget -q -o - http://www.cicidomain.com/?action=updateip
    echo "ip update edildi"
    fi

    buraya kadar her$ey tamam, $imdi bi de bir crontab eklemek lazim, diyelim 15dk'da bir cali$icak ve guncelleme gerekirse yapicak. onun icin ise bash'de

    anil@soulserver:~$ crontab -e

    eer ki crontab ilk kez cali$tirilmi$ ise herhangi bir editor secmenizi soyleyebilir*, daha sonra acilan editor'e ise.

    */15* ** ** ** ** /home/anil/_robots/updateip.sh* > /tmp/ipupdate.log*

    ondan sonra yapmaniz gereken sadece ip'yi bulmak icin

    http://www.cicidomain.com/current.ip

    dosyasini okumaniz o kadar, kalanini bash + php + crontab sizin icin yapmi$ olur**
  • bourne shell'in gelistirilmis versiyonu.. cogu linux distributioninda default olarak gelen shell.
  • ingilizcede party slang'i.
    to bash veya the bash.
  • ctrl+w ile 1 kelime, ctrl+u ile satirdaki butun komutu silme gibi super yetenekleri vardir.
  • basit fonksiyonlarını kullanacaksanız eğer windows içerisinde "git" sayesinde kullanabilirsiniz. (sed, grep, awk, sort vb.)

    cmd yi acip;
    start "" "%programfiles%\git\bin\sh.exe" --login

    yazmaniz yeterli.

    edit:
    sed, cat, grep, awk, sort, ssh, vi gibi komutların hepsi geliyor.
  • gelişimi en gariban olan dil. 89'dan beri piyasada olduğunu düşünürsek teknoloji için dede yadigarı denilebilir. c ile geliştirilmiş ve platformdan bağımsız.

    üzücü olan bir gerçek zsh ve ksh bashden 7x daha hızlı çalışıyor. ayrıca zsh bashin daha gelişmiş ve güncel hali. yani bash için temelin temeli demek dile ayıp olmaz.

    case sensitive olması bir yana boşluk sayısına bile laf yapar. bir koşul belirtirken fazladan koyduğunuz bir boşluk kodun farklı çalışmasını sağlamayı geçtim hiç çalışmamasına bile sebep olabilir. bunun sebebi [ -n test ] ortaya çıktığında [test] zaten var olan bir kavramdı. dili geliştirirken daha kolay olsun diye boşlukla çözelim demişler ama işi daha da zorlaştırmışlar. diğer bir örneği $1 positional argument olduğu değer basmaz. positional argumentlerin değeri ancak "$1" double quotes içinde basılabilir.

    2 ay önce update alarak son releaseinden 2 yıl geçmiş olan bir dildir. aldığı update tarihi bir update geçmişe göre, çoğu saçmalık kapatılmış yeni featurelar eklenmiş ama hala bize boşluğun önemini anlatan bir dil kendisi.

    genelde göreceğiniz hatalar, too many arguments, brackets error, operator hataları olur. o kadar gariptir ki, wildcard ile sadece .txt fileları sil dersiniz ama if koşulunuz o kadar şişmiştir ki bulduğu tüm dosyaları siler buna .txt dışındaki .sh dosyaları ve diğer her şey de dahil. geri dönüşü de yoktur. yedek almadığınız için de hafif bir gülümseme ile ekrana bakarsınız. ayrıca find komutu path göstermek istediğinizde -wholename parametresi alırken sadece dosya ismi gösterecekseniz -name parametresi alır ama ne hikmettir ki bu dede yadigarı -name parametresi vermeme rağmen beni şaşırtmış ve bütün subdirectorylere de gidip ne var ne yoksa silip süpürmüştür.

    bu dilin eğitimini almış, zamanında yalayıp yutmuş ve anlayan abiler burdaysanız, bizde o yoldan geliyoruz.
  • loop içinde bir şeyler çalıştırdığınızda tek tek zaman alıyorsa en sona "&" ekleyerek bash'in birden fazla thread çalıştırmasını sağlayabilirsiniz.

    edit:
    birden fazla thread değil, birden fazla process olarak çalıştırıyor aslında. düzeltelim.

    kullanılan & aynı zamanda background anlamına da geliyor.
    yani echo "a" &
    yaptığınızda da echo komutu arkaplanda çalışıyor.
  • fiil olarak "sertçe bir yere vurmak", isim olarak ise "parti" anlamına gelen ingilizce sözlük.

    ın birthday bash, i bashed my leg aganist the door.
hesabın var mı? giriş yap