Workshop Labsi
Pemrograman Shell Linux
Husni
husni@if.trunojoyo.ac.id
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 dunia; echo "Halo" dunia
echo Halo " " 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 ", backslash
is , backtick is `."
$ echo "A few spaces are    ; dollar
is $. $X is ${X}."
Perulangan (Looping)
 for do done
 while
 until
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

Pemrograman shell2