Linux Bazı Komutlar ve Scripting
diff ve patch diff dosyalar arasındaki farkları gösterir. diff –u my_file my_file.orig | less patch farkları dosyaya uygular. diff –u my_file my_file.orig > my_patch patch my_file < mypatch bu şekilde my_file ve my_file.orig aynı olur.
Head ve Tail head -n 5 flavours.txt İlk 5 satırı yazar tail -n 5 flavours.txt Son 5 satırı yazar.
Sort Sort file.txt Dosyayı sıralar. $ sort –t "," -k1, file.txt , ile ayrılan alanlardan 1. gore sırala. sort -u file.txt Sırala ve tekrarları sil sort -r file.txt Tersten sırala
Wc (Word Count) wc myfile.txt 5 13 57 myfile.txt 5 = Satır 13 = Kelime 57 = Karakter ls -l | wc –l Bulunan yerde dosya ve klasor satır sayısını verir.
Df ve du Df = Boş alanı gosterir df -h Du = Dosyaların tuttuğu yeri gosterir. du -s *.txt du -h /tmp
grep – patern aramak grep <kelime> <DOSYA> Özel Karakterler: ^ - Satır başı $ - Satır sonu Nokta (.) herne karakter olursa olsun [ ] Karakter sınıfı grubu: [aeiou] – tek sesli harf [a-zA-z0-9] – tek harf veya sayı [^0-9] – Sayı olmayan herhangibir karakter
Grep -devam -i : harf duyuarlılığı olmadan ara. * anlamı “sıfır veya çok kere” ? Means “sıfır veya bir kere” -i : harf duyuarlılığı olmadan ara. -n : satır numaraları yaz -v : uyusmayan satır numaralarını yaz -l : Sadece cıktısı yazılabilecek dosyaları listele.
grep örnekler Boş satırları yaz: grep –v ’^$’ my_file.txt my_function çağrıldığı satırları yaz: grep –n ’my_function *(’ my_code.c grep –v ‘test’ myfiles.txt
find find dosyalarını yerini bulmak için kullanılır. find / -name foo Komutu foo dosyasını tüm dizinde arar. find /home/david -name 'index*‘ İndex ile baslayan dosyaları gosterir.
find ornekler Uzantısı*.c* ve *.h* yaz. find . –name ’*.[ch]*’ –a –print www klasöru haricindeki tüm dosya ve klasörleri herkesin ulasabileceği şekilde haklarını değiştir. find . –path ”./www*” –prune –o –exec | chmod go-rwx {} \; *.c* dosyalarının ne kadar buyuk olduğunu bul? expr `find –name ’*.c*’ –printf ”%k + ”` 0
Gzip Gunzip gzip file.txt gunzip file.txt.gz gzip -c file1 file2 > foo.gz cat file1 file2 | gzip > foo.gz
Tar tar -cvf file.tar file1 file2 file3 tar -cvf dir.tar dir1 dir2 tar -cvwf file.tar myfile.txt tar -cvwf home.tar home/ tar -xvwf myfile.tar tar -xvwzf myfile.tar.gz
Script Ornekleri #!/bin/bash clear echo “Bugun tarihi ‘date’" echo ~stepp/cowsay `whoami` echo “Su anki kullanıcılar:" w | grep -v USER | sort
Script Değişkenleri variable description $DISPLAY Grafik objelerin gosterileceği X-windows $HOSTNAME Kullanılan bilgisayar adı $HOME home klasör adı $PATH Çalışacak komutların klasör listesi $PS1 Kabuk komut dizgesi $PWD Bulunulan klasör $SHELL Kabuk programı patikası $USER Kullanıcı adı variable description $0 Script adı $1, $2, $3, ... Komut satırı argumanları $# Arguman sayısı $@ Arguman dizisi-array
#!/bin/bash echo “Script adı $0” echo “1. Komut argumanı $1” echo “ $# Kadar arguman vardı ve bunlar: $@” Example.sh argument1 argument2 argument3 Her .txt dosyasını, .txt2 şeklinde değiştiren script yazın. for file in *.txt; do mv $file ${file}2 done
Karşılaştırma Terimleri shell command description =, !=, <, > Kelime Karşılaştırır -z, -n Kelimenin boş olup olamdığını karşılaştırır -lt, -le, -eq, -gt, -ge, -ne Sayıları karşılaştırır: <, <=, ==, >, >=, != -e, -d Klasörün var olu olmadığını karşılaştırır. -r, -w Dosyanı olup, okunur, yazılır olmasını karşılaştırır. if [ $USER = "stepp" ]; then echo “Merhaba, Stepp!" fi LOGINS=`w | wc -l` if [ $LOGINS -gt 10 ]; then echo “Sistem cok yogun!"
Script Ornekler #!/bin/bash # Body Mass Index (BMI) calculator –Vücut index Hesaplama if [ $# -lt 2 ]; then echo "Usage: $0 kilo boy" exit 1 fi let H2=“$2 * $2” let BMI="703 * $1 / $H2" echo “Sizin Vucut Indeksi( Body Mass Index (BMI)) is $BMI" if [ $BMI -le 18 ]; then echo “Çok zayıfsın….." elif [ $BMI -le 24 ]; then echo “Normal Kilo…..." elif [ $BMI -le 29 ]; then echo “Exersiz zamanı, kilo almıssın…." else echo “Takma kafana…."
Ornek PS3=“Sevdiğin kişi sec!” Select CHOICE in “Josh” “Marty” “Dave” “HAL” “Me”; do case $CHOICE in “Josh”|”Marty”) echo “Akıllı Secim.” ;; ”Dave”|”HAL”) echo “Bu senin son secimin.” “Me”) echo “Super secim..” esac break done
Mantık ifade Karşılaştırma shell command description if [ expr1 -a expr2 ]; then ... if [ test1 ] && [ test2 ]; then ... and if [ expr1 -o expr2 ]; then ... if [ test1 ] || [ test2 ]; then ... or if [ ! expr ]; then ... not # >= 10 fazla process varsa kullanıcıları # ve kullanıcı sayısı >= 5 ise kullanıcıları uyar. LOGINS=`w | wc -l` PROCESSES=`ps -u $USER | wc -l` if [ $LOGINS -gt 5 -a $PROCESSES -gt 10 ]; then echo “System yoğun, process azaltın!" fi
Ornekler $ find /mp3klasor -name '*.mp3' -size -5000k /mp3klasor adlı klasorde, boyu 5000 Kilobytes ( < 5MB) az mp3 dosyalarını bulur. $ find /mp3klasor -name 'Metallica*‘ -and -size +10000k /mp3klasor adlı klasorde, boyu 10000 kilobytes (> 10 MB) buyuk VE adı 'Metallica‘ ile baslayan dosyaları bulur. $ find / mp3klasor -n -size +10000k ! -name "Metallica*“ /mp3klasor adlı klasorde, boyu 10000 kilobytes (> 10 MB) buyuk ve adı 'Metallica‘ ile baslamayan dosyaları bulur. $ find / mp3klasor -n -name 'Metallica*' -or -size +10000k /mp3klasor adlı klasorde, boyu 10000 kilobytes (> 10 MB) buyuk VEYA adı 'Metallica‘ ile baslayan dosyaları bulur.
Ornek #!/bin/bash mkdir trash mv * trash rm -rf trash rmdir trash echo “Tum dosyalar silindi!"
Ornek #!/bin/bash # Bu program 1 den 10 a kadar sayar: for i in 1 2 3 4 5 6 7 8 9 10; do echo $i done
Script Ornekler #!/bin/bash if test -f /etc/foo then # dosya var, kopyala ve message yaz . cp /usr/foo . echo "Done." else # dosya yok , message yaz ve çık. echo "This file does not exist." exit fi
Script kontrol parametreleri Command Line Parameters for ' test ' -d klasör kontrol -e dosya bulunması kontrolü -f sıradan dosya kontrolu -r okunabilirlik kontrolu -s dosya boyu kontrolu -w yazılabilirlik kontrolu -x calıstırılabilirlik kontrolu
Ornek #!/bin/bash x=0; while [ "$x" -le 10 ]; do echo “Su anki x: $x" # x değerini artır: x=$(expr $x + 1) sleep 1 done
Ornek Aşağıdaki program .html ekini dosyaların sonuna ekler #!/bin/bash for file in *; do echo “Sonuna .html eklene dosya $file..." mv $file $file.html sleep 1 done
Ornek-case #!/bin/bash x=5 # Değer kontrolu x: case $x in 0) echo “x degeri : 0.” ;; 5) echo " x degeri : 5.” ;; 9) echo " x degeri : 9.“ ;; *) echo “Tanımlanmamıs deger." esac
Ornek-if #!/bin/bash x=5 if [ "$x" -eq 0 ]; then echo “x degeri : 0." elif [ "$x" -eq 5 ]; then echo " x degeri : 5." elif [ "$x" -eq 9 ]; then echo " x degeri : 9." else echo “Tanımlanmayan deger." fi
Ornek- Hesap Makinesi #!/bin/bash x=5 y=3 add=$(($x + $y)) # Toplama sub=$(($x - $y)) # Cıkarma mul=$(($x * $y)) # Carpma div=$(($x / $y)) # Bolme mod=$(($x % $y)) # Mod alma- Kalanı bulma # print out the answers: echo “Toplam: $add" echo “Fark: $sub" echo “Çarpım: $mul" echo “Bolum: $div" echo “Kalan: $mod"
Ornek-Selamlama1 #!/bin/bash # Isım okur ve selamlar echo -n “Isminizi Girin: " read user_name echo “Merhaba $user_name!"
Ornek-Selamlama2 #!/bin/bash # # Isım okur ve selamlar echo -n " Isminizi Girin: " read user_name # Kullanıcı boş enter basarsa… if [ -z "$user_name" ]; then echo “Isminizi soylemediniz!" exit fi echo “Merhaba $user_name!"
Fonksiyon Kullanımı #!/bin/bash # hello() fonksiyonu selamlama message yazar hello() { echo “hello() fonksiyonundan merhaba" } echo “ Fonksiyonhello() cagrılıyor..." # hello() function cagır: hello echo “ Sımdi fonksiyon hello() dısına cıktın"
Compiling $> gcc A.c B.c –o myApp.exe “gcc” Preprocessor Compile B.h “gcc” Preprocessor Compile Link
Build: make gcc –c A.c gcc –c B.c gcc A.o B.o –o myApp.exe make A.c B.h make Makefile myApp.exe