Modul Linux
Modul Linux
By Dony Ariyus,M.Kom
Praktikum 1
Perintah Dasar Sistem Operasi
Linux
POKOK BAHASAN:
TUJUAN BELAJAR:
DASAR TEORI:
Setiap pemakai LINUX harus mempunyai nama login (user account) yang sebelumnya
harus didaftarkan pada administrator system. Nama login umumnya dibatasi maksimum 8
karakter dan umumnya dalam huruf kecil. Prompt dari shell bash pada LINUX menggunakan
tanda $. Sebuah sesi LINUX terdiri dari :
1. Login
2. Bekerja dengan Shell / menjalankan aplikasi
3. Logout
Tergantung atas shell yang digunakan, pada Linux bash maka pada proses login akan
mengeksekusi program /etc/profile (untuk semua pemakai) dan file .base_profile di direktori
awal (HOME) masing- masing. Pada saat logout, maka program shell bash akan
mengeksekusi script yang bernama .bash_logout.
Contoh :
$ ls tanpa argumen
$ ls a option adalah a = all, tanpa argumen
$ ls /bin tanpa option, argumen adalah /bin
$ ls /bin /etc /usr ada 3 argumen
$ ls l /usr 1 option dan 1 argumen l = long list
$ ls la /bin /etc 2 option l dan a dan 2 argumen
2. MANUAL
Linux menyediakan manual secara on-line. Beberapa kunci keyboard yang penting dalam
menggunakan manual adalah :
$ id
$ man ls
$ man man
$ man k file
$ man 5 passwd
Percobaan 6 : Menghapus layer
$ clear
Percobaan 8 : Mencari perintah yang tepat sama dengan kunci yang dicari
$ whatis date
1. Menggunakan instruksi mv
$ mv f1 prog.txt
$ ls
2. Memindahkan file ke direktori lain. Bila argumen terakhir adalah nama direktori,
maka berkas-berkas akan dipindahkan ke direktori tersebut.
$ mkdir mydir
$ mv f1 f2 f3 mdir
LATIHAN:
1. Ubahlah informasi finger pada komputer Anda.
2. Lihatlah user-user yang sedang aktif pada komputer Anda.
3. Perintah apa yang digunakan untuk melihat kalender satu tahun penuh ?
4. Bagaimana anda dapat melihat manual dari perintah cal ?
5. Bagaimana melihat perintah manual ls dengan kata kunci sort ?
6. Bagaimana tampilan untuk perintah ls a l dan ls al ?
7. Tampilkan semua file termasuk yang hidden file pada direktori /etc.
8. Tampilkan semua file secara lengkap pada direktori /etc.
9. Buatlah direktori prak1 pada direktori aktif, kemudian copy-kan file /etc/group
ke file tes1, tes2 dan tes3 pada direktori ini.
10. Tampilkan isi file tes1 per satu layar penuh.
11. Pindahkan file tes1 dan tes2 ke home direktori.
12. Hapus file tes1 dan tes dengan konfirmasi.
LAPORAN RESMI:
Pipeline
Redirection
TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami konsep proses I/O dan redirection
Memahami standar input, output dan error
Menggunakan notasi output, append dan here document
Memahami konsep PIPE dan filter
DASAR TEORI:
1. PROSES I/O
Sebuah proses memerlukan Input dan Output.
Instruksi (command) yang diberikan pada Linux melalui Shell disebut sebagai eksekusi
program yang sela njutnya disebut proses.
Setiap kali instruksi diberikan, maka Linux kernel akan menciptakan sebuah proses dengan
memberikan nomor PID (Process Identity). Proses dalam Linux selalu membutuhkan Input
dan menghasilkan suatu Output.
2 FILE DESCRIPTOR
Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan melalui
angka yang dimulai dari 0, 1, 2 dan seterusnya.
Tiga buah file descriptor standar yang lalu diciptakan oleh proses adalah :
0 = keyboard (standar input)
1 = layar (standar output)
2 = layar (standar error)
Linux tidak membedakan antara peralatan hardware dan file, Linux memanipulasi peralatan
hardware sama dengan file.
3 PEMBELOKAN (REDIRECTION)
Pembelokan dilakukan untuk standard input, output dan error, yaitu untuk mengalihkan file
descriptor dari 0, 1 dan 2. Simbol untuk pembelokan adalah :
4 PIPA (PIPELINE)
Proses 1 menghasilkan output yang selanjutnya digunakan sebagai input oleh Proses 2.
Hubungan output input ini dinamakan pipa, yang menghubngkan Proses 1
dengan Proses2 dan dinyatakan dengan symbol |.
Proses1 | Proses2
5 FILTER
Filter adalah utilitas Linux yang dapat memproses standard input (dari keyboard) dan
menampilkan hasilnya pada standard output (layar). Contoh filter adalah
cat, sort, grep, pr, head, tail, paste dan lainnya.
P1 | P2 | P3 . | Pn-1 | Pn
Maka P2 sampai dengan Pn-1 mutlak harus utilitas Linux yang berfungsi sebagai filter. P 1
(awal) dan Pn (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya
Beberapa perintah Linux yang digunakan untuk proses penyaringan antara lain :
Perintah grep
Digunakan untuk menyaring masukannya da n 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 baris-baris
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 untuk mengambil kolom tertentu dari baris-baris masukannya, yang
ditentukan pada option c.
Perintah uniq
Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi,
biasanya digabungkan dalam pipeline dengan sort.
TUGAS PENDAHULUAN:
PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini.
Perhatikan hasil setiap percobaan.
3. Selesaikan soal-soal latihan.
LATIHAN:
1. Lihat daftar secara lengkap pada direktori aktif, belokkan tampilan standard output ke
file baru.
2. Lihat daftar secara lengkap pada direktori /etc/passwd, belokkan tampilan
standard output ke file baru tanpa menghapus file baru sebelumnya.
3. Urutkan file baru dengan cara membelokkan standard inp ut.
4. Urutkan file baru dengan cara membelokkan standard input dan standard output ke
file baru.urut.
5. Buatlah direktori latihan2 sebanyak 2 kali dan belokkan standard error ke file
rmdirerror.txt.
6. Urutkan kalimat berikut :
Jakarta
Bandung
Surabaya
Padang
Palembang
Lampung
Dengan menggunakan notasi here document (<@@@ @@@)
7. Hitung jumlah baris, kata dan karakter dari file baru.urut dengan menggunakan
filter dan tambahkan data tersebut ke file baru.
8. Gunakan perintah di bawah ini dan perhatikan hasilnya.
$ cat > hello.txt
dog cat
cat duck
dog chicken
chicken duck
chicken cat
dog duck
[Ctrl-d]
$ cat hello.txt | sort | uniq
$ cat hello.txt | grep dog | grep v cat
LAPORAN RESMI:
1. Analisa hasil percobaan 1 sampai dengan 4, untuk setiap perintah jelaskan
tampilannya.
2. Kerjakan latihan diatas dan analisa hasilnya
3. Berikan kesimpulan dari praktikum ini.
Praktikum 3
Operasi File dan Struktur Direktory
POKOK BAHASAN:
TUJUAN BELAJAR:
DASAR TEORI:
1. ORGANISASI FILE
Sistem file pada Linux menyerupai pepohonan (tree), yaitu dimulai dari root, kemudian
direktori dan sub dirrektori. Sistem file pada Linux diatur secara hirarkhikal, yaitu dimulai
dari root dengan symbol / seperti Gambar 3.1. Kita dapat menciptakan File dan Direktori
mulai dari root ke bawah. Direktori adalah file khusus, yang berisi nama file dan INODE
(pointer yang menunjuk ke data / isi file tersebut). Secara logika, Direktori dapat berisi File
dan Direktori lagi (disebut juga Subdirektori).
Gambar 1.3 Struktur direktori pada Linux
2 DIREKTORY STANDAR
Setelah proses instalasi, Linux menciptakan system file yang baku, terdiri atas direktori
sebagai berikut :
Direktori /etc
Berisi file yang berhubungan dengan administrasi system, maintenance script, konfigurasi,
security dll. Hanya superuser yang boleh memodifikasi file yang berada di drektori ini.
Subdirektori yang sering diakses pada direktori /etc antara lain :
httpd, apache web server.
ppp, point to point protocol untuk koneksi ke Internet.
rc.d atau init.d, inisialisasi (startup) dan terminasi (shutdown) proses di Linux
dengan konsep runlevel.
cron.d, rincian proses yang dieksekusi dengan menggunakan jadwal(time dependent
process)
FILES, file security dan konfigurasi meliputi : passwd, hosts, shadow, ftpaccess,
inetd.conf, lilo.conf, motd, printcap, profile, resolv.conf, sendmail.cf, syslog.conf,
dhcp.conf, smb.conf, fstab .
Direktori /dev
Konsep Unix dan Linux adalah memperlakukan peralatan hardware sama seperti penanganan
file. Setiap alat mempunyai nama file yang disimpan pada direktori /dev.
Direktori /proc
Direktori /proc adalah direktori yang dibuat diatas RAM (Random Access Memory)
dengan system file yang diatur oleh kernel . /proc berisi nomor proses dari system dan
nama driver yang aktif di system. Semua direktori berukuran 0 (kosong) kecuali file kcore
dan self. Setiap nomor yang ada pada direktori tsb merepresentasikan PID (Process ID)
3 TIPE FILE
Pada Linux terdapat 6 buah tipe file yaitu
Ordinary file
Direktori
Block Device (Peralatan I/O)
Merupakan representasi dari peralatan hardware yang menggunakan transmisi data per block
(misalnya 1 KB block), seperti disk, floppy, tape.
Character Device (Peralatan I/O)
Merupakan representasi dari peralatan hardware yang menggunakan transmisi data karakter
per karakter, seperti terminal, modem, plotter dll
Named Pipe (FIFO)
File yang digunakan secara intern oleh system operasi untuk komunikasi antar proses
Link File
4 PROPERTI FILE
File mempunyai beberapa atribut, antara lain :
Tipe file : menentukan tipe dari file, yaitu :
5 NAMA FILE
Nama file maksimal terdiri dari 255 karakter berupa alfanumerik dan beberapa karakter
spesial yaitu garis bawah, titik, koma dan lainnya kecuali spasi dan karakter &, ;, |,
?, `, , , [, ], (, ), $, <, >, {, }, ^, #, \, /. Linux
membedakan huruf kecil dengan huruf besar (case sensitive). Contoh nama file yang benar :
Abcde5434
3
prog.txt
PROG.txt
Prog.txt,old
report_101,v2.0.1
5-01.web.html
6 SIMBOLIC LINK
Link adalah sebuah teknik untuk memberikan lebih dari satu nama file dengan data yang
sama. Bila file asli dihapus, maka data yang baru juga terhapus . Format dari Link :
ln fileAsli fileDuplikat
fileDuplikat disebut hard link dimana kedua file akan muncul identik (link count = 2)
Bila fileAsli atau ileDuplikat diubah perubahan akan terjadi pada file lainnya.
Symbolic Link diperlukan bila file tersebut di link dengan direktori /file yang berada pada
partisi yang berbeda. Tipe file menjadi l (link) dan file tersebut menunjuk ke tempat asal.
Format :
ln s /FULLPATH/fileAsli /FULLPATH/fileDuplikat
Pilihan s (shortcut) merupakan bentuk soft link dimana jumlah link count pada file asal
tidak akan berubah. Pada bentuk soft link, symbolic link dapat dilakukan pada file yang tidak
ada, sedangkan pada hard link tidak dimungkinkan. Perbedaan lain, symbolic link dapat
dibentuk melalui media disk atau partisi yang berbeda dengan soft link, tetapi pada hard link
terbatas pada partisi disk yang sama.
file filename(s)
Isi file akan dilaporkan dengan deskripsi level tinggin seperti contoh berikut
Perintah ini dapat digunakan secara luas untuk file yang kadang membingungkan, misalnya
antara kode C++ dan Java.
8 MENCARI FILE
Jika ingin melihat bagaimana pohon direktori dapat digunakan perintah
Find : Format : find directory name targetfile print Akan melihat
file yang bernama targetfile (bisa berupa karakter wildcard)
Which : Format : which command Untuk mengetahui letak system utility
Locate : Format : locate string Akan me ncari file pada semua directori dengan
lebih cepat dan ditampilkan dengan path yang penuh.
Grep akan mencari file yang bernama sesuai pattern yang diberikan dan akan menampilkan
baris yang sesuai.
TUGAS PENDAHULUAN:
PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini.
Perhatikan hasilnya.
3. Selesaikan soal-soal latihan
Percobaan 1 : Direktory
$ ls l
$ file halo.txt
$ file bye.txt
1. Perintah find
$ find /home name *.txt print > myerror.txt
$ cat myerror.txt
$ find . name *.txt exec wc l {} ;
2. Perintah which
$ which ls
3. Perintah locate
$ locate *.txt
LATIHAN:
1. Cobalah urutan perintah berikut :
$ cd
$ pwd
$ ls al
$ cd .
$ pwd
$ cd ..
$ pwd
$ ls -al
$ cd ..
$ pwd
$ ls -al
$ cd /etc
$ ls al | more
$ cat passwd
$ cd
$ pwd
$ ls l
$ file halo.txt
$ file bye.txt
2. Lanjutkan penelusuran pohon pada sistem file menggunakan cd, ls, pwd dan cat.
Telusuri direktory /bin, /usr/bin, /sbin, /tmp dan /boot.
3. Telusuri direktory /dev. Identifikasi perangkat yang tersedia. Identifikasi tty
(termninal) Anda (ketik who am i); siapa pemilih tty Anda (gunakan ls l).
4. Telusuri derectory /proc. Tampilkan isi file interrupts, devices, cpuinfo,
meminfo dan uptime menggunakan perintah cat. Dapatkah Anda melihat
mengapa directory /proc disebut pseudo -filesystem yang memungkinkan akses ke
struktur data kernel ?
5. Ubahlah direktory home ke user lain secara langsung menggunakan cd ~username.
6. Ubah kembali ke direktory home Anda.
7. Buat subdirektory work dan play.
8. Hapus subdirektory work.
9. Copy file /etc/passwd ke direktory home Anda.
10. Pindahkan ke subirectory play.
11. Ubahlah ke subdirektory play dan buat symbolic link dengan nama terminal
yang menunjuk ke perangkat tty. Apa yang terjadi jika melakukan hard link ke
perangkat tty ?
12. Buatlah file bernama hello.txt yang berisi kata hello word. Dapatkah Anda
gunakan cp menggunakan terminal sebagai file asal untuk menghasilkan efek
yang sama ?
13. Copy hello.txt ke terminal. Apa yang terjadi ?
14. Masih direktory home, copy keseluruhan direktory play ke direktory bernama work
menggunakan symbolic link.
15. Hapus direktory work dan isinya dengan satu perintah
LAPORAN RESMI:
1. Analisa hasil percobaan yang Anda lakukan.
a. Analisa setiap hasil tampilannya.
b. Pada Percobaan 1 point 3 buatlah pohon dari struktur file dan direktori
c. Bila terdapat pesan error, jelaskan penyebabnya.
2. Kerjakan latihan diatas dan analisa hasil tampilannya.
3. Berikan kesimpulan dari praktikum ini.
Praktikum 4 A
Proses dan Manajemen Proses
POKOK BAHASAN:
TUJUAN BELAJAR:
DASAR TEORI:
Proses dapat mengirim dan menerima sinyal dari dan ke proses lainnya. Proses mengirim
sinyal melalui instruksi kill dengan format
Nomor sinyal : 1 s/d maksimum nomor sinyal yang didefinisikan system Standar nomor
sinyal yang terpenting adalah :
3 MENGIRIM SINYAL
Mengirim sinyal adalah satu alat komunikasi antar proses, yaitu memberitahukan proses yang
sedang berjalan bahwa ada sesuatu yang harus dikendalikan. Berdasarkan sinyal yang dikirim
ini maka proses dapat bereaksi dan administrator/programmer dapat menentukan reaksi
tersebut. Mengirim sinyal menggunakan instruksi
Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui terlebih dahulu.
Shell menyediakan fasilitas job control yang memungkinkan mengontrol beberapa job atau
proses yang sedang berjalan pada waktu yang sama. Misalnya bila melakukan pengeditan file
teks dan ingin melakukan interrupt pengeditan untuk mengerjakan hal lainnya. Bila selesai,
dapat kembali (switch) ke editor dan melakukan pengeditan file teks kembali.
Job bekerja pada foreground atau background. Pada foreground hanya diper untukkan
untuk satu job pada satu waktu. Job pada foreground akan mengontrol shell - menerima input
dari keyboard dan mengirim output ke layar. Job pada background tidak menerima input dari
terminal, biasanya berjalan tanpa memerlukan interaksi.
Job pada foreground kemungkinan dihentikan sementara (suspend), dengan menekan [Ctrl-
Z]. Job yang dihentikan sementara dapat dijalankan kembali pada foreground atau
background sesuai keperluan dengan menekan fg atau bg . Sebagai catatan,
menghentikan job seme ntara sangat berbeda dengan melakuakan interrupt job (biasanya
menggunakan [Ctrl-C]), dimana job yang diinterrup akan dimatikan secara permanen dan
tidak dapat dijalankan lagi.
Perintah ps dapat digunakan untuk menunjukkan semua proses yang sedang berjalan pada
mesin (bukan hanya proses pada shell saat ini) dengan format :
ps fae atau
ps -aux
Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang menyediakan cara
interaktif untuk memonitor aktifitas sistem. Statistik secara detail dengan proses yang
berjalan ditampilkan dan secara terus-menerus di-refresh. Proses ditampilkan secara terurut
dari utilitas CPU. Kunci yang berguna pada top adalah
Utilitas untuk melakukan pengontrolan proses dapat ditemukan pada system UNIX adalah
perintah killall. Perintah ini akan menghentikan proses sesuai PID atau job number
proses.
TUGAS PENDAHULUAN:
PERCOBAAN:
LATIHAN:
LAPORAN RESMI:
TUJUAN BELAJAR:
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
PATH : merupakan daftar nama direktori. Bila sebuah instruksi diberikan dariprompt
shell, maka instruksi tersebut akan dicari pada daftar tersebut.
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.
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.
diting
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.
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:
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
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
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 sistem.
$ 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 tsb 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 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
8. Output menunjukkan bahwa 1000 perintah history disimpan pada file history. Untuk
melihat jangkauan (limit) perintah history digunakan variable HISTSIZE. Untuk
melihat jangkauan history ketik sebagai berikut
$ set|grep HISTSIZE
9. Bila ingin memperbesar jangkauan file history, maka ubahlah variable 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 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.
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:
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:
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 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
>
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 berwar na 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
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 9 : Alias
1. Alias adalah mekanisme untuk memberi nama alias pada satu atau sekelompok
instruksi. Untuk melihat alias yang sudah terdaftar pada system :
$ alias
2. Membuat beberapa alias
$ alias del=rm i
$ alias h=history
3. Gunakan instruksi hasil alias
$ ls
$ del hasil
$ h | more
4. Untuk menghapus alias gunakan instruksi unalias
$ unalias del
$ del files (Terdapat Pesan Kesalahan, mengapa ?)
LATIHAN:
1. Eksekusi seluruh profile yang ada :
a. Edit file profile /etc/profile dan tampilkan pesan seba gai berikut :
echo Profile dari /etc/profile
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.
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.
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
4. History
a. Ganti nilai HISTSIZE dari 1000 menjadi 20
$ HISTSIZE=20
$ h
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
$ !!
d. Ulaingi instruksi pada history buffer nomor tertentu, misalnya nomor 150
$ !150
e. Ulangi instruksi dengan prefix ls
$ !ls
$ !?ls?
Jelaskan perbedaan instruksi diatas
5. Prompt String (PS)
a. Edit file .bash_profile, ganti prompt PS1 dengan >. Instruksi export
diperlukan dengan parameter nama variab le 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 >
b. Ubahlah warna shell prompt dengan warna biru dan berkedip.
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
$ ./p1.sh &
$ ./p1.sh $ ./p2.sh & ./p3.sh &
$ ( ./p1.sh ; ./p3.sh ) &
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
done
b. Jalankan sebagai background; kemudian jalankan satu program (utilitas find)
di background sebagai berikut :
$ jobs
$ find / -print > files 2>/dev/null &
$ jobs
c. Jadikan program ke 1 sebagai foreground, tekan ^Z dan kembalikan program
tersebut ke background
$ fg %1
$ bg
d. Stop program background dengan utilitas kill
$ ps x
$ kill [Nomor PID]
LAPORAN RESMI:
1. Analisa hasil percobaan yang Anda lakukan.
2. Kerjakan latihan diatas dan analisa hasil tampilannya.
3. Berikan kesimpulan dari praktikum ini.
Praktikum 6-A
Pemrograman Shell
POKOK BAHASAN:
Pemrograman Shell
TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mempelajari elemen dasar shell script
Membuat program shell interaktif
Menggunakan parameter dalam program
Mempelajari test kondisi serta operator logic yang terkait dengan instruksi test
Mengenal variable built-in dari shell
Membuat aplikasi dengan shell menggunakan konstruksi if-then-else
Menggunakan struktur case esac.
Loop dengan while, for, do while.
Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.
DASAR TEORI:
1 SHELL SCRIPT
Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi .sh.
Script selalu diawali dengan komentar, yang dimulai dengan tanda #, disambung dengan !
dan nama shell yang digunakan.
#!/bin/sh (1)
# Program shell (2)
#
var1=x (3)
var2=8
(1) Awal dari program shell, komentar awal ini akan dibaca oleh system, kemudian
system mengaktifkan program shell (/bin/sh) yang tertera di situ. Program shell
dapat dipilih, misalnya /bin/csh, /bin/ksh dan lainnya
(2) Adalah komentar, sebagai dokumentasi, baris ini akan diabaikan oleh program
shell
(3) Penggunaan variable (assignment), tidak boleh ada spasi di antara nama variable
dan konstanta
2 VARIABEL
Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String. Tata penulisan
variable adalah sebagai berikut :
nama_var = nilai_var
Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter lain. Variabel
dapat ditulis dalam huruf kecil atau huruf besar atau campuran keduanya. Shell membedakan
huruf besar dan huruf kecil (case sensitive), contoh :
VPT=Teknik Informatika
i=5
Pemberian nilai variable tidak boleh dipisahkan dengan spasi, karena shell akan menganggap
pemisahan tersebut sebagai parameter, contoh :
VPT = Teknik Informatika ##error
VPT = Teknik Informatika ##error
Untuk melihat nilai/isi dari sebuah variable, gunakan tanda $ di depan nama variable
tersebut. Pada shell, instruksi echo dapat menampilkan isi variable tersebut,
contoh :
VPT= Teknik Informatika
echo $VPT
Gaji=850000
echo $Gaji
echo $VPT $Gaji
Bila menggunakan string yang terdiri dari lebih dari satu kata, maka string tersebut harus
berada dalam tanda kutip atau apostrof, contoh :
VPT= Teknik Informatika
VPT2= Teknik Informatika Amikom
3 MEMBACA KEYBOARD
Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read.
4 PARAMETER
Sebuah program shell dapat mempunyai parameter sebanyak 9 buah dan direpresentasikan
melalui variable khusus yaitu variable $!, $2, $3, $4, $5, $6, $7, $8 dan $9. Nama program
she ll (nama script) direpresentasikan melalui variable $0. Jumlah parameter dinyatakan
sebagai $#. Bila tidak memberikan parameter, maka nilai $# adalah 0.
Shell variable $* menyatakan seluruh string yang menjadi parameter / argument sebuah script
($@ mempunyai arti yang sama). $$ menyatakan nomor proses id (pid) dari script yang
dijalankan. Pid ini akan terus berubah (umumnya) menaik, setiap kali proses berjalan.
5 STATUS EXIT
Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variable
spesial $?. Indikasi yang diberikan adalah :
Bila program berakhir dengan sukses, $? = 0
Bila program berakhir dengan error, $? 0
Nilai dari status exit dapat dilihat melalui instruksi echo $?
6 KONSTRUKSI IF
if instruksi-awal
then
instruksi1
instruksi2
fi
if akan mengeksekusi instruksi-awal, dan exit status dari instruksi tersebut akan menjadi
kondisi. Bila 0, maka instruksi selanjutnyua masuk ke dalam blok then. Bila tidak 0, maka
alur program diteruskan setelah kunci kata fi.
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else
akan dijalankan.
8 INSTRUKSI TEST
Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi. Ekspresi terdiri dari
factor dan operator yang dipisahkan oleh spasi. Hasil test akan memberikan nilai berupa
status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka hasil adalah 0.
NOT : symbol !
AND : symbol -a
OR : symbol -o
12 KONSTRUKSI IF THEN ELSE IF
if instruksi1
then
instruksi1.1
instruksi1.2
elif instruksi2
then
instruksi2.1
instruksi2.2
else
instruksi3.1
instruksi3.2
fi
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else
akan dijalankan.
13 HITUNGAN ARITMETIKA
Tipe dari variable SHELL hanya satu yaitu STRING. Tidak ada tipe lain seperti Numerik,
Floating, Boolean ata u lainnya. Akibatnya variable ini tidak dapat membuat perhitungan
aritmetika, misalnya :
A=5
B=$A +1 ## error
UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang melakukan
aritmetika sederhana.
14 INSTRUKSI EXIT
Program dapat dihentikan (terminated/selesai) dengan instruksi exit. Sebagai nilai default
program tersebut akan memberikan status exit 0.
15 KONSTRUKSI CASE
Case digunakan untuk menyederhanakan pemakaian if yang berantai, sehingga dengan
case, kondisi dapat dikelompokkan secara logis dengan lebih jelas dan mudah untuk
ditulis.
case variable in
match1)
instruksi1.1
instruksi1.2
;;
match2)
instruksi2.1
instruksi2.2
;;
*)
instruksi3.1
instruksi3.2
;;
esac
Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan ;;. Pada akhir
pilihan yaitu *) yang berarti adalah default, bila kondisi tidak memenuhi pola sebelumnya
16 KONSTRUKSI FOR
For digunakan untuk pengulangan dengan menggunakan var yang pada setiap
pengulangan akan diganti dengan nilai yang berada pada daftar (list).
17 KONSTRUKSI WHILE
While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan suatu kondisi.
Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan. Loop akan berhenti, bila
kondisi FALSSE, atau program keluar dari blok while melalui exit atau break.
while kondisi
do
instruksi1
instruksi2
done
18 INSTRUKSI DUMMY
Instruksi dummy adalah instruksi yang tidak melakukan apa -apa, namun instruksi ini
memberikan status exit 0 (TRUE). Oleh karena itu, instruksi dummy dapat digunakan sebagai
kondisi forever pada loop (misalnya while). Simbol instruksi dummy adalah :
19 FUNGSI
Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan
notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr,
atau nilai 0 sebagai default. Membuat fungsi diawali dengan nama fungsi, parameter,
kemudian blok program yang dinyatakan dalam { }.
Contoh :
F1( ) {
..
..
return 1
}
Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu
diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok
dengan nama variable yang sam adi luar fungsi, sehingga tidak terjadi isi variable berubah.
TUGAS PENDAHULUAN:
Sebagai tugas pendahuluan, bacalah dasar teori diatas kemudian buatlah program Shell untuk
Latihan 1 sampai dengan 5.
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 4 : Parameter
1. Membuat shell script prog04.sh
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 1
# Parameter passing
#
echo Nama program adalah $0
echo Parameter 1 adalah $1
echo Parameter 2 adalah $2
echo Parameter 3 adalah $3
2. Eksekusi prog04.sh tanpa parameter, dengan 2 parameter, dengan 4 parameter
$ . prog04.sh
$ . prog04.sh Dony Ariyus
$ . prog04.sh Dony Ariyus Randyka Pransisco
3. Membuat shell script prog04.sh versi 2 dengan memberikan jumlah parameter
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 2
# Parameter passing
#
echo Jumlah parameter yang diberikan adalah $#
echo Nama program adalah $0
echo Parameter 1 adalah $1
echo Parameter 2 adalah $2
echo Parameter 3 adalah $3
4. Eksekusi prog04.sh tanpa parameter dan dengan 4 parameter
$ . prog04.sh
$ . prog04.sh Dony Ariyus Randyka Pransisco
5. Membuat shell script prog04.sh versi 3 dengan menambahkan total parameter dan
nomor proses id (PID)
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 3
# Parameter passing
#
echo Jumlah parameter yang diberikan adalah $#
echo Nama program adalah $0
echo Parameter 1 adalah $1
echo Parameter 2 adalah $2
echo Parameter 3 adalah $3
echo Total parameter adalah $*
echo PID proses shell ini adalah $$
6. Eksekusi prog04.sh dengan 4 parameter
$ . prog04.sh Dony Ariyus Randyka Pransisco
Percobaan 6 : Konstruksi if
1. Instruksi dengan exit status 0
$ who
$ who | grep <user>
$ echo $?
2. If membandingkan exit status dengan 0, bila sama, maka blok program masuk ke
dalam blok then-fi
$ if [ $? = 0 ]
then
echo Pemakai tersebut sedang aktif
fi
3. Nomor (1) dan (2) diatas dapat disederhanakan dengan
$ if who|grep <user> >/dev/null
then
echo okay
fi
case $JWB in
y | Y | ya |Ya |YA ) JWB=y ;;
t | T | tidak | Tidak | TIDAK ) JWB=t ;;
esac
4. Jalankan program prog10.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog10.sh
5. Modifikasi file prog10.sh yang merupakan bentuk lain dari case
$ vi prog10.sh
#!/bin/sh
# Prog: prog10.sh
case $JWB in
[yY] | [yY][aA] ) JWB=y ;;
[tT] | [tT]idak ) JWB=t ;;
*) JWB=? ;;
esac
6. Jalankan program prog10.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog10.sh
Percobaan 15 : Konstruksi for-do-done
1. Buatlah file prog11.sh
$ vi prog11.sh
#!/bin/sh
# Prog: prog11.sh
for F in *
do
echo $F
done
4. Jalankan program prog12.sh
$ . prog12.sh
5. Modifikasi file prog12.sh, program ini akan menampilkan long list dari file yang
mempunyai ekstensi lst
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *.lst
do
ls l $F
done
6. Jalankan program prog12.sh
$ . prog12.sh
PILIH=1
while [ $PILIH ne 4 ]
do
echo 1. Siapa yang aktif
echo 2. Tanggal hari ini
echo 3. Kalender bulan ini
echo 4. Keluar
echo Pilihan : \c
read PILIH
if [ $PILIH eq 4 ]
then
break
fi
clear
done
echo Program berlanjut di sini setelah break
2. Jalankan program prog13.sh
$ . prog13.sh
PILIH=1
while :
do
echo 1. Siapa yang aktif
echo 2. Tanggal hari ini
echo 3. Kalender bulan ini
echo 4. Keluar
echo Pilihan : \c
read PILIH
if [ $PILIH eq 4 ]
then
break
fi
clear
done
echo Program berlanjut di sini setelah break
2. Jalankan program prog13.sh
$ . prog13.sh
3. Buatlah file prog14.sh yang berisi instruksi dummy untuk konstruksi if
$ vi prog14.sh
#!/bin/sh
# Prog: prog14.sh
F1( ) {
echo Fungsi F1
return 1
}
echo Menggunakan Fungsi
F1
F1
echo $?
2. Jalankan program fungsi.sh
$ . fungsi.sh
3. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( )
{
Honor=10000
echo Fungsi F1
return 1
}
echo Menggunakan Fungsi
F1
F1
echo Nilai balik adalah $?
echo Honor = $Honor
4. Jalankan program fungsi.sh
$ . fungsi.sh
5. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( )
{
local Honor=10000
echo Fungsi F1
return 1
}
echo Menggunakan Fungsi
F1
F1
echo Nilai balik adalah $?
echo Honor = $Honor
6. Jalankan program fungsi.sh
$ . fungsi.sh
LATIHAN:
1. Buatlah program salin.sh yang menyalin file (copy ) sebagai berikut : salin.sh
file-asal file-tujuan Dengan ketentuan :
a. Bila file asal tidak ada, berikan pesan, salin gagal.
b. Bila file tujuan ada dan file tersebut adalah directory, beri pesan bahwa file
tidak bisa disalin ke direktori
c. Bila file tujuan ada dan file biasa, beri pesan apakan file tersebut akan
dihapus, bila dijawab dengan Y, maka copy file tersebut
d. Bila file tujuan belum ada, lakukan copy
Untuk mengambil nama file, gunakan parameter $1 dan $2. Bila jumlah parameter
tidak sama ($#) dengan 2, maka beri pesan exit = -1
#!/bin/sh
# file: salin.sh
# Usage: salin.sh fasal ftujuan
if [ $# -ne 2]
then
echo Error, usage: salin.sh file-asal file-tujuan
exit 1
fi
fasal=$1
ftujuan=$2
echo salin.sh $fasal $ftujuan
2. Buat program yang memeriksa nama direktori, jika parameter tersebut adalah
direktori, maka jalankan instruksi ls ld pada direktori tersebut. Namakan program
tersebut checkdir.sh. Gunakan notasi [ -d NamaDirektori ] dan pilih logic al && atau
|| pada level shell.
#!/bin/sh
# file: checkdir.sh
# Usage: checkdir.sh DirectoryName
#
if [ $# -ne 1]
then
echo Error, usage: checkdir.sh DirectoryName
exit 1
fi
[ ] &&
3. Dengan shell script pph.sh, hitung PPH per tahun dengan ketentuan sebagai berikut:
a. 10 juta pertama PPH 15%
b. 25 juta berikutnya (sisa) PPH 25%
c. Bila masih ada sisa, maka sisa tersebut PPH 35%
Contoh :
Gaji 8 juta
PPH = 15% * 8 juta
Gaji 12 juta
PPH =15% * 10 juta + 25% * (12-10) juta
Gaji 60 juta
PPH = 15% * 10 juta + 25% * 25 juta + 25% * (60-10-25) juta
Debugging : untuk melakukan tracing (debug) gunakan opsi x pada eksekusi shell.
$ sh x pph.sh
+ echo n Berikan gaji dalam ribuan rupiah :
Berikan gaji dalam ribuan rupiah : + read gaji
20000
+ pkp=10000
+ [ 20000 le 10000 ]
++ expr 20000 10000
+ gaji=10000
+ pph=1500
+ pkp=25000
+ [ 10000 le 25000 ]
+ pkp=10000
++ expr 1500 + 10000 * 25 / 100
+ pph=4000
+ echo Pajak Penghasilan = 4000
Pajak Penghasilan = 4000
4. Buatlah program myprog.sh yang memproses parameter $1, nilai parameter harus
berupa string :
start
stop
status
restart
reload
Bila buka dari string tersebut, maka berikan pesan error. Sempurnakan program di
bawah ini untuk keperluan tersebut
#!/bin/sh
# See how we were called
case $1 in
start)
echo Ini adalah start
;;
stop)
echo Ini adalah stop
;;
*)
echo $Usage:$0 {start|stop|restart|reload|status}
;;
esac
return
5. Buat sebuah fungsi pada script confirm.sh yang memberikan konfirmasi jawaban
Yes, No atau Continue. Jika jawaban Yes, maka beri nilai balik 0, No = 1 dan
Continue = 2. Modifikasi kerangka program berikut untuk memenuhi permintaan
tersebut.
#!/bin/sh
# Confirm whether we really want to run this service
confirm() {
local YES=Y
local NO=N
local CONT=C
while :
do
echo n (Y)es/(N)o/(C)ontinue? {Y]
read answer
answer=`echo $answer | tr [a-z] [A-Z]`
Perhatikan baris pertama, adalah loading dari fungsi confirm yang terdapat di script
confirm.sh. Setelah eksekusi script tersebut, maka fungsi confirm dapat digunakan.
LAPORAN RESMI:
1. Analisa hasil percobaan yang Anda lakukan.
2. Kerjakan latihan diatas dan analisa hasil tampilannya.
3. Berikan kesimpulan dari praktikum ini.