Geçmişte kabuk, Unix benzeri sistemler için yerel komut satırı yorumlayıcısı olmuştur. Unix’in en önemli özelliklerinden biri olduğu kanıtlandı ve yeni bir konu haline geldi. Linux, Bash, Zsh, Tcsh ve Ksh dahil olmak üzere sağlam işlevselliğe sahip çeşitli güçlü kabuklar sunar.
Bu kabukların en şaşırtıcı özelliklerinden biri programlanabilir olmalarıdır. Günlük işlerin üstesinden gelmek için basit ama etkili Linux kabuk komut dosyaları oluşturmak kolaydır. Üstelik bu konu hakkında az da olsa bilgi sahibi olmanız sizi kısa sürede Linux konusunda uzman bir kullanıcı haline getirecektir. Unix kabuk komut dosyası yazmaya ayrıntılı bir giriş için bizimle kalın.
Linux Kabuğu ve Bash Komut Dosyası Örnekleri
Linux’ta yapılan kabuk komut dosyalarının çoğunluğu bash kabuğunu içerir. Ancak, belirli seçeneklere sahip uzman kullanıcılar genellikle Zsh ve Ksh gibi kabukları kullanır. Örneklerimizde yaygın popülerlikleri ve geniş kullanılabilirlikleri nedeniyle çoğunlukla Linux bash betiklerine sadık kalacağız.
Ancak editörlerimiz bash dışındaki kabuklarla ilgilenen bazı kabuk betiği örneklerini de özetlemeye çalıştılar. Sonuç olarak, farklı kabuk komut dosyaları arasında önemli bir benzerlik bulacaksınız.
Linux Bash Komut Dosyaları
Bourne Again Shell olan Bash, günümüzde çoğu Linux dağıtımında varsayılan komut satırı yorumlayıcısıdır. İlk kez Sürüm 7 Unix’te tanıtılan önceki Bourne kabuğunun bir yükseltmesidir. Bash kabuk komut dosyalarını öğrenmek, diğer kabuk komut dosyalarını çok daha hızlı anlamanıza olanak tanır. Bu nedenle, ilk elden deneyim kazanmak için bu basit örnekleri kendiniz deneyin.
1. Hello World
Programcılar genellikle Merhaba Dünya programını öğrenerek yeni diller öğrenirler. Bu, “Merhaba Dünya” dizesini standart çıktıya yazdıran basit bir programdır. Daha sonra Vim veya Nano gibi bir editör kullanarak hello-world.sh dosyasını oluşturun ve aşağıdaki satırları bu dosyaya kopyalayın.
#!/bin/bash echo "Hello World"
Dosyayı kaydedip çıkın. Daha sonra aşağıdaki komutu kullanarak bu dosyayı çalıştırılabilir hale getirmeniz gerekir.
$ chmod a+x hello-world.sh
Bunu aşağıdaki iki komuttan herhangi birini kullanarak çalıştırabilirsiniz.
$ bash hello-world.sh $ ./hello-world.sh
Betiğin içinde yankılanmak üzere iletilen dizeyi yazdıracaktır.
2. Yazdırmak için echo komutunu kullanma
Echo komutu bash’taki bilgileri yazdırmak için kullanılır. C işlevi ‘printf’e benzer ve kaçış dizileri ve yeniden yönlendirme dahil olmak üzere birçok ortak seçenek sunar.
Aşağıdaki satırları echo.sh adlı bir dosyaya kopyalayın ve yukarıda yapıldığı gibi çalıştırılabilir hale getirin.
#!/bin/bash echo "Printing text" echo -n "Printing text without newline" echo -e "\nRemoving \t special \t characters\n"
Ne yaptığını görmek için betiği çalıştırın. -e seçeneği, echo’ya kendisine iletilen dizenin özel karakterler içerdiğini ve genişletilmiş işlevsellik gerektirdiğini bildirmek için kullanılır.
3. Yorumları Kullanma
Yorumlar dokümantasyon için faydalıdır ve yüksek kaliteli kod tabanları için bir gerekliliktir. Kritik mantıkla ilgilenen kodların içine yorum koymak yaygın bir uygulamadır. Bir satırı yorumlamak için ondan önce #(hash) karakterini kullanmanız yeterlidir. Örneğin aşağıdaki bash betiği örneğini kontrol edin.
#!/bin/bash # Adding two values ((sum=25+35)) #Print the result echo $sum
Bu betik çıktı olarak 60 sayısını verecektir. İlk olarak, bazı satırlardan önce # kullanarak yorumların nasıl kullanıldığını kontrol edin. Ancak ilk satır bir istisnadır. Buna shebang denir ve sistemin bu betiği çalıştırırken hangi tercümanı kullanacağını bilmesini sağlar.
4. Çok satırlı yorumlar
Birçok kişi kabuk komut dosyalarını belgelemek için çok satırlı yorumları kullanır. Comment.sh adlı bir sonraki komut dosyasında bunun nasıl yapıldığını kontrol edin.
#!/bin/bash : ' This script calculates the square of 5. ' ((area=5*5)) echo $area
:’ ve ‘ karakterlerinin içine çok satırlı yorumların nasıl yerleştirildiğine dikkat edin.
5. While Döngüsü
While döngüsü yapısı bazı talimatları birden çok kez çalıştırmak için kullanılır. Bu kavramı daha iyi anlamak için while.sh adlı aşağıdaki komut dosyasına göz atın.
#!/bin/bash i=0 while [ $i -le 2 ] do echo Number: $i ((i++)) done
Yani while döngüsü aşağıdaki formu alır.
while [ condition ] do commands 1 commands n done
Köşeli parantezleri çevreleyen boşluk zorunludur.
6. For Döngüsü
For döngüsü, kullanıcıların kodlar üzerinde verimli bir şekilde yineleme yapmasına olanak tanıyan, yaygın olarak kullanılan başka bir bash kabuk yapısıdır. Aşağıda basit bir örnek gösterilmiştir.
#!/bin/bash for (( counter=1; counter<=10; counter++ )) do echo -n "$counter " done printf "\n"
Bu kodu for.sh adlı bir dosyaya kaydedin ve ./for.sh kullanarak çalıştırın. Çalıştırılabilir hale getirmeyi unutmayın. Bu program 1’den 10’a kadar olan sayıları yazdırmalıdır.
7. Kullanıcı Girişi
Komut dosyalarınızda kullanıcı etkileşimini uygulamak için kullanıcı girişi almak çok önemlidir. Aşağıdaki kabuk komut dosyası örneği, bir kabuk programı içerisinde kullanıcı girişinin nasıl alınacağını gösterecektir.
#!/bin/bash echo -n "Enter Something:" read something echo "You Entered: $something"
Bu nedenle, kullanıcı girdisini almak için okuma yapısı ve ardından bir değişken adı kullanılır. Giriş bu değişkenin içinde saklanır ve $ işareti kullanılarak erişilebilir.
8. If İfadesi
İfadeler, Unix kabuk komut dosyası oluşturmada mevcut en yaygın koşullu yapıysa, aşağıda gösterilen biçimi alırlar.
if CONDITION then STATEMENTS fi
İfadeler yalnızca KOŞUL doğru olduğunda yürütülür. fi anahtar sözcüğü if ifadesinin sonunu işaretlemek için kullanılır. Aşağıda hızlı bir örnek gösterilmektedir.
#!/bin/bash echo -n "Enter a number: " read num if [[ $num -gt 10 ]] then echo "Number is greater than 10." fi
Yukarıdaki program yalnızca giriş yoluyla sağlanan sayı ondan büyükse çıkışı gösterecektir. -gt şundan büyük anlamına gelir; benzer şekilde -lt daha küçük için; -le eşitten küçük için; ve eşitten büyük için -ge. Ayrıca [[ ]] gereklidir.
9. If Else Kullanımıyla Daha Fazla Kontrol
else yapısını if ile birleştirmek, betiğinizin mantığı üzerinde daha iyi kontrol sağlar. Aşağıda basit bir örnek gösterilmektedir.
#!/bin/bash read n if [ $n -lt 10 ]; then echo "It is a one digit number" else echo "It is a two digit number" fi
Diğer kısmı if’in aksiyon kısmından sonra ve fi’den önce yerleştirilmelidir.
10. AND Operatörünü Kullanmak
AND operatörü, programımızın birden fazla koşulun aynı anda karşılanıp karşılanmadığını kontrol etmesine olanak tanır. AND operatörüyle ayrılan tüm parçalar doğru olmalıdır. Aksi halde AND içeren ifade false değerini döndürecektir. AND’in nasıl çalıştığını daha iyi anlamak için aşağıdaki bash betiği örneğini inceleyin.
#!/bin/bash echo -n "Enter Number:" read num if [[ ( $num -lt 10 ) && ( $num%2 -eq 0 ) ]]; then echo "Even Number" else echo "Odd Number" fi
AND operatörü && işaretiyle gösterilir.
11. OR Operatörünü Kullanmak
OR operatörü, komut dosyalarımızda karmaşık, sağlam programlama mantığını uygulamamıza olanak tanıyan bir diğer önemli yapıdır. AND’in aksine, OR operatöründen oluşan bir ifade, işlenenlerinden herhangi biri doğru olduğunda doğru değerini döndürür. Yalnızca VEYA ile ayrılan her işlenen yanlış olduğunda false değerini döndürür.
#!/bin/bash echo -n "Enter any number:" read n if [[ ( $n -eq 15 || $n -eq 45 ) ]] then echo "You won" else echo "You lost!" fi
Bu basit örnek, OR operatörünün Linux kabuk komut dosyalarında nasıl çalıştığını gösterir. Kullanıcıyı ancak 15 veya 45 sayısını girdiğinde kazanan ilan eder. || işareti VEYA operatörünü temsil eder.
12. Elif’i Kullanmak
Elif ifadesi else if anlamına gelir ve zincir mantığını uygulamak için uygun bir yol sunar. Aşağıdaki örneği değerlendirerek elif’in nasıl çalıştığını öğrenin.
#!/bin/bash echo -n "Enter a number: " read num if [[ $num -gt 10 ]] then echo "Number is greater than 10." elif [[ $num -eq 10 ]] then echo "Number is equal to 10." else echo "Number is less than 10." fi
Yukarıdaki program kendi kendini açıklayıcı nitelikte olduğundan onu satır satır incelemeyeceğiz. Bunun yerine, değişken adları ve değerleri gibi komut dosyasının bölümlerini değiştirerek bunların birlikte nasıl çalıştığını kontrol edin.
13. SwitchYapısı
Switch yapısı, Linux bash betiklerinin sunduğu bir başka güçlü özelliktir. İç içe koşulların gerekli olduğu yerlerde kullanılabilir, ancak karmaşık if-else-elif zincirlerini kullanmak istemezsiniz. Bir sonraki örneğe bir göz atın.
#!/bin/bash echo -n "Enter a number: " read num case $num in 100) echo "Hundred!!" ;; 200) echo "Double Hundred!!" ;; *) echo "Neither 100 nor 200" ;; esac
Koşullar case ve esac anahtar kelimeleri arasına yazılır. *) 100 ve 200 dışındaki girişleri eşleştirmek için kullanılır.
14. Komut Satırı Argümanları
Argümanları doğrudan komut kabuğundan almak bazı durumlarda faydalı olabilir. Aşağıdaki örnekte bunun bash’ta nasıl yapılacağı gösterilmektedir.
#!/bin/bash echo "Total arguments : $#" echo "First Argument = $1" echo "Second Argument = $2"
Bu betiği adından sonra iki ek parametreyle çalıştırın. Buna test.sh adını verdim ve çağırma prosedürü aşağıda özetlenmiştir.
$ ./test.sh Hey Howdy
Yani, ilk argümana erişim için $1, ikinci argümana erişim için $2 vb. kullanılır. Daha sonra son olarak toplam argüman sayısını almak için $# kullanılır.
15. İsimlerle Tartışmalar Elde Etmek
Aşağıdaki örnek, adlarıyla birlikte komut satırı bağımsız değişkenlerinin nasıl alınacağını gösterir.
#!/bin/bash for arg in "$@" do index=$(echo $arg | cut -f1 -d=) val=$(echo $arg | cut -f2 -d=) case $index in X) x=$val;; Y) y=$val;; *) esac done ((result=x+y)) echo "X+Y=$result"
Bu betiği test.sh olarak adlandırın ve aşağıda gösterildiği gibi çağırın.
$ ./test.sh X=44 Y=100
X+Y=144 değerini döndürmelidir. Buradaki argümanlar ‘$@’ içinde saklanır ve komut dosyası bunları Linux kesme komutunu kullanarak getirir.
16. Dizeleri Birleştirmek
Dize işleme, çok çeşitli modern bash komut dosyaları için son derece önemlidir. Neyse ki, bash’ta çok daha rahattır ve bunu uygulamanın daha kesin ve özlü bir yolunu sağlar. Bash dizesi birleştirmeye genel bir bakış için aşağıdaki örneğe bakın.
#!/bin/bash string1="Ubuntu" string2="Pit" string=$string1$string2 echo "$string is a great resource for Linux beginners."
Aşağıdaki program, “UbuntuPit, Linux’a yeni başlayanlar için harika bir kaynaktır” dizesini verir ekrana.
17. Dizeleri Ayrıştırmak
Birçok programlama dilinden farklı olarak bash, bir dizenin bölümlerini kesmek için herhangi bir yerleşik işlev sağlamaz. Ancak aşağıdaki örnekte bunun parametre genişletme kullanılarak nasıl yapılabileceği gösterilmektedir.
#!/bin/bash Str="Learn Bash Commands from UbuntuPit" subStr=${Str:0:20} echo $subStr
Bu betiğin çıktısı olarak “Learn Bash Commands” yazılmalıdır. Parametre genişletmesi ${VAR_NAME:S:L} biçimini alır. Burada S başlangıç pozisyonunu, L ise uzunluğu göstermektedir.
18. Cut Kullanarak Alt Dizilerin Çıkarılması
Linux kesme komutu, komut dosyalarınızın içinde bir dizenin bir kısmını, yani alt dizeyi ‘kesmek’ için kullanılabilir. Bir sonraki örnek bunun nasıl yapılabileceğini göstermektedir.
#!/bin/bash Str="Learn Bash Commands from UbuntuPit" #subStr=${Str:0:20} subStr=$(echo $Str| cut -d ' ' -f 1-3) echo $subStr
19. İki Değer Eklemek
Linux kabuk betiklerinde aritmetik işlemleri gerçekleştirmek oldukça kolaydır. Aşağıdaki örnek, kullanıcıdan girdi olarak iki sayının nasıl alınacağını, ekleneceğini ve bunların nasıl ekleneceğini gösterir.
#!/bin/bash echo -n "Enter first number:" read x echo -n "Enter second number:" read y (( sum=x+y )) echo "The result of addition=$sum"
Gördüğünüz gibi bash’a sayı eklemek oldukça basittir.
20. Birden Çok Değer Eklemek
Birden fazla kullanıcı girişi almak ve bunları betiğinize eklemek için döngüleri kullanabilirsiniz. Aşağıdaki örnekler bunu uygulamalı olarak göstermektedir.
#!/bin/bash sum=0 for (( counter=1; counter<5; counter++ )) do echo -n "Enter Your Number:" read n (( sum+=n )) #echo -n "$counter " done printf "\n" echo "Result is: $sum"
Ancak (( )) karakterinin atlanması, ekleme yerine dize birleştirmeyle sonuçlanacaktır. Bu nedenle programınızda buna benzer şeyler olup olmadığını kontrol edin.
21. Bash’teki İşlevler
Herhangi bir programlama lehçesinde olduğu gibi, Linux kabuk komut dosyalarında da işlevler önemli bir rol oynar. Yöneticilerin sık kullanım için özel kod blokları oluşturmasına olanak tanır. Aşağıdaki gösterim Linux bash betiklerinde fonksiyonların nasıl çalıştığını özetlemektedir.
#!/bin/bash function Add() { echo -n "Enter a Number: " read x echo -n "Enter another Number: " read y echo "Adiition is: $(( x+y ))" } Add
Burada daha önce olduğu gibi iki sayı ekledik. Ancak burada işi Ekle adlı bir işlevi kullanarak yaptık. Yani tekrar ekleme yapmanız gerektiğinde o bölümü tekrar yazmak yerine sadece bu fonksiyonu çağırabilirsiniz.
22. Dönen Değerlere Sahip Fonksiyonlar
En fantastik işlevlerden biri, verilerin bir işlevden diğerine aktarılmasına izin vermektir. Çok çeşitli senaryolarda faydalıdır. Bir sonraki örneğe göz atın.
#!/bin/bash function Greet() { str="Hello $name, what brings you to UbuntuPit.com?" echo $str } echo "-> what's your name?" read name val=$(Greet) echo -e "-> $val"
Burada çıktı, Greet() işlevinden alınan verileri içerir.
23. Bash Komut Dosyalarından Dizinler Oluşturma
Sistem komutlarını kabuk komut dosyalarını kullanarak çalıştırma yeteneği, geliştiricilerin çok daha üretken olmasına olanak tanır. Aşağıdaki basit örnek size bir kabuk betiğinden nasıl dizin oluşturulacağını gösterecektir.
#!/bin/bash echo -n "Enter directory name ->" read newdir cmd="mkdir $newdir" eval $cmd
Bu betik basitçe standart kabuk komutunuz mkdir’i çağırır ve yakından bakarsanız ona dizin adını iletir. Bu program dosya sisteminizde bir dizin oluşturmalıdır. Ayrıca, aşağıda gösterildiği gibi geri tıklamaların(“) içinde yürütülecek komutu da iletebilirsiniz.
`mkdir $newdir`
24. Varlığını Onayladıktan Sonra Bir Dizin Oluşturun
Geçerli çalışma dizininizde zaten aynı adda bir klasör varsa yukarıdaki program çalışmayacaktır. Örneğin, aşağıdaki program $dir adlı herhangi bir klasörün varlığını kontrol edecek ve yalnızca bulamazsa bir tane oluşturacaktır.
#!/bin/bash echo -n "Enter directory name ->" read dir if [ -d "$dir" ] then echo "Directory exists" else `mkdir $dir` echo "Directory created" fi
Bash komut dosyası yazma becerilerinizi artırmak için bu programı eval kullanarak yazın.
25. Dosyaları Okumak
Bash betikleri kullanıcıların dosyaları çok etkili bir şekilde okumasına olanak tanır. Aşağıdaki örnek, kabuk komut dosyalarını kullanarak bir dosyanın nasıl okunacağını gösterecektir. Öncelikle aşağıdaki içeriklere sahip editors.txt adında bir dosya oluşturun.
1. Vim 2. Emacs 3. ed 4. nano 5. Code
Bu komut dosyası yukarıdaki 5 satırın her birinin çıktısını alacaktır.
#!/bin/bash file='editors.txt' while read line; do echo $line done < $file
26. Dosyaları Silmek
Aşağıdaki program, Linux kabuk komut dosyalarındaki bir dosyanın nasıl silineceğini gösterecektir. Program öncelikle kullanıcıdan dosya adını girdi olarak vermesini ve varsa silmesini isteyecektir. Linux rm komutu buradaki dosyayı siler.
#!/bin/bash echo -n "Enter filename ->" read name rm -i $name
Dosya adı olarak editors.txt yazıp onay istendiğinde y tuşuna basalım. Dosyayı silmeli.
27. Dosyaları Ekleme
Aşağıdaki kabuk komut dosyası örneği, bash komut dosyalarını kullanarak dosya sisteminizdeki bir dosyaya nasıl veri ekleyeceğinizi gösterecektir. Önceki editors.txt dosyasına ek bir satır ekler.
#!/bin/bash echo "Before appending the file" cat editors.txt echo "6. NotePad++" >> editors.txt echo "After appending the file" cat editors.txt
Artık günlük terminal komutlarını doğrudan Linux bash betiklerinden kullandığımızı fark etmişsinizdir.
28. Dosya Varlığını Test Edin
Bir sonraki kabuk betiği örneği, bash programlarından bir dosyanın varlığının nasıl kontrol edileceğini gösterir.
#!/bin/bash filename=$1 if [ -f "$filename" ]; then echo "File exists" else echo "File does not exist" fi
Dosya adını doğrudan komut satırından argüman olarak aktarıyoruz.
29. Kabuk Komut Dosyalarından E-posta Gönderin
Bash betiklerinden e-posta göndermek oldukça basittir. Aşağıdaki basit örnek, bunu bash uygulamalarından yapmanın bir yolunu gösterecektir.
#!/bin/bash recipient=”[email protected]” subject=”Greetings” message=”Welcome to UbuntuPit” `mail -s $subject $recipient <<< $message`
Alıcıya verilen konuyu ve mesajı içeren bir e-posta gönderecektir.
30. Tarihi ve Saati Ayrıştırma
Bir sonraki bash betiği örneği, betikleri kullanarak tarih ve saatlerin nasıl işleneceğini gösterecektir. Gerekli bilgiyi almak için yine Linux date komutu kullanılır ve programımız ayrıştırır.
#!/bin/bash year=`date +%Y` month=`date +%m` day=`date +%d` hour=`date +%H` minute=`date +%M` second=`date +%S` echo `date` echo "Current Date is: $day-$month-$year" echo "Current Time is: $hour:$minute:$second"
Nasıl çalıştığını görmek için bu programı çalıştırın. Ayrıca terminalinizden date komutunu çalıştırmayı deneyin.
31. Sleep Komutu
Sleep komutu, kabuk komut dosyanızın talimatlar arasında duraklamasına olanak tanır. Sistem düzeyinde işlerin gerçekleştirilmesi gibi çeşitli senaryolarda kullanışlıdır. Bir sonraki örnek, bir kabuk betiğindeki sleep komutunu çalışırken göstermektedir.
#!/bin/bash echo "How long to wait?" read time sleep $time echo "Waited for $time seconds!"
Bu program, son talimatın yürütülmesini, bu durumda kullanıcının sağladığı $time saniyeye kadar duraklatır.
32. Wait Komutu
Bekleme komutu, sistem işlemlerini Linux bash komut dosyalarından duraklatmak için kullanılır. Bunun bash’ta nasıl çalıştığını ayrıntılı olarak anlamak için aşağıdaki örneğe göz atın.
#!/bin/bash echo "Testing wait command" sleep 5 & pid=$! kill $pid wait $pid echo $pid was terminated.
Nasıl çalıştığını kontrol etmek için bu programı kendiniz çalıştırın.
33. Son Güncellenen Dosyanın Görüntülenmesi
Bazen belirli işlemler için son güncellenen dosyayı bulmanız gerekebilir. Aşağıdaki basit program bize bunu bash’ta awk komutunu kullanarak nasıl yapacağımızı gösteriyor. Geçerli çalışma dizininizdeki en son güncellenen veya oluşturulan dosyayı listeleyecektir.
#!/bin/bash ls -lrt | grep ^- | awk 'END{print $NF}'
Basitlik adına bu örnekte awk’nin nasıl çalıştığını açıklamaktan kaçınacağız. Bunun yerine görevi tamamlamak için bu kodu kopyalamanız yeterlidir.
34. Toplu Uzantı Ekleme
Aşağıdaki örnek, bir dizindeki tüm dosyalara özel bir uzantı uygulayacaktır. Yeni bir dizin oluşturun ve gösteri amacıyla bazı dosyaları oraya koyun. Klasörümde her biri test adında ve ardından (0-4) gelen toplam beş dosya var. Bu betiği dosyaların sonuna (.UP) ekleyecek şekilde programladım. İstediğiniz uzantıyı ekleyebilirsiniz.
#!/bin/bash dir=$1 for file in `ls $1/*` do mv $file $file.UP done
Öncelikle bu betiği herhangi bir normal dizinden denemeyin; bunun yerine bunu bir test dizininden çalıştırın. Ayrıca, dosyalarınızın dizin adını komut satırı argümanı olarak sağlamanız gerekir. Geçerli çalışma dizini için period(.) kullanın.
35. Dosya veya Dizin Sayısını Yazdırın
Aşağıdaki Linux bash betiği, belirli bir dizinde bulunan dosya veya klasörlerin sayısını bulur. Bunu yapmak için Linux find komutunu kullanır. Öncelikle komut satırından dosya aramak için dizin adını girmeniz gerekir.
#!/bin/bash if [ -d "$@" ]; then echo "Files found: $(find "$@" -type f | wc -l)" echo "Folders found: $(find "$@" -type d | wc -l)" else echo "[ERROR] Please retry with another folder." exit 1 fi
Belirtilen dizin mevcut değilse veya izin sorunları varsa program kullanıcıdan tekrar denemesini isteyecektir.
36. Günlük Dosyalarını Temizleme
Bir sonraki basit örnek, kabuk komut dosyalarını gerçek hayatta nasıl kullanabileceğimizi gösteriyor. Bu program /var/log dizininizde bulunan tüm günlük dosyalarını silecektir. Diğer günlükleri temizlemek için bu dizini tutan değişkeni değiştirebilirsiniz.
#!/bin/bash LOG_DIR=/var/log cd $LOG_DIR cat /dev/null > messages cat /dev/null > wtmp echo "Logs cleaned up."
Bu Linux kabuk betiğini root olarak çalıştırmayı unutmayın.
37. Bash Kullanarak Komut Dosyasını Yedekleme
Kabuk komut dosyaları, dosyalarınızı ve dizinlerinizi yedeklemek için sağlam bir yol sağlar. Aşağıdaki örnek, son 24 saat içinde değiştirilen her dosya veya dizini yedekleyecektir. Bu program bunu yapmak için find komutunu kullanır.
#!/bin/bash BACKUPFILE=backup-$(date +%m-%d-%Y) archive=${1:-$BACKUPFILE} find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar" echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"." exit 0
Yedekleme işlemi başarılı olduktan sonra dosya ve dizinlerin adlarını yazdıracaktır.
38. Root Olup Olmadığınızı Kontrol Edin
Aşağıdaki örnek, bir kullanıcının Linux bash betiklerinden bir kök olup olmadığını belirlemenin hızlı bir yolunu göstermektedir.
#!/bin/bash ROOT_UID=0 if [ "$UID" -eq "$ROOT_UID" ] then echo "You are root." else echo "You are not root" fi exit 0
Bu betiğin çıktısı onu çalıştıran kullanıcıya bağlıdır. $UID’ye göre kök kullanıcıyla eşleşecektir.
39. Dosyalardan Yinelenen Satırları Kaldırma
Dosya işleme oldukça zaman alır ve yöneticilerin üretkenliğini birçok yönden engeller. Örneğin, dosyalarınızdaki kopyaları aramak göz korkutucu bir görev haline gelebilir. Neyse ki bunu kısa bir kabuk betiğiyle yapabilirsiniz.
#! /bin/sh echo -n "Enter Filename-> " read filename if [ -f "$filename" ]; then sort $filename | uniq | tee sorted.txt else echo "No $filename in $pwd...try again" fi exit 0
Yukarıdaki komut dosyası dosyanızda satır satır ilerler ve yinelenen satırları kaldırır. Daha sonra yeni içeriği yeni bir dosyaya yerleştirir ve orijinal dosyayı olduğu gibi tutar.
40. Sistem Bakımı
Sistemimi yükseltmek için manuel olarak yapmak yerine sıklıkla küçük bir Linux kabuk betiği kullanıyorum. Aşağıdaki basit kabuk betiği size bunun nasıl yapılacağını gösterecektir.
#!/bin/bash echo -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n" apt-get update apt-get -y upgrade apt-get -y autoremove apt-get autoclean echo -e "\n$(date "+%T") \t Script Terminated"
Komut dosyası ayrıca artık ihtiyaç duyulmayan eski paketlerle de ilgilenir. Bu betiği sudo kullanarak çalıştırmanız gerekiyor; aksi halde düzgün çalışmayacaktır.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.