Praktikum
2
Pembuatan Bash Script
A. T U J U A N 1. Menggunakan
History untuk mengedit kembali instruksi yang telah
dilakukan. 2. Menggunakan perintah Filter untuk memproses standard input dan menampilkan hasilnya pada layar (standard output). 3. Menggunakan Job Control untuk mengeksekusi program, baik proses background maupun foreground. 4. Pembuatan Bash Script yang berisi koleksi program yang dapat dieksekusi.
B. DASAR TEORI History History diadaptasi dari C-Shell, yaitu catatan dari semua instruksi yang sejauh ini telah dilakukan. Catatan ini dapat dilihat sebagai history, kemudian dapat dipilih kembali, diedit dan dieksekusi. History memudahkan pemakai untuk mengedit kembali instruksi kompleks dan panjang, terutama bila terjadi kesalaha pada penulisan instruksi maupun parameter. Navigasi pada daftar history menggunakan karakter kontrol sebagai berikut : ^P (Ctrl-P)
melihat instruksi sebelumnya
^N (Ctrl-N) melihat instruksi berikutnya !!
eksekusi kembali instruksi sebelumnya
!! -3
instruksi sebelumnya akan diulang
!!88
ulangi instruksi no 88
8
Filter Filter adalah utilitas Linux yang
dapat mem proses standard input (dari
keyboard) dan menampilkan hasilnya pada standard output (layar). Contoh filter adalah cat, sort, grep, pr, head, tail, paste dan lainnya. Pada sebuah rankaian pipa : P1
|
P2
|
P3 ........ |
Pn-1 |
Pn
P2 sampai dengan Pn-1 mutlak harus utilitas Linux yang berfungsi sebagai filter. P1 (awal) dan Pn (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya who, ls, ps, lp, lpr, mail dan lainnya. Beberapa perintah shell Linux yang digunakan untuk proses penyaringan antara lain : •
Perintah grep Digunakan untuk menyaring masukannya dan menampilkan baris-baris yang hanya mengandung pola yang ditentukan. Pola ini disebut regular
expression. Perintah wc Digunakan untuk menghitung jumlah baris, kata dan karakter dari barisbaris masukan yang diberikan kepadanya. Untuk mengetahui berapa baris gunakan option –l, untuk mengetahui berapa kata, gunakan option –w dan untuk mengetahui berapa karakter, gunakan option –c. Jika salah satu option tidak digunakan, maka tampilannya adalah jumlah baris, jumlah kata dan jumlah karakter. •
Perintah sort Digunakan untuk mengurutkan masukannya berdasarkan urutan nomor ASCII dari karakter.
•
Perintah cut Digunakan masukannya,
•
untuk
mengambil kolom
tertentu
dari baris-baris
yang ditentukan pada option –c.
Perintah uniq Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi, biasanya digabungkan dalam pipeline dengan sort.
9
Job Control Job adalah sebuah eksekusi program yang diberikan kepada kernel. Sebuah job dianggap selesai, bila eksekusi program tersebut berakhir. Eksekusi job adalah sama dengan eksekusi program, baik proses Background maupun proses Foreground. Bash Script Bash script adalah file yang berisi koleksi program yang dapat dieksekusi. Untuk eksekusi bash script menggunakan tanda . (dot) sebelum file bash script yang berarti eksekusi shell dan tanda
./
berarti file bash script barada pada
direktori aktual. Secara default dalam Linux menggunakan bash shell. Tabel 2. Jenis Shell Shell
Jenis
/bin/csh atau /usr/bin/csh
C shell
/bin/sh
Bourne shell (bash)
/bin/rsh
Restricted Bourne Shell
/bin/jsh
Bourne shell termasuk jobs control
/bin/ksh
Korn shell
/bin/rksh
Restricted Korn shell
Langkah awal untuk mengetahui shell yang aktif pada sistem yaitu dengan menggunakan perintah ps (report process status) $ps PID TTY 219 tty1 301 tty1
TIME CMD 00:00:00 bash 00:00:00 ps
atau dengan mengetikkan syntak sebagai berikut : $grep nama_user /etc/passwd Hasil dari perintah diatas menunjukkan bahwa bash adalah shell aktif di system, jika disystem ternyata berbeda misalnya csh atau ksh. Maka jenis shell dapat diubah dengan perintah change shell. 10
$chsh Password: New shell [/bin/csh]:/bin/bash Shell changed atau dengan mengetikkan bash $bash kemudian mengetik perintah pada prompt shell sebagai berikut : $echo "Script shell pertamaku di linux" Script shell pertamaku di linux string yang diapit tanda kutip ganda (double quoted) akan ditampilkan pada layar, echo adalah statement (perintah) built-in bash yang berfungsi menampilkan informasi ke standard output yang defaultnya adalah layar. jika diinginkan mengulangi proses tersebut, dapat mengetikkan kembali perintah tadi, tapi dengan fasilitas history cukup menggunakan tombol panah kita sudah dapat mengulangi perintah tersebut, bagaimana jika berupa kumpulan perintah yang cukup banyak, tentunya dengan fasilitas hirtory kita akan kerepotan juga mengulangi perintah yang diinginkan apalagi jika selang beberapa waktu mungkin perintah-perintah tadi sudah tertimpa oleh perintah lain karena history mempunyai kapasitas penyimpanan yang ditentukan. untuk itulah sebaiknya perintah-perintah tsb disimpan ke sebuah file yang dapat kita panggil kapanpun diinginkan. Vi Editor Vi merupakan editor yang paling terkenal di dunia UNIX. Vi ialah kepanjangan
dari "Visual" editor. Untuk menjalan perintah vi, menggunakan sintaks sbb : vi Status Vi Editor Vi mempunyai 2 buah modus, yaitu :
1. Command line
11
Editor vi mengintepretasikan input sebagai instruksi untuk dieksekusi oleh editor, contoh seperti mencari teks, mengganti teks secara otomatis dan lainnya.
2. Editing Editor vi mengintepretasikan input sebagai teks yang akan dimasukkan ke dalam buffer editor. Pada bagian bawah layar akan tampil teks “INSERTING”. Pada awal vi dijalankan, maka program memasuki command mode. Dengan menekan tombol “i” maka akan memasuki editing. Untuk kembali ke command mode, tekan tombol Esc. Notasi yang digunakan CTRL-c, CTRL adalah tombol control pada keyboard, sehingga CTRL-c berarti "control c". CR (Carriage Return) ialah tombol enter. Manipulasi file Tabel 7.1 Perintah vi manipulasi file Tombol :wq :q :q! :w
Fungsi Save file dan exit Keluar dari vi Keluar dari vi tanpa menyimpan Menyimpan file
C. PROSEDUR 1. Masuk ke sistem operasi Linux. 2. Login sebagai stD3XXYYY. 3. Gunakan perintah-perintah pada shell : History , Filter , Job Conrtol, Cat dan penggunaan Vi editor. 4. Catatlah hasil dari setiap perintah pada prosedur no.3 sebagai laporan sementara. 5. Kerjakan soal latihan yang telah disediakan pada modul praktikum.
12
D. PERCOBAAN Percobaan 1 : History 1. Menampilkan file dari direktori aktif $ls 2. Melihat semua file lengkap $ls -l 3. Menampilkan semua file atau direktori yang tersembunyi $ls –a 4. Menampilkan isi suatu direktori $ls /usr 5. Menampilkan isi direktori root $ls / 6. Melihat daftar instruksi yang telah dilakukan dengan perintah history. Daftar instruksi dilengkapi dengan nomor urut yang dapat dijadikan parameter dalam mengedit atau mengulangi instruksi $history 7. Melihat batasan maksimum instruksi yang dapat disimpan $echo $HISTSIZE 8 Selain history, instruksi fc (fix command) juga dapat digunakan $fc –l 9. Instruksi fc dapat menampilkan instruksi antara 2 nomor atau dengan menggunakan kata depan instruksi yang diberikan $fc –l nomor-urut1 nomor-urut2 misal : fc –l 85 88 $fc instruksi1 instruksi2 misal: fc –l uname hostname Percobaan 2 : Filter 1. Perintah grep untuk melihat tipe shell dari user $grep st /etc/passwd $ls /etc | wc –l 2. Perintah grep untuk mencari kata/kalimat dalam file $cat > kelas1.txt Badu Zulkifli Yudi Ade Anisa 13
[Ctrl-d] $grep Yudi kelas1.txt 3. Perintah cat dan sort untuk menampilkan isi beberapa file secara urut $cat > kelas2.txt Budi gama Asep Muklis [Ctrl-d] $cat kelas1.txt kelas2.txt | sort $who | cut –c1-8 4. Perintah cat, sort dan uniq untuk menampilkan isi beberapa file secara urut $cat kelas1.txt kelas2.txt > kelas.txt $cat kelas.txt | sort | uniq Percobaan 3 : Pembuatan Bash Script
Cara 1: Menggunakan editor Vi 1. Membuat file p1.sh $vi p1.sh echo “Program bash script” 2. Mengubah program menjadi executable $ls –l p1.sh $chmod +x p1.sh $ls –l p1.sh 3. Menjalankan script $bash p1.sh $sh p1.sh $.P1.sh $./p1.sh 4. Konvensi dalam pembuatan script shell dinyatakan sebagai #!/bin/bash. $vi p2.sh #!/bin/bash echo “Program 2 bash script” 5. Menjalankan beberapa program shell dalam satu baris instruksi $./p1.sh ; ./p2.sh
atau
./p1.sh ; bash p2.sh
6. Menjalankan script sebagai proses background menggunakan tanda & pada akhir instruksi $./p1.sh & $./p2.sh &
14
Cara 2: Menggunakan perintah cat 1. Membuat file p3.sh $cat >p3.sh #Ini adalah program script saya yang pertama echo Contoh program script echo Ini adalah listing dari direktori #Memanggil perintah ls ls –la echo selesai ^D 2. Menjalankan script $chmod +x p3.sh $./p3.sh $./p1.sh ; cat p3.sh
Percobaan 4 : Job Control 1. Proses forground $ps x 2. Proses background $ps x >hasil $cat hasil 3. Setiap job memiliki PID yag tunggal. Untuk melihat job yang aktif $jobs 4. Membuat file ploop.sh, file ini tdk pernah berhenti kecuali ditekan Ctrl-c $ vi ploop.sh #!/bin/bash while true do sleep 10 echo “Hallo” done 5. Menjalankan file ploop.sh. Program akan menampilkan kata Hallo setiap 10 detik. Untuk keluar program tekan Ctrl-C (^C) $chmod +x ploop.sh $./ploop.sh 6. Menjalankan
program
file
ploop.sh
sebagai
background
$./ploop.sh &
15
7. Periksa job yang aktif $jobs 8. Mengubah job menjadi foreground dengan fg dan nomor job, atau fg dengan argumen berupa nama job yang sedang berjalan atau huruf depan nama job yang sedang berjalan $fg %[nomor job] $fg %ploop.sh
contoh : fg %1 atau
9. Mengembalikan job tersebut ke background, tekan Ctrl-Z (^Z), kemudian jalankan instruksi bg $bg $jobs Percobaan 5 : Menggunakan Alias Untuk memberi nama alias pada satu atau sekolompok instruksi 1. Melihat alias yang sudah terdaftar pada sistem $alias 2. Membuat beberapa alias $alias del=‘rm –i’ $alias h=‘history’ 3. Menggunakan instruksi hasil alias $ls $del hasil $h | more 4. Menghapus alias dengan perintah unalias $ unalias del $ del file (terdapat pesan kesalahan) Percobaan 6 : Operasional Editor vi 1. Memulai vi. $vi latihan-1 2. Sisipkan teks sebagai awal dari editing (tekan tombol i = "inserting"). iKalimat pertama Kalimat kedua Kalimat ketiga<Esc> 3. Sisipkan judul pada awal kalimat, diatas kalimat pertama. Gunakan kursor arrows-key ke baris pertama. Sisipkan dengan tombol O.
16
Olatihan dengan vi <Esc> 4. Sisipkan pada “Kalimat kedua” dengan kata “yang” di tengah kedua kata tersebut. 5. Sisipkan kata pada awal baris kedua. Arahkan kursor ke awal baris dengan tanda ^ (panah) kemudian i untuk insert dan tulis “Ini adalah”. 6. Arahkan kursor pada huruf p, lalu gunakan tombol R untuk mengganti huruf dengan huruf yang diketik sampai <Esc> ditekan. Rawal yang ditulis<ESC> 7. Arahkan kursor ke depan kata “Kalimat” (huruf K), kemudian gunakan instruksi cw, setelah itu tulis “Baris”. cwBaris 8. Hasil yang diperoleh harusnya : Latihan dengan vi _ Baris awal yang ditulis Ini adalah Kalimat yang kedua Kalimat ketiga ~ ~ 9. Mengedit file $vi latihan-2 Sisipkan teks sebagai awal dari editing. Ijaringan jaringan BIND merupakan software implementasi DNS BIND adalah singkatan dari Barkeley Internet Name Domain 10. Menghapus karakter Menghapus N karakter pada posisi kursor, dengan huruf x (kecil) dan menghapus N karakter sebelum posisi kursor, dengan huruf X (besar), untuk setiap instruksi, bisa diberikan kelipatan (angka) di depannya. jaringan --> jangan :2x pada posisi kursor di huruf r jaringan --> ringan :2X pada posisi kursor di huruf r
17
11. Menghapus kata, baris Menghapus N kata (delete word) dari posisi kursor dw dan menghapus N baris pada posisi kursor dd BIND merupakan software implementasi DNS BIND adalah singkatan dari Barkeley Internet Name Domain BIND dapat didownload di ftp.isc.org/isc/bind dengan perintah dw pada kata 'adalah' menjadi BIND merupakan software implementasi DNS BIND singkatan dari Barkeley Internet Name Domain BIND dapat didownload di ftp.isc.org/isc/bind dengan perintah dd pada baris kedua menjadi BIND merupakan software implementasi DNS BIND dapat didownload di ftp.isc.org/isc/bind 12. Mencari string Mencari Mencari Mencari Mencari
string string string string
mulai dari kursor ke bawah menggunakan / mulai dari kursor ke atas dengan ? berikutnya (next) dengan huruf n (kecil) sebelumnya dengan huruf N (besar)
3?iwan = mencari string iwan yang ke 3, sebelum posisi kursor /iyan = mencari string iyan, setelah posisi kursor Untuk mencari string iyan berikutnya tekan n, untuk mencari string iyan sebelumnya tekan N 13. Copy, Cut, Paste Mengkopi N karakter dari kursor ke arah gerak panah y{panah} Mengkopi N baris yy atau Y Menghapus N karakter dari kursor ke arah gerak panah (delete) d{panah} Menyalin dari buffer ke posisi setelah kursor (paste) p (kecill) Menyalin
dari
buffer
ke
posisi
sebelum
kursor
P
(huruf
besar)
Menyadap password dapat dilakukan dengan berbagai cara. sniffing biasanya dilakukan untuk membaca paket yang dikirim dalam bentuk text. cara yang umum dilakukan adalah dengan sniffing atau packet monitoring. untuk menukar baris ke-2 dengan baris ke-3, hapus dulu baris 2 dengan command dd di baris kedua kemudian command p untuk menyalin kembali. Menyadap password dapat dilakukan dengan berbagai cara. cara yang umum dilakukan adalah dengan sniffing atau packet monitoring. sniffing biasanya dilakukan untuk membaca paket yang dikirim dalam bentuk text. 18
untuk mengkopi kata 'atau paket monitoring' adalah dengan meletakkan posisi kursor di awal kata 'atau' kemudian copy dengan command 22y{panah kanan}, artinya mengkopi 22 karakter di sebelah kanan kursor kemudian untuk menyalin di baris ke-3, letakkan posisi kursor di awal kata 'biasanya' kemudian jalankan command P untuk menyalin, jangan lupa tambahkan 1 spasi lagi antara kata 'monitoring' dan 'biasanya'. Menyadap password dapat dilakukan dengan berbagai cara. cara yang umum dilakukan adalah dengan sniffing atau packet monitoring. sniffing atau packet monitoring biasanya dilakukan untuk membaca paket yang dikirim dalam bentuk text. 14. Menggerakkan cursor menggerakkan menggerakkan menggerakkan menggerakkan
kursor kursor kursor kursor
ke ke ke ke
atas sebanyak N Æ k bawah sebanyak N Æ j kiri sebanyak N Æ h kanan sebanyak N Æ l
3k bergerak 3 baris ke atas 15h bergerak 15 karakter ke kiri menggerakkan menggerakkan menggerakkan menggerakkan
kursor ke kolom pertama (tombol (home)) Æ 0 kursor ke kolom terakhir (tombol (end)) Æ $ kursor ke kata (word) berikutnya Æ w kursor ke kata (word) berikutnya termasuk "." Æ W
Saya Iwan. Saya temannya Iyan. Saya Iwan. Saya temannya Iyan. (dengan perintah w akan ke titik) Saya Iwan. Saya temannya Iyan. Saya Iwan. Saya temannya Iyan. (dengan perintah W akan ke huruf S) note: b dan B adalah kebalikan dari w dan W 15. Perintah Lainnya : Bergerak lebih cepat bergerak satu layar ke bawah (forward) bergerak satu layar ke atas (back)
^f (ctrl+f)
^b (ctrl+b)
bergerak 1/2 layar ke bawah (down)
^d (ctrl+d)
bergerak 1/2 layar ke atas (up)
^u (ctrl+u)
16. Mengganti text mengganti N karakter pada posisi kursor (replace) Æ r
19
mengganti karakter mulai dari posisi kursor sampai ditekan Æ R mengganti N kata dengan kata yang lain (change word) Æ cw 17. Undo, Redo membatalkan editing sebelumnya (undo) Æ u mengembalikan editing yang dibatalkan (redo) Æ ctrl + R 18. Merecover file vi -r [nama_file] cara ini untuk merecover file yang belum sempat keluar dari editor vi (misalnya karena koneksi ke komputer remote terputus/disconnect). Dengan option -r vi akan merecover file dengan membaca swap file. Jangan lupa setelah merecover file kemudian menghapus swap file nya. Swap file ini hidden dengan nama nama_file.swp.
E. Latihan 1. Buatlah program bash script untuk menampilkan tulisan berupa teks seperti dibawah ini : Selamat datang Di Laboratorium Komputer Jurusan Teknik Telekomunikasi PENS –ITS a. gunakan Vi editor dan simpan dengan nama file prog1.sh b. gunakan perintah cat dan simpan dengan nama file prog1a.sh c. jalankan kedua file tersebut secara bersamaan 2. Carilah kata / kalimat dalam kedua file diatas yang mengandung kata Laboratorium 3. Lihatlah nilai kapasitas history dan gantilah nilainya menjadi 50. 4. Buatlah file baru yang isinya 5 nama kota di pulau jawa, kemudian urutkan isi filenya dan hitung jumlah baris, kata dan karakter dari file tersebut dengan menggunakan filter.
20