Linux : Bekerja Dengan Bash Shell
Bekerja Dengan Bash
Shell
POKOK BAHASAN:
- History pada Bash Shell
- Membuat Bash Shell Script
TUJUAN BELAJAR:
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
sebelum 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 |
Pindah kursor ke atas |
|
|
L |
Pindah kursor ke bawah |
|
|
|
|
|
|
O |
Menyisipkan teks (satu baris |
|
|
|
setelah posisi kursor) |
Untuk keluar dari 5 model kunci insert di samping ini dan mengaktifkan kuncikunci lain, maka kita harus menekan tombol Esc terlebih dahulu. |
|
I |
Menyisipkan 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 kursor) |
|
|
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 |
|
|
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:
TUGAS PENDAHULUAN:
Jawablah pertanyaan-pertanyaan di bawah ini :
- Apa yang dimaksud dengan shell dan sebutkan shell yang ada di system operasi Linux.
Shell adalah
Command executive, artinya program yang menunggu intruksi dari pemakai,
memeriksa sintak dari instruksi yang diberikan, kemudian mengeksekusi perintah
terssebut.
-
/bin/sh : Bourno shell, dirancang
oleh Steve Bourne dari AT&T
-
/bin/csh : Dikembangkan oleh UNIX
Beerkeley yang dikenal dengan C –Shell
- /bin/bash : Kompatibel dengan Bourne Shell dan juga mengadaptasi kemampuan Kom-Shell.
2. Apa yang dimaksud dengan profile pada Bash Shell.
Profile
pada bash shell merupakan profil untuk setiap pemakai pada home directory.
- 3Apa yang Anda
ketahui mengenai file .bashrc.
File
.bashrc adalah file yang akan dieksekusi untuk perpindahan dari satu shell ke
shell yang lain melalui intruksi su.
4. 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!
History
yaitu catatan dari semua intruksi yang sejauh ini telah dilakukan. History
memudahkan pemakai untuk mengedit kembali instruksi kompleks dan panjang,
terutama bila terjadi kesalahan pada penulisan instruksi maupun parameter.
^P (Ctrl
-P) melihat instruksi
^N (Ctrl
-N) melihat instruksi berikutnya
!!
eksekusi kembali instruksi sebelumnya
!! -3 3
instruksi sebelumnya akan diulang
!!88
ulangi instruksi no 88
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
Fungsi
ls –a adalah menampilkan isi direktori secara keseluruhan.
$ more .bash_profile
Pada isi direktori home tidak ada file bernama .bash_profile, oleh karena itu akan muncul pesan error. Perintah .bash_profile bisa diganti dengan .profile. Perintah $ more adalah untuk menampilkan perintah dalam satu halaman penuh.
2.
File
.bash_logout akan diekseksi 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
Pada saat logout, maka bash akan mencari
file .bash_logout. Bila ada, file tersebut akan dieksekusi sebe lum logout. Isi
file ini adalah perintah untuk membersihkan (clear) layar.
Percobaan 2 : Menggunakan Feature
History Bash
1.
Bash
shell menyimpan ”history” perintah yang digunakan sebelumnya. Anda dapat
mengaksis history dalam beberapa cara. Cara paling mudah adalah menggunakan Panah Atas. Maka
perintah sebelumnya akan ditampilkan.
Pada percobaan ini perintah yang dijalankan
adlah perintah sebelumnya, yaitu perintah pada percobaan 1 atau $ cat
.bash_logout.
2.
Berikutnya,
berikan Bash shell beberapa perintah untuk diingat. Masukkan perintah berikut
dan tekan Enter pada setiap baris.
$ cd
Perintah $ cd adalah untuk masuk ke
direktori yang dituju, jika tidak ada argumennya maka otomatis direktori yang
dituju adalah direktori home.
$ ls –l /etc
Gambar di atas adalah isi direktori /etc
yang ditampilkan dalam daftar panjang (long list).
$ ls –l
Gambar di atas adalah isi direktori yang
sedang aktif dalam daftar panjang. Saat ini direktori yang sedang aktif adalah
direktori /home/diah.
$ whoami
$ who
Gambar di atas adalah hasil dari perintah $
whoami dan $ who. Keduanya sama-sama menampilkan daftar user yang ada, namun $
who terdapat keterangan waktu. Pada program ini hanya terdapat satu user, yaitu
user diah.
3.
Untuk
memeriksa apakah perintah ini ditambahkan pada history, dapat menggunakan
perintah history untuk melihat semua perintah yang pernah
dimasukkan.
$ history
Dapat dilihat pada gambar, perintah yang
digunakan pada percobaan nomor 1 dan 2 terdapat di 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 menggunkaan nomor pada perintah history atau mencarinya. Untuk memilih
dan mengeksekusi perintah dengan nomor, masukkan kunci ! diikuti nomor
perintah.
$ !<Nomor Perintah> Contoh : !780
Pada percobaan ini, perintah yang ingin
dieksekusi adalah perintah nomor 867 yaitu $ whoami.
5.
Anda
dapat mencari perintah dengan menyertakan perintah yang diinginkan. Misalnya !?etc?! akan
menjalankan perintah ls –l /etc yang
sebelumnya digunakan.
$ !?etc?
Jika pada percobaan nomor 4 menggunakan
nomor perintah, maka percobaan ini menggunakan nama perintah yang ingin dijalankan,
yaitu ls –l /etc. Tanda yang digunakan pun berbeda dengan nomor 4 sebelumnya.
6.
Kemudian
gunakan perintah history, maka akan terlihat perintah ls –l
/etc yang kedua dan bukan !?etc?
$ history
Nama perintah yang ada di daftar
history tetap nama perintah secara lengkap.
7.
Apabila
string tidka ditemukan pada perintha history maka akan terdapat pesan error.
$ !?wombat99?
Terdapat pesan error, karena tidak ada
perintah bernama wombat99 di history.
8.
Jika
diketikkan !who maka yang dijalankan adalah perintah who. Tetapi bila Anda ketikkan !whoa
maka yang dijalankan adalah perintah whoami.
$ !who
$ !whoa
Yang terjadi adalah semua dijalankan dengan
perintah $ whoami.
9.
Anda
bisa menggantikant 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 Feature
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
Perintah $ cd adalah untuk masuk ke
direktori yang dituju, jika tidak ada argumennya maka otomatis direktori yang
dituju adalah direktori home.
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
Daftar di atas adalah beberapa perintah
pada history, namun bukan yang terbaru.
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 sistem.
$ history
Perintah yang dijalankan pada nomor 2
terdpat pada nomor 877 dan yang paling terakhir adalah history atau nomor 878.
4.
Ketik
perintah berikut.
$ echo
‘Ini perintah saya’
Echo adalah perintah untuk menampilkan
secara langsung string atau kalimat yang diinginkan. Pada percobaan ini kalimat
yang ditampilkan ada pada baris ke dua.
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 tsb akan terdapat pada file .bash_history.
$ history
Karena perintah $ history adalah perintah
yang terbaru maka perintah pada percobaan sebelumnya masuk dalam daftar ini.
$ tail .bash_history
Perintah ini adalah untuk menampilkan 10
baris perintah default.
6.
Ketik
history|less untuk melihat perintah history terakhir pada screen. Tekan spacebar
untuk melihat file lebih banyak. Untuk keluar tekan q.
$ history|less
Perintah ini untuk melihat history namun
menggunakan pipeline ke perintah less.
7.
Untuk
melihat berapa banyak perintah history yang ada pada file ketik berikut dan
output yang keluar serupa di bawah ini
$ wc –l .bash_history
1000 .bash_history
Dapat dilihat pada gambar, perintah yang
ada di history sebanyak 880.
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
Dapat dilihat pada gambar bahwa ukuran limit
history hanya 1000. Artinya jika melewati 1000, maka perintah yang paling awal
akan dihapus.
9.
Bila
ingin memperbesar jangkauan file history, maka ubahlah variabel HISTSIZE pada
skrip startup yang disebut .bashrc pada home directory.
$ echo ‘HISTSIZE=5000’ >> .bashrc
Perintah ini tidak menghasilkan output apa-apa
namun jika dicek HISTSIZEnya akan berubah.
10. Log
out dan log in kembali sebagai user yang sama. Lihat perubahan variabel HISTSIZE.
$ set|grep HISTSIZE
Sekarang HISTSIZEnya telah berubah, dari
1000 menjadi 5000.
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 diketikkan 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 berapa kali history
muncul.
Hanya ada satu history yang muncul, yaitu
nomor 895.
Percobaan 4 : Mengubah Prompt Shell
1.
Prompt
Bash shell dikonfigurasi dengan men-setting nilai variabel PS1. Selain
menampilkan string statik 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 sistem dalam format
24 jam sebagai prompt Bash. Format dalam HH:MM:SS.
$ PS1=’\t:’
Waktu pada current time percobaan ini
adalah jam 6 sore atau 18.00.
2.
Untuk
menampilkan format 12 jam dengan indikator am dan pm ketik sebagai berikut :
$ PS1=’\t:’
3.
Kebanyakan
orang menginginkan prompt Bash menampilkan current
working directory. Direktory dapat ditampilkan dalam bentuk
keseluruhan path atau hanya nama direktory. Karakter \w menampilkan hanya nama direktory. Jika current directory adalah
home directory, maka tampil prompt ~:
$ PS1=’\w:’
Ini menandakan direktori yang sedang aktif
adalah direktori home.
4.
Ketik
cd /usr/sbin untuk melihat prompt /usr/sbin:
$ cd
/usr/sbin
Warna biru pada gambar di atas menandakan
direktori aktif yang sedang digunakan, yaitu direktori /usr/sbin/.
5.
Ketik PS1=’\W:’
untuk melihat prompt sbin:
$ PS1=’\W:’
Pada percobaan ini yaitu bekerja pada prompt sbin.
6.
Ada
beberapa prompt BASH lain yang dapat diubah, yaitu PS2, PS3 dan PS4. Prompt PS2
digunakan sebagai prompt sekunder. Untuk melihat bagaimana penggunaannya, ketik
echo ’Hello (tanpa diakhiri penutup quote) dan tekan Enter.
Simbol lebih besar dari (>) akan muncul. Hal ini memberitahukan bahwa BASH
menunggu Anda menyelesaikan perintah. Ketik penutup quote (‘) dan tekan Enter.
Perintah ini akan menyelesaikan prompt PS2, kata ”Hello, ” muncul
diikuti dengan prompt PS1 pada baris baru.
$ echo ’Hello
>’
Echo untuk mencetak input sama persis. Pada
percobaan ini terdapat garis baru setelah kata 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:’
Gambar di atas adalah untuk nomor 7 dan 8.
9.
Prompt
BASH dapat ditampilkan berwarna dengan melakukan setting colorsetting string .
Sebagai contoh, prompt BASH di-set 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’
Warna symbol $ berwarna biru. Biru diwakili
oleh angka 34.
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.
Warna symbol $ berwarna merah. Merah
diwakili oleh angka 31.
11. Bila menginginkan beberapa warna, ketikkan
perintah berikut :
$ PS1=’\033[0;31m\w\033[0;32m\$
\033[0;37m’
Warnanya adalah merah dan hijau. Merah diwakili angka 31 dan hijau angka 32.
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’
Dapat dilihat pada gambar warnanya menjadi
lebih terang setelah atribut controlnya lebih besar.
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 : Pada gambar symbol $ menghilang, ini berarti tandanya sedang
berkedip.
$ PS1=’\033[5;34m\w\033[5;32m\$ \033[0;37m’
Percobaan 5 : Menambahkan
otomatisasi ke Prompt Shell
1.
Pastikan
Anda berada di home directory
$ cd
~
Perintah $ cd adalah untuk masuk ke
direktori yang dituju, jika tidak ada argumennya maka otomatis direktori yang
dituju adalah direktori home. Simbol ~ menandakan ke home.
2.
Buatlah
skrip sederhana untuk mengurut daftar file. Anda dapat menggunakan teks editor,
tetapi karena hanya satu baris, gunakan perintah echo untuk membuat file.
$ echo ’sort ~/list > ~/r13; mv ~/r13
~/list’ > ~/sorter
Script di perintah echo akan disimpan di
file bernama sorter pada direktoi home (~).
3.
Buatlah
file skrip diatas menjadi file executable
$ chmod
+x sorter
Mengubah file menjadi executable menggunakan perintah $ chmod +x
kemudian diikuti nama filenya. Nama file yang akan diubah adalah ‘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
Perintah ini tidak menghasilkan output
apa-apa di layar.
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
Ini artinya memasukkan kalimat di dalam
petik ke file bernama list. File ini disimpan di direktori yang sedang aktif,
atau home.
6.
Ketik
cat list dan tekan Enter.
Maka Anda akan melihat isi file list. Pada saat ini, file mungkin mempunyai hanya satu baris sehingga
tidak dapat dilihat apakah file sudah terurut.
$ cat list
Cat adalah perintah untuk melihat isi file.
Di dalam file list hanya ada isi dari perintah
yang ada di nomer sebelumnya atau nomer 5.
7.
Masukkan
bebe rapa 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
’Sponse Bob:13005’>>list
$ echo
’Lisa:13006’>>list
$ echo
’Squid:13007’>>list
Berdasarkan percobaan di atas, jika perintah ini
dilakukan terus menerus, maka isi file akan terus bertambah. Ketika ditampilkan
dengan perintah $ cat, maka isinya akan diurutkan sesuai nomor ASCII.
8.
Apabila
Anda tidak menginginkan Shell Bash menampilkan file terurut sepanjang waktu,
Anda tidak perlu menambahkan variable 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=
Percobaan 6 : Membuat Bash-script
dan menjalankannya
1.
Membuat
file p1.sh
$ vi
p1.sh
echo
“Program bash Script”
Gambar di atas adalah tampilan di editor vi.
2.
Mengubah
program menjadi executable
$ ls
–l p1.sh
$ chmod
+x p1.sh
$ ls
–l p1.sh
Setelah program diubah menjadi executable,
nama file nya menjadi berwarna hijau.
3.
Menjalankan
script
$ bash
p1.sh
$ sh
p1.sh
$ .
p1.sh
$ ./p1.sh
Menjalankan script terdapat beberapa cara seperti di atas.
4.
Konvensi
dalam pembuatan script shell dinyatakan sebagai #!/bin/bash. Tambahkan pada file p1.sh konvensi tersebut
$ vi p1.sh
#!/bin/bash
echo “Program bash script”
Tambahan script tersebut digunakan untuk
mengkonvensi kode script.
5.
Buatlah
file p2.sh
$ vi
p2.sh
#!/bin/bash
echo
“Program 2 bash script”
Dengan menggunakan tambahan script seperti pada nomor 4, tidak
perlu mengubah file menjadi executable terlebih dahulu.
6.
Menjalankan
beberapa program shell dalam satu baris instruksi yang dipisahkan dengan tanda
;
$ cat p1.sh ; cat p2.sh
$ ./p1.sh ; ./p2.sh
Pada perintah yang pertama menggunakan $
cat yang berfungsi untuk menampilkan isi file sedangkan perintah yang kedua
mengeksekusi file. Terdapat perbedaan pada keduanya. Pada perintah yang kedua,
file p2 tidak bisa dieksekusi dan hanya file p1 yang dieksekusi.
Percobaan 7 : Job Control
1.
Proses
foreground
$ ps
x
Perintah ps untuk menunjukkan semua proses
yang sedang berjalan di sistem beserta keterangan PID, TTY, STAT, TIME dan
COMMAND.
2.
Proses background
$ ps
x > hasil &
Untuk membuat proses berjalan di background
menggunakan symbol &, dan outputnya dibelokkan ke ‘hasil’.
3. Setiap job mempunyai PID yang tunggal
(unique). Untuk melihat jobs yang aktif
$ jobs
Pada gambar di atas, perintah yang
dijalankan sebelumnya telah selesai dilakukan (Done). Perintah ini memiliki
nomor job 1.
4.
Buatlah
file ploop.sh. File ini tidak akan pernah berhenti
kecuali ditekan Ctrl-C
$ vi
ploop.sh
#!/bin/bash
while
[ true ]
do
sleep 10
echo “Hallo”
done
5. Buatlah file ploop.sh menjadi executable.
Jalankan program, akan ditampilkan kata Hallo setiap 10 detik. Untuk keluar
program, tekan Ctrl-C (^C)
$ chmod +x ploop.sh
$ ./ploop.sh
Dapat dilihat pada gambar bahwa perintah
ini akan terus berjalan sampai dihentikan secara manual menggunakan CTRL+C.
Percobaan 8 : Manipulasi stack
untuk Direktori
1. Instruksi dirs digunakan untuk melihat stack direktori, pada output hanya ditampilkan
direktori home ~
$ dirs.
2. Membuat 3 buah direktori
$ mkdir marketing sales support
Dapat dilihat pada gambar, terdapat tiga
buah direktori baru dengan nama sesuai perintah. Direktori ditandai dengan
warna tulisan biru.
3. Instruksi dirs digunakan untuk melihat stack direktori, pada output hanya ditampilkan
direktori home ~
$ dirs.
Percobaan 9 : Alias
1.
Alias
adalah mekanisme untuk memberi nama alias pada satu atau sekelompok instruksi.
Untuk melihat alias yang sudah terdaftar pada system :
$ alias
Terdapat beberapa nama alias yang sudah ada
di sistem. Alias ini untuk menyingkat penulisan perintah agar lebih mudah.
2.
Membuat
beberapa alias
$ alias
del=’rm –i’
$ alias
h=’history’
Alias juga bisa dibuat sendiri secara manual. Pada percobaan ini
adalah membuat beberapa nama alias. Nama yang sebelumnya tidak ada, menjadi ada
di daftar alias.
3.
Gunakan
instruksi hasil alias
$ ls
$ del
hasil
$ h
| more
Pada perintah yang ketika yaitu menampilkan history dengan nama
alias yang telah dibuat sebelumnya, yaitu ‘h’ dengan menampilkannya menjadi
satu halaman penuh menggunakan $ more.
4.
Untuk
menghapus alias gunakan instruksi unalias
$ unalias
del
$ del
files (Terdapat Pesan Kesalahan, mengapa ?)
Karena nama alias ‘del’ telah dihapus menggunakan perintah $ unalias, maka ketika perintah dipanggil, akan muncul pesan error seperti di atas.
LATIHAN:
1.
Eksekusi seluruh profile
yang ada :
a.
Edit file profile /etc/profile dan
tampilkan pesan sebagai berikut : echo ’Profile dari
/etc/profile’
Untuk mengedit file ini harus masuk sebagai root dengan
menambahkan perintah ‘sudo’ di depannya. Ketika di eksekusi (bash), maka
kalimat yang telah dibuat menggunakan $ echo akan ditampilkan ke layar.
b.
Asumsi nama anda student, maka edit
semua profile yang ada yaitu : /home/student/.bash_profile
/home/.
student/.bash_login
/home/student/.profile
/home/student/.bashrc
c.
Ganti nama /home/student
dengan nama anda sendiri. Pada setiap
file tersebut, cantumkan instruksi echo, misalnya pada /home/
student/.bash_profile:
echo “Profile dari .bash_profile”
d.
Lakukan hal yang sama untuk
file lainnya, sesuaikan tampilan dengan nama file yang bersangkutan.
Gambar di atas adalah untuk nomer b, c dan d. Untuk mengedit
file ini harus masuk sebagai root dengan menambahkan perintah ‘sudo’ di
depannya. Ketika di eksekusi (bash), maka kalimat yang telah dibuat menggunakan
$ echo akan ditampilkan ke layar.
2.
Jalankan instruksi
subtitute user, kemudian keluar dengan perintah exit sebagai berikut :
$ su student
$ exit
kemudian gunakan opsi – sebagai
berikut :
$ su – student
$ exit
Jelaskan perbedaan kedua utilitas
tersebut.
Pada
perintah yang pertama, file yang dijalankan yaitu fie .bashrc. File ini akan dieksekusi untuk perpindahan
dari satu shell ke shell yang lain melalui instruksi su. Dan ketika perintah
exit dijalankan, akan dimunculkan perintah tersebut. Sedangkan perintah yang
kedua menjalankan perintah .bash_profile untuk mengakses profil user dan file
.bashrc. Maka sistem akan masuk ke shell user, hal ini ditandai dengan nama
sistem yang tidak berwarna seperti sebelumnya. Ketika exit, maka akan logout
dan kembali sistem user, warna sistem kembali berwarna seperti semula.
3.
Logout
a.
Edit file .bash_logout,
tampilkan pesan dan tahan selama 5 detik, sebelum eksekusi logout
Echo
“Terima kasih atas sesi yang diberikan”
Sleep
5
Clear
b.
Edit file .bash_logout,
tampilkan pesan dan tahan selama 4 detik, sebelum eksekusi logout
Gambar di atas adalah untuk nomor a dan b. Ketika file
.bash_logout dijalankan, kalimat pada ‘echo’ akan ditampilkan sebelum sleep
selama 5 detik, kemudian perintah $ clear akan dijalankan. Perintah ini adalah
untuk membersihkan layar seperti sedia kala, namun masih bisa di gulir ke atas
(scroll up).
4.
History
a.
Ganti nilai HISTSIZE dari
1000 menjadi 20
$
HISTSIZE=20
$
h
Setelah
ukuran history diubah menjadi 20, ketika menjalankan perintah h tidak muncul. H
adalah nama alias yang dibuat manual pada percobaan sebelumnya, namun ama alias
ini telah dihapus. Oleh karena itu akan muncul error ketika mengaksesnya.
b.
Gunakan fasilitas history
dengan mengedit instruksi baris ke 5 dari instruksi yang terakhir dilakukan.
$
!-5
c.
Ulangi instruksi yang
terakhir. Gunakan juga ^P dan ^N untuk
bernavigasi pada history buffer
$
!!
Gambar
di atas adalah untuk poin b dan c. Perintah ke-5 sebelum terakhir adalah $ h
yang memunculkan pesan error karena tidak ada nama alias ‘h’. Dan perintah $ !!
adalah untuk menjalankan perintah sebelumnya, yaitu $ h.
d.
Ulaingi instruksi pada
history buffer nomor tertentu, misalnya nomor 150
$
!150
Ketika pertama kali menjalankan percobaan ini, terdapat pesan
error. Hal ini dikarenakan, pada percobaan sebelumnya, ukuran history telah
diubah menjadi 20, sehingga tidak ada perintah dengan nomor buffer 150. Setelah
buffer diubah, barulah perintah ini bisa dijalankan. Pada percobaan ini,
intruksi dengan nomor buffer 150 adalah $ ls mydir.
e.
Ulangi instruksi dengan
prefix “ls” Ketika menjalankan perintah ini, terdapat pesan error karena ukuran
history
$
!ls
$ !?ls?
Jelaskan perbedaan instruksi diatas
Perbedaan
diantara 2 command tersebut adalah !ls akan menjalankan perintah ls yang
terakhir kali dilakukan, sedangkan !?ls? akan mencari perintah terakhir yang
mengandung kata kunci ls. Dalam case diatas hasilnya sama karena perintahnya
bertepatan sama.
5.
Prompt String (PS)
a.
Edit file .bash_profile,
ganti prompt PS1 dengan ‘>’.
Instruksi export diperlukan dengan parameter nama variable tersebut,
agar perubahan variable PS1 dikenal oleh semua shell
PS1=’>
‘ export PS1
Eksperimen
hasil PS1 :
$ PS1=“\! > “
69 > PS1=”\d
> “
Mon Sep 23 > PS1=”\t
> “
10:10:20 > PS1=”Saya=\u
> “
Saya=stD02001 > PS1=”\w
>”
~ > PS1=\h >”
Perintah ini untuk masuk ke shell prompt 1
dan mengganti namanya sesuai sistem dan tanda yang digunakan menjadi ‘>’.
b.
Ubahlah warna shell prompt
dengan warna biru dan berkedip.
Warna biru diwakili dengan nomor 34 dan berkedip diwakili
dengan nomor 5.
6.
Bash script
a.
Buat 3 buah script p1.sh,
p2.sh, p3.sh dengan isi masing-masing :
p1.sh
#!
/bin/bash
echo
“Program p1”
ls
–l
p2.sh
#!
/bin/bash
echo
“Program p2”
who
p3.sh
#!
/bin/bash echo “Program p3”
ps
x
b. Jalankan script tersebut sebagai berikut dan perhatikan hasilnya
:
$ ./p1.sh
; ./p3.sh ; ./p2.sh
Yang bisa
dieksekusi hanya file yang pertama, yaitu p1.sh.
$ ./p1.sh
&
Perintah akan dijalankan di background dan
harus diselesaikan menggunakan CTRL+C.
$ ./p1.sh
$ ./p2.sh & ./p3.sh &
Perintah p1.sh dan p2.sh akan dieksekusi
bersamaan namun hanya p1 yang ditampilkan, sedangkan akses ke p3.sh ditolak.
$ (
./p1.sh ; ./p3.sh ) &
Hanya file p1.sh yang dijalankan, akses ke
file p3.sh ditolak. File yang dieksekusi akan berjalan di background dan akan
berhenti jika diselesaikan menggunakan CTRL+C.
7. Jobs
a.
Buat shell-script yang
melakukan loop dengan nama pwaktu.sh,
setiap 10 detik, kemudian menyimpan tanggal dan jam pada file hasil.
#!/bin/bash
while
[ true ]
do
date >> hasil
sleep 10
Gambar di atas
adalah tampilan di editor vi.
b.
Jalankan sebagai
background; kemudian jalankan satu program (utilitas find) di background
sebagai berikut :
$ jobs
$ find / -print > files 2>/dev/null &
$ jobs
File yang
menggunakan symbol ‘&’ akan dijalankan sebagai di background. Hal ini
diketahui dari statusnya yang ‘Running’.
c.
Jadikan program ke 1
sebagai foreground, tekan ^Z dan kembalikan program tersebut ke background
$
fg %1
$
bg
Pada percobaan ini, nomor job yang akan diubah ke foreground
adalah job nomor 2.
d. Stop
program background dengan utilitas kill
$ ps x
$ kill [Nomor PID]
Status ‘Terminated’ artinya
perintah diberhentikan (kill).
KESIMPULAN
1.
Mengakses file bash tidak
bisa sebagai user biasa. Bisa sebagai root dengan menambahkan ‘sudo’ di awal
perintah.
2.
History untuk melihat semua
perintah yang pernah dijalankan sistem. Untuk mengaksesnya bisa menggunakan
nama perintah atau nomor perintah.
3.
Ketika menjalankan beberapa
script sekaligus, dalam memisahkan nama scriptnya bisa menggunakan symbol ‘;’, ‘&’
dan ‘$’. Simbol ‘;’ hanya akan mengeksekusi file paling pertama, symbol ‘$’
akan mengeksekusi file bersamaan dengan file sebelumnya namun file yang kedua
akan dijalankan di background. Sedangkan symbol ‘&’ untuk mengeksekusi file
di background.
Komentar
Posting Komentar