linux bazı komutlar ve scripting
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
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_patchpatch 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 = 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/bashclearecho “Bugun tarihi ‘date’"echo~stepp/cowsay `whoami`
echo “Su anki kullanıcılar:"w | grep -v USER | sortecho
Script Değişkenlerivariable 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/bashecho “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 cok yogun!"fi
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.
Script Ornekler
#!/bin/bash# Body Mass Index (BMI) calculator –Vücut index
Hesaplamaif [ $# -lt 2 ]; then echo "Usage: $0 kilo boy" exit 1fi
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…."fi
OrnekPS3=“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..”;;
esacbreak
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
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
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/bash
if 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• -x calıstırılabilirlik kontrolu
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/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)) # 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 “Isminizi soylemediniz!" exitfiecho “Merhaba $user_name!"
Fonksiyon Kullanımı
• #!/bin/bash# hello() fonksiyonu selamlama message yazarhello(){ echo “hello() fonksiyonundan merhaba"}
echo “ Fonksiyonhello() cagrılıyor..."# hello() function cagır:helloecho “ Sımdi fonksiyon hello() dısına cıktın"
Compiling
• $> gcc A.c B.c –o myApp.exeA.c B.c B.h
Preprocessor Compile Link“gcc”
Build: make
• gcc –c A.c• gcc –c B.c• gcc A.o B.o –o myApp.exe
A.c B.c B.h
makeMakefile myApp.exe