Workshop Labsi
Pemrograman Shell Linux Husni
[email protected] husni.trunojoyo.ac.id
Garis Besar
Shell Linux
Pemrograman Shell
Contoh-contoh
Shell
Tempat interaksi antara pengguna dan Linux Penerjemah atau Pengeksekusi Program (Interpreter, Executor) Antarmuka teks (command line) Banyak digunakan untuk administrasi sistem dan mengelola file Hanya ada di sistem Unix (Linux). Windows tak punya tool canggih seperti di Linux Ditandai oleh prompt $ (user) atau # (root)
Menggunakan Shell
Interaktif Satu atau lebih perintah shell diketik langsung pada prompt Hasil eksekusi ditampilkan langsung setelah (atau saat) eksekusi perintah
Menulis skrip (shell scripting) Pengguna menulis beberapa baris kode (program, skrip) File skrip dieksekusi
Interaktif
date; whoami; pwd
ps
top
ls -la
echo ”Kereeeen”
a=10; echo $a
b=109; echo "B bernilai :" $b
Manual Perintah Shell
Gunakan ”man”
man ls
man ps
man file
Bagaimana mencari file dengan ekstensi tertentu? Misalnya *.jpg?
find . -name '*.jpg'
file nama_file
cat nama_file
more nama_file
grep keren nama_file
man grep
Pipeline
Echo ”aris joko faza fenny ubaid”
Echo ”aris joko faza fenny ubaid” | tr ” ” ”\n”
Echo ”aris joko faza fenny ubaid” | tr ” ” ”\n” | sort Echo ”aris joko faza fenny ubaid” | tr ” ” ”\n” | sort -r
Redirection
date > sekarang.txt
cat sekarang.txt
date >> sekarang.txt
cat sekarang.txt
Menulis Skrip Shell
Tulis skrip menggunakan suatu Text Editor. Simpan sebagai file teks biasa, ekstensi .sh Ubah agar file skrip .sh tersebut bersifat executable:
Baris pertama harus: #!/bin/bash
Ubah agar exeutable: chmod +x nama_file.sh
Eksekusi file skrip:
. /nama_file.sh
Skrip Pertama: 01.sh
Tulis 2 baris skrip berikut: #!/bin/bash echo "Halo, Saya belajar pemrograman shell Bash Linux."
Simpan sebagai skrip01.sh
Pada shell prompt, ketik:
chmod +x skrip01.sh
. /skrip01.sh
Contoh 02: 02.sh #!/bin/bash a=5.66 b=8.67 c=`echo $a + $b | bc` echo "$a + $b = $c"
Contoh 03: 03.sh #!/bin/bash echo "Halo, $LOGNAME" echo "Tanggal sekarang `date`" echo "Pengguna: `who i am`" echo "Direktori aktif `pwd`"
Contoh 04: dir.sh #!/bin/bash echo ”Daftar file Anda: ”; ls -l echo ”Thank U very Much”;
Contoh05 : secho.sh #!/bin/sh # Nama file skrip: kedua.sh # Apa yang dihasilkan skrip ini? echo "Halo
dunia "
# Halo dunia
echo "Halo dunia " echo "Halo * dunia”;
echo Halo * dunia
echo Halo
echo "Halo" dunia
echo Halo "
dunia; " dunia;
echo `halo` dunia;
echo "Halo \"*\" dunia " echo 'hello' dunia
Variabel
Tidak dideklarasikan
Tidak ada tipe data
Tanpa spasi sebelum dan setelah ”=”
Case sensitive
A=10;
Nama=”Nama anda”;
nama = siapa anda
Contoh06: var1.sh #!/bin/sh # Nama file skrip: var1.sh MY_MESSAGE="Halo dunia" echo $MY_MESSAGE
Contoh07: var2.sh #!/bin/sh # Nama file skrip: var2.sh echo Siapa anda? read MY_NAME echo "Hello $MY_NAME - hope you're well."
Contoh08: var3.sh #!/bin/sh echo "MYVAR is: $MYVAR" MYVAR="hi there" echo "MYVAR is: $MYVAR" $ MYVAR=hello $ export MYVAR $ ./var3.sh
Contoh09: var4.sh #!/bin/sh echo "Siapa nama anda?" read USER_NAME echo "Halooo $USER_NAME" echo "Buat file bernama $USER_NAME_file" touch $USER_NAME_file
#!/bin/sh echo "Siapa nama anda?" read USER_NAME echo "Halooo $USER_NAME" echo "Buat file bernama ${USER_NAME}_file" touch ${USER_NAME}_file echo "Test 1 2 3" >> "${USER_NAME}_file" cat "${USER_NAME}_file"
Karakter Escape
Bagaimana menampilkan Halo
dunia?
Bagaimana menampilkan Halo ”dunia”
$ echo "Halo dunia"
$ echo "Halo \"dunia\""
$ echo "A quote is \", is \\, backtick is \`."
backslash
$ echo "A few spaces are ; dollar is \$. \$X is ${X}."
Perulangan (Looping)
for
while
until
do done
Contoh10: loop1.sh #!/bin/bash for i in 1 2 3 4 5 do echo "Welcome $i times" done
for i in 1 2 3 4 5 dapat diganti for i in {1..5}
Contoh11: loop2.sh #!/bin/bash echo "Bash version ${BASH_VERSION}..." for i in {0..10..2} do echo "Welcome $i times" done
Bentuk 3 Ekspresi #!/bin/bash for (( c=1; c<=5; c++ )) do echo "Welcome $c times..." done
Infinite Loop #!/bin/bash for (( ; ; )) do echo "infinite loops [ hit CTRL+C to stop]" done
Looping: While #!/bin/bash x=1 while [ $x -le 5 ] do echo "Welcome $x times" x=$(( $x + 1 )) done
Looping: while #!/bin/bash COUNT=6 # bash while loop while [ $COUNT -gt 0 ]; do echo Value of count is: $COUNT let COUNT=COUNT-1 done
Faktorial #!/bin/bash counter=$1 factorial=1 while [ $counter -gt 0 ] do factorial=$(( $factorial * $counter )) counter=$(( $counter - 1 )) done echo $factorial
Looping: Until #!/bin/bash COUNT=0 until [ $COUNT -gt 5 ]; do echo Value of count is: $COUNT let COUNT=COUNT+1 done
Array #!/bin/bash ARRAY=( 'Debian Linux' 'Redhat Linux' Ubuntu Linux )
# ambil jumlah elemen array ELEMENTS=${#ARRAY[@]} for (( i=0;i<$ELEMENTS;i++)); do echo ${ARRAY[${i}]} done
Test: if #!/bin/bash directory="./BashScripting" # cek direktori, atau atau tidak if [ -d $directory ]; then echo "Directory exists" else echo "Directory does not exists" fi
Perbandingan #!/bin/bash NUM1=2 NUM2=2 if [ $NUM1 -eq $NUM2 ]; then echo "Both Values are equal" else echo "Values are NOT equal" fi
Perbandingan #!/bin/bash NUM1=2 NUM2=1 if [ $NUM1 -eq $NUM2 ]; then echo "Both Values are equal" elif [ $NUM1 -gt $NUM2 ]; then echo "NUM1 is greater then NUM2" else echo "NUM2 is greater then NUM1" fi
Fungsi function name(){ Commands } ---- atau ---name(){ Commands return $TRUE }
Fungsi /bin/bash function function_B { echo Function B. } function function_A { echo $1 } function function_D { echo Function D. } function function_C { echo $1 }
Memanggil Fungsi # Lewatkan parameter ke fungsi A function_A "Function A." function_B # Lewatkan parameter ke fungsi C function_C "Function C." function_D
Case #!/bin/bash echo "Apa bahasa favorit Anda?" echo "1) bash" echo "2) perl" echo "3) phyton" echo "4) c++" echo "5) Mene ketehe !" read case;
#simple case bash structure case $case in 1) echo "Anda memilih bash";; 2) echo "Anda memilih perl";; 3) echo "Anda memilih phyton";; 4) echo "Anda memilih c++";; 5) exit esac