Pokok
Bahasan
History pada Bash Shell
Membuat Bash Shell Script
Tujuan
Praktikum
Setelah
mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
• Memahami shell pada sistem operasi Linux.
• Menggunakan feature history pada Bash Shell.
• Mengubah feature history pada Bash Shell.
• Mengubah prompt shell.
• Melakukan konfigurasi Bash Shell untuk menjalankan skrip
secara otomatis.
• Membuat dan mengeksekusi shell script sederhana melalui
editor vi.
• Memahami job control.
• Memahami stack.
• Menggunakan alias.
Dasar
Teori
1.
SHELL
Shell
adalah Command executive, artinya program yang menunggu instruksi
dari pemakai, memeriksa
sintak
dari instruksi yang diberikan, kemudian mengeksekusi perintah tersebut. Shell
ditandai dengan
prompt.
Untuk pemakai menggunakan prompt $ dan untuk superuser menggunakan promp
#.
Beberapa
macam shell :
• /bin/sh
Bourne shell, dirancang oleh Steve Bourne dari
AT&T
• /bin/csh
Dikembangkan
oleh UNIX Berkeley yang dikenal dengan C -Shell
• /bin/bash
Kompatibel
dengan Bourne Shell dan juga mengadaptasi kemampuan Korn-Shell. Perbedaan
mendasar
antara Shell diatasi hampir tidak ada, kecuali pada fasilitas pemrograman dan
editing.
2.
PROFILE
Pada
saat login, program akan menjalankan beberapa program yaitu :
1. /etc/profile
Berisi
shell script yang berlaku untuk seluruh pengguna Linux.
2. Profil untuk setiap pemakai Pada home directory, login
pertama kali akan memeriksa file
.bash_profile
. Bila tidak ada, maka file .bash_login akan dicari. Bila .bash_login tidak
ada, maka
dicari
file bernama .profile .
3. .bashrc
File
ini akan dieksekusi untuk perpindahan dari satu shell ke shell yang lain
melalui instruksi su.
4. .bash_logout
Pada
saat logout, maka bash akan mencari file .bash_logout. Bila ada, file tersebut
akan dieksekusi
sebe
lum logout
Isi
dari /etc/profile:
# System
wide environment and startup programs
#
Functions and aliases go in /etc/bashrc
PATH=”$PATH:/usr/X11R6/bin”
PS1=”[\u@\h
\W]\\$ “
umask
022
USER=‟id –un‟
LOGNAME=$USER
MAIL=”/var/spool/mail/$USER”
HOSTNAME=‟/bin/hostname‟
HISTSIZE=1000
HISTFILESIZE=1000
Export
PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL
PATH : merupakan
daftar nama direktori. Bila sebuah instruksi diberikan dari prompt shell,
maka instruksi tersebut akan dicari pada daftar tersebut.
PS1 : adalah prompt
dimana
\u = Nama User
\h = Nama Host
\W = Nama working
direktory
3.
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 kesalahan pada penulisan
instruksi maupun parameter.
Navigasi pada daftar history menggunakan karakter kontrool
sebagai berikut :
^P
(Ctrl-P) melihat instruksi sebelumnya
^N (Ctrl-N) melihat instruksi berikutnya
!! eksekusi kembali instruksi sebelumnya
!!
–3 3 instruksi
sebelumnya akan diulang
!!88 ulangi instruksi no 88
4.
BASH-SCRIPT
Bash-script adalah file yang berisi koleksi program yang
dapat dieksekusi. Untuk eksekusi bash
script gunakan . sebelum file bash-script yang berarti
eksekusi shell dan tanda ./ berarti file
bash-script berada pada direktori actual.
5. 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.
6.
EDITOR vi
Vi adalah full screen editor, artinya editor tersebut
dapat memanfaatkan fasilitas satu layar
penuh. Vi mempunyai 2 buah modus, yaitu :
• Command
line Editor vi mengintepretasikan input sebagai instruksi untuk dieksekusi oleh
editor, contoh seperti mencari teks, mengganti teks secara
otomatis dan lainnya.
• 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.
Kunci-kunci teks editor vi dapat dilihat pada tabel
sebagai berikut :
Kunci Keterangan
H
Pindah kursor ke kiri satu karakter
J
Pindah kursor ke kanan satu karakter
K
Pinda h kursor ke atas
L
Pindah kursor ke bawah
O
Menyisipkan teks (satu baris setelah posisi kursor)
Untuk
keluar dari 5 model kunci
I
Menyisip kan teks (di sebelah kiri posisi kursor)
A
Menyisipkan teks (di sebelah kanan posisi kursor)
I
(shift i) Menyisipkan teks (di posisi awal baris)
A
(shift a) Menyisipkan teks (di posisi akhir baris)
X
Menghapus 1 huruf (di sebelah kanan posisi k ursor)
Dw
Manghapus 1 kata (di sebelah kanan posisi kursor)
Dd
Menghapus 1 baris (di sebelah kanan posisi kursor)
Yy
Mengkopi 1 baris
2yy
Mengkopi 2 baris
insert
di samping ini dan
mengaktifkan
kunci-kunci lain,
maka
kita harus menekan tombol
Esc
terlebih dahulu.
P
(Paste) Menampilkan baris kalimat yang sudah dikopi dengan kunci yy
Cw
Mengganti 1 kata yang telah ditulis di sebelah kanan posisi kursor dengan kata
lain
Cc
Mengganti
1 baris kalimat yang telah ditulis di sebelah kanan posisi kursor dengan
kalimat
lain
ctrl-b
Mundur satu layar
ctrl-f
Maju satu layar
ctrl-d
Maju setengah layar
B
Menggerakkan kursor ke kiri satu kata
W
Manggerakkan kursor ke kanan satu kata
^
Pergi ke awal baris
$
Pergi ke akhir baris
U
Membatalkan perintah yang terakhir kali
U
Membatalkan seluruh perubahan teks pada baris tempat kursor berada
:!
Keluar untuk sementara dari editor vi dan menjalankan perintah yang lain
:wq
Write dan quite, simpan berkas dan keluar
:q!
Keluar vi tanpa menyimpan
:se
all Menampilkan semua pilihan set status
:se
nu Menampilkan nomor baris pada kiri layar
/string
Mencari string ke arah depan
?string
Mencari string ke arah belakang
N
Meneruskan pencarian untuk arah yang sama
N
Meneruskan pencarian untuk arah yang berbeda
TUGAS
PENDAHULUAN
Jawablah pertanyaan-pertanyaan di bawah ini :
1. Apa
yang dimaksud dengan shell dan sebuatkan shell yang ada di system operasi
Linux.
2. Apa
yang dimaksud dengan profile pada Bash Shell.
3. Apa
yang Anda ketahui mengenai file .bashrc.
4. Apa
yang dimaksud dengan history pada Bash Shell. Apa kegunaan perintah history,
sebutkan cara-cara untuk mengetahui history
perintah-perintah yang pernah digunakan
oleh user!
5. Cobalah
menggunakan editor vi untuk mengetik dan pahami perintah-perintah yang ada
seperti yang terdapat pada dasar teori (untuk dilakukan,
tidak perlu dijawab sebagai
tugas pendahuluan). Perintah-perintah yang penting :
insert huruf(kalimat), delete (per
huruf, per kata dan per baris), simpan file dan keluar
dari editori vi.
PERCOBAAN
1. Login
sebagai user.
2. Bukalah
Console Terminal dan lakukan percobaan-percobaan di bawah ini kemudian
analisa hasil percobaan.
3. Selesaikan
soal-soal latihan.
Percobaan
1 : Profile
1. File .bash_profile dijalankan pada home
direktori pemakai yang login. File .bash_profile
adalah hidden file, sehingga untuk melihatnya
gunakan opsi a pada instruksi ls.
$ ls –a
$ more
.bash_profile
File
.bash_logout akan dieksekusi sesaat sebelum logout, berfungsi
sebagai
house clearing jobs, artinya membersihkan semuanya, misalnya
menghapus
temporary file atau job lainnya. Melihat file. bash_logout
dengan
instruksi
$ cat .bash_logout
Percobaan
2 : Menggunakan Feature History Bash
1. Bash
shell menyimpan “history” perintah yang digunakan sebelumnya. Anda dapat
mengakses history dalam beberapa cara. Cara paling mudah
adalah menggunakan
Panah Atas. Maka perintah sebelumnya
akan ditampilkan.
2. Berikutnya,
berikan Bash shell beberapa perintah untuk diingat. Masukkan perintah
berikut dan tekan Enter pada setiap baris.
$ cd
$ ls –l
/etc
$ ls –l
$ whoami
$ who
3. Untuk
memeriksa apakah perintah ini ditambkan pada history, dapat menggunakan
perintah history untuk melihat semua perintah yang
pernah dimasukkan.
$
history
4. Anda
dapat memilih perintah sebelumnya dengan menggunakan Panah Atas, tetapi
hal
ini tidak efisien untuk perintah yang semakin bertambah
banyak. Cara yang mudah
menggunakan nomor pada perinah history atau mencarinya.
Untuk memilih dan
mengeksekusi perintah dengan nomor, masukkan kunci !
diikuti nomor perintah
$ !
<Nomor Perintah> contoh : !780
5. Anda
dapat mencari perintah dengan menyertakan perintah yang diinginkan. Misalnya
!?etc?! akan menjalankan perintah ls –l /etc
yang sebelumnya digunakan.
$ !?etc?
6. Kemudian
gunakan perintah history, maka akan terlihat perintah ls –l /etc
yang
kedua dan bukan !?etc?
$
history
7. Apabila
string tidak ditemukan pada perintah history, maka akan terdapat pesan error.
$
!?wombat99?
8. Jika
diketikkan !who maka
yang dijalankan adalah perintah who. Tetapi bila anda
ketikkan !whoa maka yang dijalankan adalah perintah whoami.
$ !who
$ !whoa
9. Anda
bias menggantikan string pada perintah history, terutama pada perintah yang
panjang. Misalnya ketik cat
/bin/bash | strings | grep shell | less dan tekan
Enter. Maka akan menampilkan semua
string pada file /bin/bash yang berisi kata
“shell”. Untuk keluar tekan q.
jika ingin menampilkan kata “alias”, maka anda tidak
perlu mengetik perintah yang panjang lagi, tetapi cukup
ketik ^shell^alias^
dan tekan
Enter maka akan menggantikan kata “shell” dengan
“alias”.
$ cat
/bin/bash | strings | grep shell | less
$
^shell^alias^
Percobaan
3 : Mengubah History Bash
1. Bash
shell akan menyimpan perintah history meskipun telah log out dan log in
kembali.
File .bash_history menyimpan file history yang
terdapat pada home directory.
$ cd
2. Lihat
beberapa baris pada file .bash_history dengan ketik tail .bash_history
dan
tekan Enter. File ini bukan file yang up
to date.
$ tail
.bash_history
3. Ketik history
dan tekan Enter.
Maka akan terlihat baris terakhir adalah perintah
history dan baris sebelumnya adalah tail .bash_history. Perintah history bersifat up
to date, karena disimpan pada memory system.
$
history
4. Ketik
perintah berikut
$ echo
„Ini perintah saya‟
5. Log out
dan log in kembali sebagai user yang sama. Ketik history dan tekan Enter.
Maka perintah echo „Ini
perintah saya‟ akan berada pada baris terakhir. Lihat file
.bash_history, maka perintah tersebut akan
terdapat pada file .bash_history.
$
history
$ tail
.bash_history
6. Ketik history|less
untuk melihat perintah history terakhir pada screen. Tekan
spacebar untuk melihat file lebih banyak. Untuk keluar
tekan q
$
history | less\
7. Untuk
melihat beberapa banyak perintah history yang ada pada file ketik berikut dan
output yang keluar serupa dibawah ini.
$ wc –l
.bash_history
1000 .bash_history
8. Output
menunjukkan bahwa 1000 perintah history disimpan pada file history. Untuk
melihat jangkauan (limit) perintah history digunakan
variabel HISTSIZE. Untuk melihat
jangkauan history ketik sebagai berikut
$ set |
grep HISTSIZE
9. Bila
ingin memperbesar jangkauan file history, maka ubahlah variabel HISTSIZE
pada
skrip startup yang disebut .bashrc pada home directory.
$ echo
„HISTSIZE=5000‟
>> .bashrc
10. Log out
dan log in kembali sebagai user yang sama. Lihat perubahan variabel HISTSIZE
$ set |
grep HISTSIZE
11. Ketikkan
Perintah history
beberapa kali, maka perintah ini akan disimpan pada BASH
history meskipun yang diketikkan perintahnya sama.
12. Anda
dapat melakukan konfigurasi BASH agar tidak menambah perintah ke history jika
perintah yang diketikan sama dengan sebelumnya. Hal ini
dilakukan dengan
menambahkan variabel HISTCONTROL dan diberikan nilai ignoredups
pada file .bashrc
$ echo
„HISTCONTROL=ignoredups‟
>> .bashrc
13. Log out
dan log in kembali sebagai user yang sama. Ketikkan history beberapa kali dan
perhatikan beberapa kali history muncul.
Percobaan
4 : Mengubah Prompt Shell
1. Prompt
Bash shell dikonfigurasi dengan men-setting nilai variabel PS1. Selain
menampilkan string static sebagai prompt, anda dapat
menampilkan menjadi dinamis.
Contohnya, apabila ingin menunjukkan current directory atau current time. Ketik
PS1=‟\t:’
dan tekan Enter
untuk menampilkan waktu system dalam format 24 jam
sebagai prompt Bash. Format dalam HH:MM:SS
$ PS1=‟\t:‟
2. Untuk
menampilkan format 12 jam dengan indicator am dan pm ketik sebagai berikut :
$ PS1=’\t:’
3. Kebanyakan
orang menginginkan prompt Bash menampilkan current working
directory. Direktory dapat ditampilkan
dalambentuk keseluruhan path atau hanya
nama direktory. Karakter \w menampilkan hanya nama
directory. Jika current
directory adalah home directory,
maka tampil prompt ~
:
$ PS1=‟\w:‟
4. Ketik cd /usr/sbin
untuk melihat prompt /usr/sbin
:
$ cd
/usr/sbin
5. Ketik PS1=‟\W:‟
untuk melihat prompt sbin
:
$ PS1=‟\W:‟
6. Ada
beberapa prompt BASH lain yang dapat diubah, yaitu PS2, PS3 dan PS4. Prompt PS2
digunakan sebagai prompt sekunder. Untuk melihat
bagaiamana pengunaannya, ketik
echo
„Hello (tanpa
diakhiri penutup quote) dan tekan Enter. Simbol lebih besar dari
(>) akan muncul. Hal ini memberitahukan bahwa BASH
menunggu Anda menyelesaikan
prompt PS2, kata “Hello,” muncul diikuti dengan prompt
PS1 pada baris baru.
$ echo
„Hello
> „
7. Anda
dapat mengubah prompt PS2 seperti mengubah prompt PS1. Ketik perintah
berikut :
$ PS2=‟Selesai memasukkan perintah Anda:‟
8. Kemudian
ketik echo „Hello (tanpa
diakhiri penutup quote) dan tekan Enter. Pada
baris berikutnya akan muncul Selesai memasukkan perintah Anda :. Kemudian
ketikkan penutup quote („) dan tekan Enter. Jika
perintah selesai , maka kata Hello akan
muncul diikuti prompt PS1 pada baris baru.
$ echo
„Hello
Selesai
memasukkan perintah Anda:‟
9. Prompt
BASH dapat ditampilkan berwarna dengan melakukan setting color-setting
string. Sebagai contoh, prompt BASH
diset dengan \w\$,
akan menampilkan current
working
directory yang
diikuti $
(atau #
jika anda login sebagai root). Untuk setting
warna menjadi biru ketikkan berikut :
$ PS1=‟\033[0;34m\w\$ \033[0;37m‟
10. Untuk
mendapatkan prompt warna merah ketikkan berikut :
$ PS1=‟\033[0;31m\w\$ \033[0;37m‟
30=hitam, 31=merah, 32=hijau, 34=biru, 35=ungu, 36=cyan,
37=putih.
11. Bila
menginginkan beberapa warna, ketikkan perintah berikut :
$ PS1=‟\033[0;31m\w\033[0;32m\$ \033[0;37m‟
12. Anda
bisa menampilkan atribut visual seperti lebih terang, berkedip dan warna
kebalikannya. Untuk menampilkan prompt yang lebih terang,
atribut control diganti 1,
seperti perintah berikut :
$ PS1=‟\033[1;34m\w\033[1;32m\$ \033[0;37m‟
13. Untuk
menampilkan prompt dengan warna berkebalikan, atribut control diganti 7,
seperti perintah berikut :
$ PS1=‟\033[7;34m\w\033[7;32m\$ \033[0;37m‟
14. Untuk
menampilkan prompt berkedip, atribut control diganti 5 seperti perintah berikut
:
$ PS1=‟\033[5;34m\w\033[5;32m\$ \033[0;37m‟
Percobaan
5 : Menambah otomatisasi ke Prompt Shell
1. Pastikan
anda berada di home directory
$ cd ~
2. Buatlah
skrip sederhana untuk mengurut daftar file. Anda daapt menggunakan teks
editor, tetapi karena hanya satu baris, gunakan perintah
echo untuk membuat file.
$ echo
„sort ~/list > ~/r13; mv ~/r13 ~/list‟ > ~/sorter
3. Buatlah
file skrip diatas menjadi file executable
$ chmod
+x sorter
4. Jalankan
program sorter diatas setiap shell Bash menampilkan prompt PS1. Untuk
melakukannya, buatlah variable PROMPT_COMMAND
dimana nilainya adalah nama dari
program sorter
$
PROMPT_COMMAND=~/sorter
5. Ketikkan
echo „John Smith:13001‟>>list
dan tekan Enter.
Jika file list tidak ada,
akan dibuat secara otomatis, tetapi jika sudah ada, string
‘John Smith:13001’ akan
ditambahkan.
$ echo
„John Smith:13001‟>>list
6. Masukkan
beberapa perintah serupa dengan point 5 tetapi dengan nama dan nomor
yang berbeda. Kemudian ketik cat list dan tekan
Enter.
$ echo
„Anita:13002‟>>list
$ echo
„Samantha:13003‟>>list
$ echo
„Patrik:13004‟>>list
$ echo
„Sponge Bob:13005‟>>list
$ echo
„Lisa:13006‟>>list
$ echo
„Squid:130047‟>>list
7. Apabila
anda tidak mengingikan Shell Bash menampilkan file terurut sepanjang waktu,
anda tidak perlu menambahkan variabel PROMPT_COMMAND=~/sorter pada file
konfigurasi seperti .bashrc. Bila anda ingin BASH berhenti
menjalankan program sorter,
maka ketikkan variable PROMPT_COMMAND=
dan tekan Enter
atau log out dan login
kembali.
$
PROMPT_COMMAND=
minta file aslinya bang
BalasHapus