Skip to content

Instantly share code, notes, and snippets.

@canokay
Last active January 14, 2019 06:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save canokay/8cc3828ac3cc4b87a0a07b17350c6a99 to your computer and use it in GitHub Desktop.
Save canokay/8cc3828ac3cc4b87a0a07b17350c6a99 to your computer and use it in GitHub Desktop.

Head ve Tail

Head: İlk 5 satırı yazar

head -n 5 flavours.txt

Tail: Son 5 satırı yazar.

tail -n 5 flavours.txt

Sort

Dosyayı sırala

Sort file.txt

, ile ayrılan alanlardan 1. gore sırala.

$ sort –t "," -k1,  file.txt
sort -u file.txt

Sırala ve tekrarları sil

sort -r file.txt

WC (Word Count)

wc myfile.txt

Sonuç:

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 ** 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 Örnekleri

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.

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

Örnek 1

#!/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ı $0echo “1. Komut argumanı $1echo$# 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

Vücut Index Hesaplama

#!/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 * $2let 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

Select Case Örnek

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

Dosya boyutu örnekleri

$ 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.

Tüm dosyaları silme

#!/bin/bash
mkdir trash
mv * trash
rm -rf trash
rmdir trash
echo “Tum dosyalar silindi!"

1 den 10 a kadar

#!/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

Dosya varsa kopyala dosya yoksa çık

#!/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

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

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

Case Örnek

#!/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

If Örnek

#!/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

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"

İsim bilgisi al ve yaz

#!/bin/bash

echo -n “Isminizi Girin: "
read user_name
echo “Merhaba $user_name!"

hello() fonksiyonu selamlama message yaz

#!/bin/bash
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"

Hello World

#!/bin/bash 
echo "Hello, World "

Değişkenler

Değişken tanımlanırken türü belirtmeye gerek yoktur. Ama istenirse declare kelimesiyle de tanımlanabilir. Değişken değerine ulaşmak için "$" kullanılır, atama yaparken "$" kullanılmaz. Atamalarda eşit işaretinin çevresine boşluk konulmaz.

#!/bin/bash
STRING="HELLO WORLD!!!"
echo $STRING
     declare -i x
x=10
x=x+1
echo $x

Atamalarda " (çift tırnak ) değişken değeri yazar. ' (tek tırnak) text olarak yazar.

#!/bin/bash 
var=2
echo “Merhaba $varecho ‘Merhaba $var

Yönlendirme Karakterleri

ls > dosya.txt : dosyaya yazmak

sort < dosya.txt > sirali.txt : dosyayı sıralayıp yazmak

date >> sirali.txt : dosyanın sonuna ekleme

Klavyeden değer girmek

#!/bin/bash 
 clear 
echo " Adınızı Girin" 
read name  
echo " Yasınızı girin" 
read age 
echo " Cinsiyet girin: K/E" 
read sex 
echo " Siz $age yasında $sex cinsiyetinde  $name adlı kisisiniz "

Örnek

Aynısı echo olmadan read komutu ile:

clear 
read -p "Adınızı girin: " name 
read -p "Yasınızı girin" age 
read -p "Cinsiyet girin" sex 
echo "Siz  $age yasında $sex  $name isimli kişisiniz"

Temiz bosluklar basacak sekilde:

clear 
read -p "Adınızı girin:  " name echo ""
 read -p "Yasınızı girin" age echo "" 
read -p "Cinsiyet girin" sex echo "" 
echo "Siz  $age yasında $sex  $name isimli kişisiniz"

Örnek 2

#!/bin/bash 
echo -n "ilk sayıyı girin> " 
read a 
echo -n "ikinci sayıyı girin> " 
read b 
echo "Aritmetik işlem> " 
sum=$(( $a + $b )) 
echo "a ve b toplam $sum" 

IF

if [[ <şart> ]]; then
    komutlar
elif [[ <şart> ]]; then   #opsiyonel
    komutlar
else #opsiyonel
    komutlar
fi

If Örnek

if [ $fruit = "elma" ] then echo " Elmalar..." 
elif [ $fruit = "armut"] then echo " Armutlar..." elif [ $fruit = "muz" ] then echo " Muzlar" 
else echo " Geriye Portakal kaldı!" 
fi

Dosya Karşılaştırmaları

  • -e : dosya bulunur(exist)

  • -f : sıradan –regular- dosyadır

  • -s : boş olmayan (boyu >0) dosyadır

  • -d

    : klasördür.

  • -w : dosyaya yazma hakkı vardır.

  • -r : dosyayı okuma hakkı vardır.

  • -x : dosyayı çalıştırma hakkı vardır.

If Örneği

#!/bin/bash
echo -n "Enter file name> "
read file
# Use elif in bash for the “else if” construct.
# The “>>” in the example is output redirection with appending.
# The output of the ls command will be appended to the file.
if [ -w "$file" ]; then
    ls >> $file
    echo "More input has been appended"
elif [ -e "$file" ]; then
    echo "You have no write permission on $file"
else
    echo "$file does not exist"
fi

If Örneği-2

#!/bin/bash
if [[ $1 > 0 && $(($2 % 10)) != 0 ]]; then
    echo Operands are valid
    let “a = $2 % 10” 
    let “r = $(($1 * $2)) / $aecho "expression value is $r"
else
    echo "Operand problem"
fi

If Örneği-2-2

#!/bin/bash
if [ $# != 2 ]; # or, if ( test $# != 2 )
then
  echo “Usage: $0 integer1 integer2”
else
	echo “Doing arithmetic>  “
	r=$(($1 + $2)) ; echo “the sum  "$1" + "$2“  is $r
	r=$(($1 - $2)) ; echo "the subtraction "$1" - "$2" is $r“
	r=$(($1 * $2)) ; echo "the product $1 * $2 is $r
	if [ $2 -ne 0 ] ; then
  		r=$(($1 / $2)) ; echo "the division $1 / $2 is $r"
	else
  		echo "the division $1 / $2 is impossible"
	fi
fi

Case

case $filename in
    *.f)
    echo “Fortran 77 source kaynak dosyası”
    ;;
    *.c)
    echo “C source kaynak dosyası”
    ;;
    *.py)
    echo “Python script dosyası”
    ;;
    *)                 #optional, indicates default
    echo  “Bu dosya türünü bilmiyorum”
    ;;
esac

For Loop

  1. Kullanımı:
for degisken in iterator
	do
		komutlar
	done
for VAR in {VAR value list} ; do
		{ code }
	done
for (( i=0; i<5; i++ )) do
		{ code }
	done
for people in $1 $2 $3 $4; do         # using command line arguments
		echo $people
	 done
for people in $*; do # using all command line arguments
		echo $people
	 done
  1. Kullanımı
for (( i=0; i<$IMAX;i++ )); do
     echo $name”.”$i
done

Bash scripting slide Break başlığı

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment