Praktikum IV Shell Programming
PRAKTIKUM IV
I. II.
III.
Judul Dasar Pemrograman Shell BASH Tujuan 1. Memahami teknik pemrograman Shell dalam sistem operasi Linux 2. Memahami jenis-jenis variabel dalam Shell 3. Mengetahui jenis-jenis metakarakter dalam Shell 4. Memahami bentuk pengabungan perintah Linux dalam program Shell 5. Memahami konsep Shell interaktif 6. Mengetahui environment Shell Dasar Teori 1. Shell Shell adalah program khusus yang bisa digunakan untuk berinteraksi dengan kernel. Kernel yang dimaksud adalah kernel sistem operasi yang sedang aktif. Shell merupakan salah satu dari sekian banyak bahasa pemrograman. Shell memiliki sebuah keunikan tersendiri, Karena berjalan disebuah platform Linux atau Unix, dan memiliki konsep perintah tingkat tinggi. Shell juga dikenal dengan bahasa “command line processing” ini karena sintak yang digunakan di dalam pemrograman shell merupakan perintah-perintah dasar dari Linux atau Unix. Selain itu juga sintak Shell dapat langsung dieksekusi langsung pada terminal console Linux atau Unix. Di dalam system operasi Linux atau Unix tipe-tipe shell sangat beragam. Berikut ini macam-macam nama shell dalam Linux. Shell BASH (Bourne-Again Shell)
Developer Brian Fox dan Chet Ramey
CSH (C Shell)
Bill Joy
KSH (Korn Shell) TCSH
David Korn
Lokasi Keterangan Free Software Shell paling umum Foundation digunakan di semua system operasi Linux Universitas Shell yang Berkeley Mengadopsi California perintah pemrograman C AT&T Labs Shell yang merupakan pengembangan UNIX C Shell
Untuk melihat jenis Shell apa saja yang ada dalam sebuah system operasi Linux dapat dialkukan dengan menuliskan perintah berikut. $ls /etc/shells <enter>
Copyright Ach Subhan KH 2007
1
Praktikum IV Shell Programming
Keterangan : 1. Perintah ls /etc/shells digunakan untuk melihat jenis Shell apa saja yang terinstall dalam sistem operasi Linux yang digunakan. jika yang ada dalam direktori tersebut kurang dari daftar yang ada di table maka perlu ditambahkan dengan menginstall Shell yang diinginkan. Sedangkan untuk mengetahui jenis Shell apa yang sedang aktif saat ini, dapat digunakan perintah berikut. $ echo $shell <enter>
Keterangan : 1. Perintah echo $shell digunakan untuk melihat jenis Shell yang sedang aktif saat ini. 2. Bekerja Dengan Shell Pada saat seorang user login di Linux, atau berada dalam sebuah terminal console Linux, pada saat itu juga di terminal console, user dapat menuliskan sebuah skrip Shell dan kemudian akan langsung dieksekusi. Konsep inilah yang kemudian dikenal dengan Command Line Processing. Command Line Processing dalam sebuah sistem pemrogram disebut juga dengan Shell interaktif. Ini merupakan salah satu cara bekerja dengan Shell. Selain itu juga skrip Shell dapat dituliskan ke dalam sebuah file dan kemudian dipanggil untuk dieksekusi, konsep ini disebut dengan program Shell. 2.1 Shell Interaktif Shell interaktif adalah skrip Shell yang langsung dijalankan pada terminal console Linux. Cara ini sebenarnya bisa memudahkan seorang user untuk mencoba apakah skrip Shell yang dimaksud telah ditulis dengan benar, dan keluaran yang dihasilkan juga telah sesuai dengan yang diinginkan. Hal lain lagi dari proses Shell interaktif ini kemungkinannya adalah bahwa user hanya membutuhkan proses yang sekali saja. Berikut ini contoh Shell interaktif dalam terminal consol Linux : $ echo $PATH ‘enter’ /home/gsa12/bin:/usr/ucb:/usr/bin:/usr/local/bin:.
Keterangan : 1. echo $PATH adalah perintah untuk menampilkan isi yang ada dalam variable yang bernama PATH. Variabel berisi daftar beberapa path yang dipisahkan dengan tanda ‘:’.
Copyright Ach Subhan KH 2007
2
Praktikum IV Shell Programming
Contoh lain lagi dari Shell interaktif adalah : Tulis kode berikut ini langsung diterminal console case “$-” in *i*) echo inilah shell interaktif ;; *) echo ini juga shell interaktif ;; esac
keluaran dari Shell interaktif tersebut adalah : ini shell interaktif
2.2 Program Shell Selain Shell interaktif skrip Shell juga bisa ditulis dalam sebuah file dan kemudian dieksekusi dengan cara memanggil file tersebut. File ini juga bisa dengan nama program Shell atau skrip Shell. Ditinjau dari hasil eksekusi tidak ada yang berbeda antara skrip Shell dengan Shell interaktif. Yang berbeda adalah cara penulisan dan eksekusi. Berikut ini contoh skrip Shell : Tulis skrip berikut dengan menggunakan editor VIM dengan nama coba. #!/bin/bash echo “halo $LOGNAME , senang bertemu denganmu” echo “direktori anda saat ini `pwd`” echo “anda bekerja di mesin `uname –a`”
kemudian setelah file disimpan dan keluar dari editor $ chmod 755 coba ‘enter’ $ ./coba ‘enter’
Keterangan : 1. echo perintah ini digunakan untuk menampilkan sebuah string. Dalam string tersebut mengandung variabel LOGNAME yang merupakan variabel environment yang berisi nama user yang login. 2. Baris kedua sama juga dengan perintah baris pertama, namun string yang ditampilkan mengandung hasil keluaran dari perintah PWD, dimana perintah PWD adalah untuk menampilkan direktori kerja saat ini. 3. Baris ketiga adalah menampilkan string yang mengandung hasil keluaran dari perintah uname –n, dimana perintah ini berfungsi untuk menampilkan informasi tentang spesifikasi versi kernel. 4. chmod 755 adalah perintah di Linux untuk merubah tipe file menjadi file eksekusi.
Copyright Ach Subhan KH 2007
3
Praktikum IV Shell Programming
5. ./coba adalah perintah untuk menjalankan skrip shell dengan memanggil nama file yaitu coba. 3. Variabel Variabel adalah tempat untuk menyimpan sebuah data. Seperti halnya bahasa pemrograman yang lain, Shell juga memiliki variabel. Ada dua jenis variabel dalam Shell yaitu variabel lokal dan variabel environtment. 3.1 Varibel Lokal Yang dimaksud dengan variabel lokal adalah variabel yang nilainya langsung diisikan. Tipe nilai dari variable ini bisa bermacam-macam, ada yang bertipe numerik dan ada juga yang bertipe karakter atau alphanumerik. Di dalam memberikan nama sebuah varibel, yang harus diperhatikan adalah nama variabel berupa karakter alphanumeric atau bisa juga diawali dengan karakater garisbawah(_), setelah itu baru bisa diikuti dengan jenis karakter yang lain. Contoh penamanaan variabel : Penamaan variabel yang salah 5nama 4_hasil \nilai
Penamaan variabel yang benar Nama _hasil4 _nilai
Dalam pemrograman Shell untuk mendefinisikan sebuah variabel tidak perlu diberikan bentuk atau jenis variabel tersebut, tidak seperti di pemrograman C atau Pascal dimana variabel yang akan dibuat perlu didefinisikan terlebih dahulu tipenya, Dan di dalam lingkup Shell tipe variabel hanya ada satu jenis yaitu tipe string. Contoh dalam penulisan variabel dan pemberian nilai dalam potongan program Shell sebagai berikut : ucapan=selamat hasil=dua awal=”tidak ada” echo $ucapan echo $hasil echo $awal
Keterangan : 1. Baris pertama mendefinisikan variabel bernama ucapan dan memberikan nilai dari variabel sama dengan selamat. 2. Mendefinisikan variabel bernama hasil dengan nilai sama dengan dua. 3. Mendefinisikan variabel bernama awal dengan nilai sama dengan “tidak ada”. Untuk nilai variabel ini harus diberi tanda petik karena nilai yang diberikan mengandung karakter spasi. 4. Baris ke-4 menampilkan isi dari variabel yang bernama ucapan. 5. Baris ke-5 menampilkan isi dari variabel yang bernama hasil.
Copyright Ach Subhan KH 2007
4
Praktikum IV Shell Programming
6. Baris ke-6 menampilkan isi dari variabel yang bernama awal. Pada potongan kode tersebut tampak ada penggunaan tanda ‘$’ sebelum nama variabel dituliskan. Tanda ‘$’ memiliki makna sebagai pengarah bahwa kata tersbut adalah sebuah variabel yang memiliki nilai. Contoh jika diinginkan sebuah variabel dengan nama tia dan nilainnya sama dengan halo maka dapat dituliska sebagai berikut : tia=halo
Untuk mengakses isi dari variabel tia digunakan tanda ‘$’ sebagai pengarah, sehingga untuk menampilkan isi dari variabel tia dapat dituliskan : echo $tia
Selain itu juga ada beberapa batasan dalam menuliskan variabel dan pemberian nilai variabel di dalam program Shell. Yang pertama adalah bahwa nilai sebuah variabel tidak boleh mengandung spasi, jika memang diperlukan maka dapat digunakan tanda petik untuk mendefinisikan nilai variabel. Contoh : tia=halo (penulisan yang benar) tia= halo (penulisan yang salah karena mengandung spasi) edi=satu dua (penulisan yang salah karena mengandung spasi) edi=”satu dua”(penulisan yang benar)
Kedua adalah batasan mengenai penggunaan nilai variabel yang mengandung metakarakter. Metakarakter adalah satu karakter yang memiliki makna perintah dalam Shell. Sehingga jika dalam sebuah string terdapat metakarater maka akan diinterprentasikan sebagai sebuah perintah. Untuk lebih jelas mengenai metakarakter ada dalam bagian lain dari bab ini. 3.2 Variabel Environment Environment variabel adalah variabel yang merupakan bawaan dari Shell itu sendiri, biasanya variabel ini berisi nilai-nilai yang merupakan konfigurasi standar dalam lingkungan program Shell. Aturan penulisan dari environment variable adalah semua nama variabel menggunakan huruf kapital. lingkup dari variabel environment adalah bersifat GLOBAL. Artinya variabel environment berlaku untuk semua Shell yang ada. Contoh variabel environment adalah sebagai berikut : LOGNAME=shell14 (variabel yang berisi nama login) SHELL=/bin/bash (variabel yang berisi nama shell yang aktif) HOME=/home/shell14 (variabel yang berisi nama direktori user) USER=shell14 (variabel yang berisi nama user)
Copyright Ach Subhan KH 2007
5
Praktikum IV Shell Programming
Untuk mengetahui variabel apa saja yang ada dalam kelompok environment variable dapat digunakan perintah berikut: $ env ‘enter’
Merubah nilai variabel environment Untuk merubah nilai dari variabel environment dapat dilakukan dengan menggunakan perintah sebagai berikut : $ export LOGNAME=mrbee ‘enter’
kemudian hasilnya dapat dilihat dengan menggunakan perintah : $ env | grep “LOGNAME”
Menghapus variabel environment Variabel environment juga bisa dihapus atau dihilangkan dari lingkungan daftar variabel environment dengan menggunakan perintah berikut : $ unset LOGNAME 3.3 Ruang Lingkup Variabel Dalam Shell Yang dimaksud dengan ruang lingkup adalah sejauh mana sebuah variabel yang didefinisikan berlaku bagi program shell dibuat. Dipemrograman lain seperti C ada variabel lokal yang hanya berlaku di dalam sebuah file skrip C, ada juga variabel global yang bisa berlaku bagi skrip C yang lain walaupun berada dalam file lainnya. Di program Shell lingkup dari sebuah variabel yang didefinisikan berlaku lokal. Lokal yang dimaksud adalah dalam suatu Shell saja. Jika dalam sebuah Shell dibuat lagi sub-Shell maka variabel tersebut sudah tidak berlaku nilainya. Sedangkan variabel environment memiliki lingkup GLOBAL, yang dimaksud dengan global adalah semua variabel berlaku dan bernilai sama disemua file skrip Shell yang dibuat. Contoh variabel LOGNAME yang memiliki nilai nama login user, akan mempunya nilai yang sama walaupun diakses dari file skrip lainnya. 3.4 Parameter posisional Parameter posisional adalah sebuah nilai yang diberikan dimana nilai tersebut dianggap sebagai isi dari sebuah variabel dalam serangkaian argumen dari sebuah command line. Contoh berikut adalah gambaran dari definisi argumen : $ set bee ivo ant ‘enter’
keterangan : 1. set merupakan sebuah perintah 2. bee adalah argumen ke 1. Copyright Ach Subhan KH 2007
6
Praktikum IV Shell Programming
3. ivo adalah argumen ke 2. 4. ant adalah argumen ke 3. BASH Shell memiliki beberapa simbol yang merupakan representasi dari posisi sebuah variabel dalam serangkaian argumen. Berikut ini simbol posisional parameter : Parameter posisional Arti $0 Nama skrip shell yang dijalankan $1-$9 Melambangan posisinal parameter 1 sampai 9 $# Melambangkan jumlah posisional parameter $* Melambangkan semua posisional parameter yg ada $@ Sama dengan $* terkecuali ada tanda “” “$*” Sama dengan S* berlaku didalam “” “S@” Pada contoh kasus berikut : $ set bee ivo ant ‘en ‘enter’ $ echo $* ‘enter’ bee ivo ant $ echo $1 ‘enter’ bee $ echo $# ‘enter’ 3
keterangan : 1. perintah set digunakan untuk memberikan nilai pada posisional parameter. 2. $* menyimpan nilai dari semua posisional variabel berturut-turut bee ivo ant 3. $1 menyimpan nilai dari posisional varabel ke-1 yaitu bee 4. $# menyimpan nilai jumlah posisional parameter yaitu sebanyak 3.
3.5 Varibel khusus Shell juga memiliki variabel khusus yang terdiri sebuah karakter tunggal. Karakter tunggal yang memiliki makna dalam lingkungan Shell tersebut adalah : Variabel $ ? !
Copyright Ach Subhan KH 2007
Arti PID dari Shell Option sh yang sedang aktif Status exit value untuk perintah yang terakhir dijalankan PID proses terakhir yang berjalan di background
7
Praktikum IV Shell Programming
Dengan adanya karakter tunggal yang merupakan variabel khusus ini user dapat memanfaatkan untuk mempersingkat penulisan. Contoh : $ echo PID dari shell ini adalah $$ ‘enter’ PID dari shell ini adalah 212
Keterangan : 1. Tanda $ pertama adalah pengarah pada sebuah variabel 2. Tanda $ kedua adalah variabel PID Shell. 4. Metakarakter Dalam Shell Metakarakter adalah sebuah karakter yang memiliki arti tertentu. Dalam Shell juga dikenal beberapa metakarakter. Karena metakarakter juga ada dalam Shel maka yang perlu diperhatikan adalah kesalahan dalam penanganan sebuah karakter. Dalam sebuah kasus mencetak sebuah strin di layar monitor, terkadang terjadi kasus dimana dari salah satu karakter dalam string tersebut merupakan metakarater. Karena mengandung metakarakter maka Shell akan menginterpretasikan string tersebut tidak seperti yang diharapkan. Contoh kasus : $ echo don’t miss it ‘enter’ > ‘ ‘enter’ dont miss it
Keterangan : 1. Tanda ‘ dinterpretasikan sebagai serangkaian string sehingga Shell akan menunggu sampai tanda ‘ berikutnya untuk berhenti dan kemudian menampilkannya. Jika maksudnya adalah untuk mencetak string “don’t miss it” maka yang perlu diperhatikan adalah $ echo don\’t miss it ‘enter’ don’t miss it
Keterangan : 1. \ merupakan karakter yang meloloskan interpretasi tanda ‘ yang merupakan metakarakter dalam Shell. 2. Karakter \ dikenal dengan istilah quoting dalam Shell
Copyright Ach Subhan KH 2007
8
Praktikum IV Shell Programming
Berikut tabel daftar metakarakter yang ada dalam lingkungan Shell : Metakarakter \ & ; $ ? [abc] [!abc] * (perintah) {perintah} > < Spasi *[ ]? tab
Arti Literal, karakter berikutnya akan dimaknai sebagai karakter Proses yang berjalan di background (DAEMON) Tanda pemisah antara dua buah perintah Karakter subtitusi variabel Matching satu karakter Matching satu karakter dalam sekumpulan karakter Matching satu karakter tidak dalam sekumpulan karakter Matching 0 karakter atau lebih Sekumpulan perintah yang dijalankan di sub-Shell Sekumpulan perintah yang dijalankan di Sheel saat itu Pengarah output Pengarah input Karakter spasi Metakarakter Shell untuk operasi manipulasi namafile Karakter tab
5. Quoting Quoting adalah mekanisme untuk melindungi metakarakter dari interpretasi sebagai sebuah simbol. Shell juga mempunya beberapa karakter yang difungsikan untuk melindungi metakarkater agar tetap diinterpretasikan sebagai karakter biasa. Ada tiga karakter quoting dalam Shell, yaitu : 1. Backslash ( \ ) 2. Petik tunggal ( ‘ ) 3. Petik ganda ( “ ) Contoh quoting dalam Shell : $ echo don\’t miss it don’t miss it $ echo “don’t miss it” don’t miss it
Keterangan : 1. Tanda \ menandakan katakter ‘ yang mengikuti bukan sebuah metakarakter 2. Pengunaan tanda petik double “ juga berfungsi melindungi interpretasi karakter ‘ sebagai metakarakter
Copyright Ach Subhan KH 2007
9
Praktikum IV Shell Programming
IV.
Percobaan Petunjuk Umum : 1. Buat direktori untuk masing-masing peserta praktikum dengan nama sesuai kelompok atau NRP peserta di user direktori masing-masing sesuai arahan dosen/instruktur lab. 2. Untuk semua percobaan lakukan di direktori masing-masing siswa sesuai arahan dari dosen/instruktur lab. 3. Format laporan sementara setiap percobaan terdiri dari : - Output/respon dari skrip - Error dan perbaikannya jika ada - Penjelasan singkat mengenai skrip (seperti keterangan pada bagian dasar teori). 4. Untuk Shell yang bersifat interaktif catat respon untuk masing-masing baris yang dieksekusi 5. Jika diperlukan bisa menjelaskan dengan bentuk flowchart 6. Bentuk penulisan data ditabelkan. 7. Untuk semua percobaan harap diperhatikan tanda-tanda berikut : • Tanda $ diawal mengindikasikan skrip interaktif • Tanda #!/bin/bash (shbang line) mengindikasikan skrip harus ditulis dalam sebuah file dan disimpan dengan nama percobaannya contoh nama “percobaan_411”. 8. Selamat berkerja 4.1 Shell interaktif Percobaan 411 $ echo halo ‘enter’
Percobaan 412 $ > > > > >
if grep “root” /etc/passwd then echo “disini ada user yang bernama root” else echo “user tersebut tidak ada” fi
Percobaan 413 $ if grep “root” /etc/passwd; then echo “disini ada root”; else echo “tidak ada”; fi
Percobaan 414 $ echo “hari ini adalah `date`”
percobaan 415 $ echo “saat ini tahun `date +%y` tanggal `date +%d` bulan `date +%m`”
Copyright Ach Subhan KH 2007
10
Praktikum IV Shell Programming
Keterangan : 1. penjelasan %m, %d, %y, dll dapat di lihat di Linux dengan menggunakan perintah $ man date
4.2 Program Shell Tulis kode skrip shell untuk masing-masing percobaan dengan editor vim dan beri nama file, kemudian lakukan langkah untuk merubah file permission dan jalankan skripnya (baca petunjuk di dasar teori). Percobaan 421 #!/bin/bash echo “selamat datang $USER” echo “di shell programming”
Percobaan 422 #!/bin/bash echo “Shell yang digunakan adalah $SHELL” echo “saat ini jam `date +%T`” echo “tanggal `date +%D`”
Percobaan 423 #!/bin/bash echo “hari ini tanggal `date +%d` bulan `date +%m` tahun `date +%y`” echo “hore aku bisa”
Percobaan 424 #!/bin/bash clear echo “nama login anda $LOGNAME” echo “saat ini anda berada di direktori `pwd`” echo “waktu sekarang adalah `date +%T`” echo “selamat bekerja”
Percobaan 425 #!/bin/bash clear echo “komputer anda telah menyala selama `uptime`” echo “jumlah user yang login sebanyak `who | wc -l` user” echo “anda login dengan user $LOGNAME” echo “di shell $SHELL”
4.3 Variabel Lokal Percobaan 431 $ nilai=80 $ hasil=bagus $ echo $nilai adalah nilai yang $hasil
Copyright Ach Subhan KH 2007
11
Praktikum IV Shell Programming
Percobaan 432 $ $ $ $ $ $
kelas= telkom mata kuliah=shell _b987=shell programming echo $kelas echo $mata kuliah echo $_b987
Percobaan 433 #!/bin/bash clear nama=andi kelas=”dua telkom A” program_studi=Telekomunikasi mata_kuliah=”Shell programming” echo nama : $andi echo kelas : $kelas echo program studi : $program_studi echo mata kuliah : $mata_kuliah
Percobaan 434 #!/bin/bash clear nilai1=80 nilai2=90 echo $nilai1 + $nilai2 echo “wah ternyata bukan angka tapi string”
Percobaan 435 #!/bin/bash clear data=’date +%D’ jumlah=`who | wc -l` echo “tanggal $data ada $jumlah user yang login”
Percobaan 436 #!/bin/bash data=$(whoami) tgl=$(date +%D) echo “$data login pada tanggal $tgl”
4.4 Environment Variable Percobaan 441 $ env
Dari respon sistem di layar monitor buat tabel dan catat isi dari variable berikut : LOGNAME USER SHELL HOME PWD
Copyright Ach Subhan KH 2007
12
Praktikum IV Shell Programming
Percobaan 442 $ export USER=andi $ env
Dengan menggunakan perintah pada percobaan 441 catat nilai dari variabel environment USER saat ini. Percobaan 443 $ unset USER
Dengan menggunakan perintah pada percobaan 441 check variabel environment bernama USER. Percobaan 444 $export USER=alphine #!/bin/bash echo “nama login anda $LOGNAME” echo selamat datang $USER echo “user direktorimu adalah $HOME” echo “anda berjalan di shell $SHELL” echo direktori saat ini $PWD
Percobaan 445 #!/bin/bash nama=aldo echo isi dari variabel nama adalah $nama nama=budi echo sekarang variabel nama berisi $nama
Percobaan 446 $ $ $ $ $
set roni budi ali echo $* echo $1 echo $3 echo S#
Percobaan 447 Tulis skrip berikut ini dan simpan dengan nama percobaan_447 #!/bin/bash echo nama dari skrip ini adalah $0 echo variabel pertama isinya $1 echo variabel posisi kedua berisi $2 echo $3 adalah isi dari varibel pada posis ke 3 echo jumlah semua variabel adalah sebanyak $#
Jalankan skrip dengan perintah : $ ./percobaan_447 andi ali dian
Copyright Ach Subhan KH 2007
13
Praktikum IV Shell Programming
4.5 Metakarakter dan Quoting Percobaan 451 $ echo hari ini hari jum’at (catat respon perintah tsb) $ echo hari ini hari jum\`at (catat respon perintah tsb) $ echo “hari ini hari jum’at” (catat respon perintah tsb)
Percobaan 452 #!/bin/bash echo ~ echo direktori anda ~ echo “direktori anda ~”
Percobaan 453 $ echo apa isi percobaan_45? $ echo apa isi percobaan_45\?
Percobaan 454 #!/bin/bash user=andi echo “hai $user i’m glad to meet you” echo hai $user i\’m glad to meet you echo “apakah kamu punya teman “special”?” echo “\”special\” ?? teman apa itu?” echo ‘ya pokoknya “special”’
V. Tugas 1. Berikan analisa hasil percobaan beserta penjelasan yang lebih detail mengenai masing-masing percobaan dalam laporan resmi.
Copyright Ach Subhan KH 2007
14