350 likes | 521 Views
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.
E N D
diff ve patch • diff dosyalar arasındaki farkları gösterir. diff –u my_filemy_file.orig | less • patch farkları dosyaya uygular.diff –u my_filemy_file.orig> my_patchpatch my_file < mypatchbu şekilde my_fileve my_file.origaynı 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ır13 = Kelime57 = 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 • *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 echo
#!/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 if [ $USER = "stepp" ]; then echo “Merhaba, Stepp!" fi LOGINS=`w | wc -l` if [ $LOGINS -gt 10 ]; then echo “Sistem cokyogun!" fi
Script Ornekler #!/bin/bash # Body Mass Index (BMI) calculator –Vücut index Hesaplama if [ $# -lt 2 ]; then echo "Usage: $0 kiloboy" exit 1 fi let H2=“$2 * $2” let BMI="703 * $1 / $H2" echo “Sizin VucutIndeksi( 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…." fi
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 # >= 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/bashmkdir trashmv * trashrm -rf trashrmdir trashecho “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 $idone
Script Ornekler • #!/bin/bashif test -f /etc/foothen # dosya var, kopyala ve message yaz . cp /usr/foo . echo "Done."else # dosya yok , message yaz ve çık. echo "This file does not exist." exitfi
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 • -xcalıstırılabilirlikkontrolu
Ornek • #!/bin/bashx=0; while [ "$x" -le 10 ]; do echo “Su anki x: $x" # x değerini artır: x=$(expr $x + 1) sleep 1done
Ornek • Aşağıdaki program .html ekini dosyaların sonuna ekler • #!/bin/bashfor file in *; do echo “Sonuna .html eklene dosya $file..." mv $file $file.html sleep 1done
Ornek-case • #!/bin/bashx=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/bashx=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/bashx=5 y=3 add=$(($x + $y)) # Toplamasub=$(($x - $y)) # Cıkarmamul=$(($x * $y)) # Carpmadiv=$(($x / $y)) # Bolmemod=$(($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 selamlarecho -n “Isminizi Girin: "read user_nameecho “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 “Isminizisoylemediniz!" exitfiecho “Merhaba $user_name!"
Fonksiyon Kullanımı • #!/bin/bash# hello() fonksiyonu selamlama message yazarhello(){ echo “hello() fonksiyonundan merhaba"} echo “ Fonksiyonhello()cagrılıyor..."# hello() functioncagır:helloecho “Sımdi fonksiyon hello()dısına cıktın"
Compiling • $> gcc A.c B.c –o myApp.exe A.c B.c B.h “gcc” Preprocessor Compile Link
Build: make • gcc –c A.c • gcc –c B.c • gcc A.o B.o –o myApp.exe A.c B.c B.h make Makefile myApp.exe