ufak tefek bash fonksiyonları

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)       unrar x -v $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

7 Comments

munirekinciDecember 30th, 2008 at 11:38 pm

Arşiv dosyalarını ayıklamak için çok kolaylık sağlıyor. Teşekkürler. Smile

FatihDecember 31st, 2008 at 4:59 pm

Şu twitter işine bir türlü ısınamamıştım ama belki durumu konsoldan güncelleyince ısınırım Smile Fikir için teşekkürler.

[...] yakuake yakın dostunuzsa bir çok iş için konsol gayet kullanışlıdır. twitter hesabınızı güncelleme gibi. yeri geliyor gün içinde çok fazla ingilizce içerikli makale incelemem gerekiyor, böyle [...]

Akın ÖMEROĞLUFebruary 6th, 2009 at 1:16 am

rar dosyalarında neden çalışmıyor bu meret sorusunu soran dimağlar varsa komut rar değil unrar olacak hatta “unrar x -v” olsa bir de verbose görsek çok şık olur =)

ras0irFebruary 6th, 2009 at 1:22 am

oops, düzenledim kaçmış gözden ROTFL

Akın ÖMEROĞLUFebruary 6th, 2009 at 2:39 am

Ellerine sağlık =)

~/.bashrc Düzenleme - wargasm@arch ~October 10th, 2009 at 4:09 pm

[...] : eventualis.org Arch Linux [...]

Leave a comment

Your comment

Click to Insert Smiley

SmileBig SmileGrinLaughFrownBig FrownCryNeutralWinkKissRazzChicCoolAngryReally AngryConfusedQuestionThinkingPainShockYesNoLOLSillyBeautyLashesCuteShyBlushKissedIn LoveDroolGiggleSnickerHeh!SmirkWiltWeepIDKStruggleSide FrownDazedHypnotizedSweatEek!Roll EyesSarcasmDisdainSmugMoney MouthFoot in MouthShut MouthQuietShameBeat UpMeanEvil GrinGrit TeethShoutPissed OffReally PissedMad RazzDrunken RazzSickYawnSleepyDanceClapJumpHandshakeHigh FiveHug LeftHug RightKiss BlowKissingByeGo AwayCall MeOn the PhoneSecretMeetingWavingStopTime OutTalk to the HandLoserLyingDOH!Fingers CrossedWaitingSuspenseTremblePrayWorshipStarvingEatVictoryCurseAlienAngelClownCowboyCyclopsDevilDoctorFemale FighterMale FighterMohawkMusicNerdPartyPirateSkywalkerSnowmanSoldierVampireZombie KillerGhostSkeletonBunnyCatCat 2ChickChickenChicken 2CowCow 2DogDog 2DuckGoatHippoKoalaLionMonkeyMonkey 2MousePandaPigPig 2SheepSheep 2ReindeerSnailTigerTurtleBeerDrinkLiquorCoffeeCakePizzaWatermelonBowlPlateCanFemaleMaleHeartBroken HeartRoseDead RosePeaceYin YangUS FlagMoonStarSunCloudyRainThunderUmbrellaRainbowMusic NoteAirplaneCarIslandAnnouncebrbMailCellPhoneCameraFilmTVClockLampSearchCoinsComputerConsolePresentSoccerCloverPumpkinBombHammerKnifeHandcuffsPillPoopCigarette