Praktikum Sistem Operasi By Dony Ariyus,M.

Kom

Perintah Dasar Sistem Operasi Linux
POKOK BAHASAN:
Format Instruksi pada Sistem Operasi Linux Perintah-Perintah Dasar pda Sistem Operasi Linux

Praktikum 1

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:     Menggunakan perintah-perintah dasar untuk informasi user Mengenal format instruksi pada system operasi Linux Menggunakan perintah-perintah dasar pada system operasi Linux Menggunakan utilitas dasar pada system operasi Linux

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.

1. FORMAT INSTRUKSI LINUX
Instruksi Linux standar mempunyai format sebagai berikut :
$ NamaInstruksi [pilihan] [argumen]

Pilihan adalah option yang dimulai dengan tanda – (minus). Argumen dapat kosong, satu atau beberapa argumen (parameter). Contoh :
$ $ $ $ $ $ ls ls ls ls ls ls

tanpa argumen –a option adalah –a = all, tanpa argumen /bin tanpa option, argumen adalah /bin /bin /etc /usr ada 3 argumen –l /usr 1 option dan 1 argumen l = long list –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 :
Q <Enter> <Spasi> b /teks n

untuk keluar dari program man ke bawah, baris per baris ke bawah, per halaman kembali ke atas, 1 halaman mencari teks (string) meneruskan pencarian string sebelumnya

Manual dibagi atas Bab-bab sebagai berikut :

Bab 1 2 3 4 5 6 7 8 9 N

Isi User commands System calls Library calls Devices File format Games Miscellaneous System commands Kernel Internals Tcl/TK command

TUGAS PENDAHULUAN:
Jawablah pertanyaan-pertanyaan di bawah ini : 1. Apa yang dimaksud perintah informasi user di bawah ini : 2. Apa yang dimaksud perintah dasar di bawah ini :
date, cal, man, clear, apropos, whatis

id, hostname, uname, w, who, whoami, chfn, finger

3. Apa yang dimaksud perintah-perintah manipulasi file di bawah ini :
ls, file, cat, more, pg, cp, mv, rm, grep

PERCOBAAN:
1. Login sebagai user. 2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini 3. Selesaikan soal-soal latihan

Percobaan 1 : Melihat identitas diri (nomor id dan group id)
$ id

Percobaan 2 : Melihat tanggal dan kalender dari system
1. Melihat tanggal saat ini
$ date

2. Melihat kalender
$ cal 18 2008 $ cal -y

Percobaan 3 : Melihat identitas mesin
$ hostname $ uname $ uname -a

Mengubah informasi finger $ chfn <user> Changing finger information for student. $ finger $ finger <user> 3. Mengetahui siapa saja yang sedang aktif $ w $ who $ whoami 2. Menampilkan current working directory $ ls 2. Melihat semua file lengkap $ ls –l 3. Menampilkan semua file atau direktori yang tersembunyi . Melihat informasi finger Percobaan 5 : Menggunakan manual $ $ $ $ man man man man ls man –k file 5 passwd Percobaan 6 : Menghapus layer $ clear Percobaan 7 : Mencari perintah mengandung kata kunci yang dicari $ apropos date $ apropos mail $ apropos telnet yang deskripsinya Percobaan 8 : Mencari perintah yang tepat sama dengan kunci yang dicari $ whatis date Percobaan 9 : Manipulasi berkas (file) dan direktori 1. Password: Name[user wks]: <Nama Pengguna di wks> Office[]: Lab Pemrograman 2 Office Phone []: 2301 Home Phone []: 5947280 Finger information changed.Percobaan 4 : Melihat siapa yang sedang aktif 1.

tanda (%) untuk whiteout dan tanda (|) untuk FIFO. Menampilkan semua file atau direktori dengan menandai : tanda (/) untuk direktori.$ ls –a 4. Menampilkan isi suatu direktori $ ls /usr 6. ukuran. Menggunakan instruksi cat $ cat f1 2. $ $ $ $ $ $ $ $ $ $ cp ls cp cp /etc/group f1 –l –i f1 f2 –i f1 f2 2. Mengkopi ke direktori mkdir backup cp f1 f3 cp f1 f2 f3 backup ls backup cd backup ls Percobaan 12 : Melihat isi file 1. tanda asterik (*) untuk file yang bersifat executable. $ ls –l /etc 9. Menampilkan isi direktori root $ ls / 7. Berikan opsi –i untuk pertanyaan interaktif bila file sudah ada. Menampilkan semua file atau direktori tanpa proses sorting $ ls –f 5. Argumen ini akan menyebabkan proses berjalan agak lama. Menampilkan semua file dan isi direktori. Menampilkan file atau direktori secara lengkap yaitu terdiri dari nama file. tanggal dimodifikasi. $ ls –F /etc 8. tanda (=) untuk socket. Menampilkan file per satu layar penuh $ more f1 $ pg f1 Percobaan 13 : Mengubah nama file 1. Mengkopi suatu file. pemilik. tanda (@) untuk file symbolic link. Menggunakan instruksi mv . apabila proses akan dihentikan dapat menggunakan ^c $ ls –R /usr Percobaan 10 : Melihat tipe file $ file $ file * $ file /bin/ls Percobaan 11 : Menyalin file 1. group dan mode atau atributnya.

Tampilkan semua file secara lengkap pada direktori /etc. 10. Lihatlah user-user yang sedang aktif pada komputer Anda. LAPORAN RESMI: 1. $ mkdir mydir $ mv f1 f2 f3 mdir Percobaan 14 : Menghapus file $ $ $ $ $ rm cp cp rm rm f1 mydir/f1 f1 mydir/f2 f2 f1 –i f2 Percobaan 15 : Mencari kata atau kalimat dalam file $ grep root /etc/passwd $ grep “:0:” /etc/passwd $ grep student /etc/passwd LATIHAN: 1.$ mv f1 prog. Perintah apa yang digunakan untuk melihat kalender satu tahun penuh ? Bagaimana anda dapat melihat manual dari perintah cal ? Bagaimana melihat perintah manual ls dengan kata kunci sort ? Bagaimana tampilan untuk perintah ls –a –l dan ls –al ? Tampilkan semua file termasuk yang hidden file pada direktori /etc. 5. Memindahkan file ke direktori lain. Buatlah direktori prak1 pada direktori aktif. 6. 4. 12. 11. maka berkas-berkas akan dipindahkan ke direktori tersebut. kemudian copy-kan file /etc/group ke file tes1. Bila argumen terakhir adalah nama direktori. Buatlah summary Percobaan 1 sampai dengan percobaan 15 dalam bentuk table seperti di bawah ini : . Ubahlah informasi finger pada komputer Anda. Pindahkan file tes1 dan tes2 ke home direktori. Hapus file tes1 dan tes dengan konfirmasi.txt $ ls 2. 3. 7. Tampilkan isi file tes1 per satu layar penuh. 9. tes2 dan tes3 pada direktori ini. 2. 8.

mahasiswa diharapkan mampu: Memahami konsep proses I/O dan redirection Memahami standar input.Perintah id date cal hostname uname w who Whoami chfn Deskripsi Format 2. output dan error . Berikan kesimpulan dari praktikum ini. Praktikum 2 Operasi Input Output POKOK BAHASAN: Pipeline Redirection TUJUAN BELAJAR: Setelah mempelajari materi dalam bab ini. 3. Analisa latihan yang telah dilakukan.

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) . maka Linux kernel akan menciptakan sebuah proses dengan memberikan nomor PID (Process Identity). Setiap kali instruksi diberikan. Dalam konteks Linux input/o utput adalah : • Keyboard (input) • Layar (output) • Files • Struktur data kernel • Peralatan I/O lainnya (misalnya Networ 2 FILE DESCRIPTOR Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan melalui angka yang dimulai dari 0. Input Proses Output Instruksi (command) yang diberikan pada Linux melalui Shell disebut sebagai eksekusi program yang sela njutnya disebut proses.Menggunakan notasi output. PROSES I/O Sebuah proses memerlukan Input dan Output. Proses dalam Linux selalu membutuhkan Input dan menghasilkan suatu Output. append dan here document Memahami konsep PIPE dan filter DASAR TEORI: 1. 1.

grep. pr. Contoh filter adalah cat. tail. Linux memanipulasi peralatan hardware sama dengan file. Input ⇒ Proses1 ⇒ Output = Input ⇒ Proses2 ⇒ Output Proses 1 menghasilkan output yang selanjutnya digunakan sebagai input oleh Proses 2. mail dan lainnya. Utilitas yang bukan filter misalnya who. ls.  Perintah wc Digunakan untuk menghitung jumlah baris.Linux tidak membedakan antara peralatan hardware dan file. Hubungan output input ini dinamakan pipa. lp. gunakan option –w dan untuk mengetahui berapa karakter. lpr. 3 PEMBELOKAN (REDIRECTION) Pembelokan dilakukan untuk standard input. untuk mengetahui berapa kata. output dan error. Simbol untuk pembelokan adalah : 0< 1> 2> atau atau < pengganti standard inp ut > pengganti standard output 4 PIPA (PIPELINE) Mekanisme pipa digunakan sebagai alat komunikasi antar proses. | Pn-1 | Pn Maka P2 sampai dengan Pn-1 mutlak harus utilitas Linux yang berfungsi sebagai filter. sort. 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. yang menghubngkan Proses 1 dengan Proses2 dan dinyatakan dengan symbol “|”. 1 dan 2. Untuk mengetahui berapa baris gunakan option –l. Pada sebuah rangkaian pipa : P1 | P2 | P3 ……. Pola ini disebut regular expression. Proses1 | Proses2 5 FILTER Filter adalah utilitas Linux yang dapat memproses standard input (dari keyboard) dan menampilkan hasilnya pada standard output (layar). head. . kata dan karakter dari baris-baris masukan yang diberikan kepadanya. ps. yaitu untuk mengalihkan file descriptor dari 0. P1 (awal) dan Pn (terakhir) boleh tidak filter. paste dan lainnya.

Apa yang dimaksud redirection ? 2. yang ditentukan pada option –c. jumlah kata dan jumlah karakter. TUGAS PENDAHULUAN: Jawablah pertanyaan-pertanyaan di bawah ini : 1.  Perintah uniq Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi. Login sebagai user.  Perintah sort Digunakan untuk mengurutkan masukannya berdasarkan urutan nomor ASCII dari karakter. cat. uniq PERCOBAAN: 1.com contoh surat yang langsung dibuat pada standard input (keyboard) [Ctrl-d] .  Perintah cut Digunakan untuk mengambil kolom tertentu dari baris-baris masukannya. maka tampilannya adalah jumlah baris. apa khabar exit dengan ^d exit dengan ^d [Ctrl-d] 3. wc. apa khabar hallo. Input dari keyboard dan output ke alamat internet mail ariyus@yahoo. Apa yang dimaksud pipeline ? 3. sort. 2. biasanya digabungkan dalam pipeline dengan sort. Output ke layar (standar output). Selesaikan soal-soal latihan. input dari keyboard (standard input) $ cat hallo. Jika salah satu option tidak digunakan. 3. input dari system (kernel) $ ps 2. Output ke layar (standar output). Percobaan 1 : File descriptor 1. Apa yang dimaksud perintah di bawah ini : echo. more. grep. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini. cut.gunakan option –c. Perhatikan hasil setiap percobaan.

txt 3. Notasi here document (<<++ …. Pembelokan standar input.txt 4.txt $ cat myfile. Perhatikan bahwa tanda pembatas dapat digantikan dengan tanda apasaja. bila terjadi error maka tampilan error pada layar (standard error) $ mkdir mydir $ mkdir mydir (Terdapat pesan error) Percobaan 2 : Pembelokan (redirection) 1. Notasi 2>&1 : pembelokan standar error (2>) adalah identik dengan file descriptor 1. Pembelokan standar output $ cat 1> myfile.txt ls filebaru 2> out. Pembelokan standar error untuk disimpan di file $ mkdir mydir (Terdapat pesan error) $ mkdir mydir 2> myerror. Input nama direktori. namun harus sama dan tanda penutup harus diberikan pada awal baris $ cat <<++ Hallo. yaitu input dibelokkan dari keyboard menjadi dari file $ cat 0< myfile. Notasi >> (append) 7.txt 2>&1 cat out. apa kabar ? Baik-baik saja ? Ok! %%% .txt $ cat myerror. output tidak ada (membuat direktori baru). ++) digunakan sebagai pembatas input dari keyboard. apa kabar ? Baik-baik saja ? Ok! ++ $ cat <<%%% Hallo.txt cat out.txt Ini adalah teks yang saya simpan Ke file myfile.txt 5. Notasi 1>&2 (atau >&2) : pembelokan standar output adalah sama dengan file descriptor 2 yaitu standar error $ echo “mencoba menulis file” 1> baru $ cat filebaru 2> baru 1>&2 $ cat baru $ $ $ $ $ $ echo “kata echo “kata echo “kata cat surat echo “kata cat surat pertama” > surat kedua” >> surat ketiga” >> surat keempat” > surat 6.4.txt 2. $ ls filebaru (Terdapat pesan error) $ $ $ $ ls filebaru 2> out.

txt – surat $ echo hello $ echo hello > output $ cat output 9. Notasi – (input keyboard) adalah representan input dari keyboard. digunakan operator > 10. Perhatikan bahwa notasi “-“ berarti menyelipkan input dari keyboard $ cat myfile. $ cat < output $ cat out $ cat < output $ cat out $ cat < output $ cat output $ cat < out >> [Ctrl-c] $ cat out > out >> out > output out (Proses tidak berhenti) Percobaan 3 : Pipa (pipeline) 1. Pembelokan standart input dan standart output dapat dikombinasikan tetapi tidak boleh menggunakan nama file yang sama sebagai standart input dan output. Untuk membelokkan standart input digunakan operator < 12.txt Badu Zulkifli Yulizir Yudi . Untuk menambahkan output ke file digunakan operator >> $ echo bye >> output $ cat output $ cat < output 11.8. Operator pipa (|) digunakan untuk membuat eksekusi proses dengan melewati data langsung ke data lainnya. Pipa juga digunakan untuk mengkombinasikan utilitas sistem untuk membentuk fungsi yang lebih kompleks $ w –h | grep <user> $ grep <user> /etc/passwd $ ls /etc | wc $ ls /etc | wc –l $ cat > kelas1. Artinya menampilkan file 1. Untuk membelokkan standart output ke file. kemudian menampilkan input dari keyboard dan menampilkan file 2. $ $ $ $ $ $ $ $ who who | sort who | sort –r who > tmp sort tmp rm tmp ls –l /etc | more ls –l /etc | sort | more 2.

6. Berikan kesimpulan dari praktikum ini. 2. Lihat daftar secara lengkap pada direktori /etc/passwd. kata dan karakter dari file baru. 5. 4. .txt > kelas. Buatlah direktori latihan2 sebanyak 2 kali dan belokkan standard error ke file rmdirerror. 8. Analisa hasil percobaan 1 sampai dengan 4.urut.txt | grep “dog” | grep –v “cat” LAPORAN RESMI: 1. Hitung jumlah baris.txt kelas2. untuk setiap perintah jelaskan tampilannya. belokkan tampilan standard output ke file baru.Ade [Ctrl-d] $ cat > kelas2. Gunakan perintah di bawah ini dan perhatikan hasilnya. Urutkan file baru dengan cara membelokkan standard input dan standard output ke file baru. 3.txt | sort | uniq LATIHAN: 1. Lihat daftar secara lengkap pada direktori aktif.txt Budi Gama Asep Muchlis [Ctrl-d] $ cat kelas1. belokkan tampilan standard output ke file baru tanpa menghapus file baru sebelumnya. Urutkan file baru dengan cara membelokkan standard inp ut.txt $ cat kelas.txt | sort $ cat kelas1. Urutkan kalimat berikut : Jakarta Bandung Surabaya Padang Palembang Lampung Dengan menggunakan notasi here document (<@@@ …@@@) 7.urut dengan menggunakan filter dan tambahkan data tersebut ke file baru. $ cat > hello.txt kelas2.txt dog cat cat duck dog chicken chicken duck chicken cat dog duck [Ctrl-d] $ cat hello.txt | sort | uniq $ cat hello.txt. 2. Kerjakan latihan diatas dan analisa hasilnya 3.

Operasi File dan Struktur Direktory Praktikum 3 .

yaitu dimulai dari root.1. Sistem file pada Linux diatur secara hirarkhikal.3 Struktur direktori pada Linux 2 DIREKTORY STANDAR . kemudian direktori dan sub dirrektori. Direktori dapat berisi File dan Direktori lagi (disebut juga Subdirektori). yaitu dimulai dari root dengan symbol “/” seperti Gambar 3. Kita dapat menciptakan File dan Direktori mulai dari root ke bawah. Gambar 1. Secara logika.POKOK BAHASAN: Operasi File pada Sistem Operasi Linux Struktur Direktory pada Sistem Operasi Linux TUJUAN BELAJAR: Setelah mempelajari materi dalam bab ini. mahasiswa diharapkan mampu: Memahami organisasi file dan direktory pada sistem operasi Linux Menciptakan dan manipulasi directory Memahami konsep link dan symbolic link DASAR TEORI: 1. yang berisi nama file dan INODE (pointer yang menunjuk ke data / isi file tersebut). Direktori adalah file khusus. ORGANISASI FILE Sistem file pada Linux menyerupai pepohonan (tree).

Linux menciptakan system file yang baku.Setelah proses instalasi. terdiri atas direktori sebagai berikut : .

konfigurasi. smb.d. hosts.conf. maintenance script. rincian proses yang dieksekusi dengan menggunakan jadwal(time dependent process)  FILES.conf.d atau init. ftpaccess. inisialisasi (startup) dan terminasi (shutdown) proses di Linux dengan konsep runlevel.conf. Subdirektori yang sering diakses pada direktori /etc antara lain :  httpd. Hanya superuser yang boleh memodifikasi file yang berada di drektori ini.  ppp. . apache web server.  rc. lilo.conf. security dll. sendmail. inetd. point to point protocol untuk koneksi ke Internet. resolv.cf. syslog. motd.  cron. file security dan konfigurasi meliputi : passwd. profile.d. printcap. dhcp. fstab . shadow.Direktori /etc Berisi file yang berhubungan dengan administrasi system.conf.conf.

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 :

      

Ijin akses : menentukan hak user terhadap file ini. Jumlah link : jumlah link untuk file ini. Pemilik (Owner) : menentukan siapa pemilik file ini Group : menentukan group yang memiliki file ini Jumlah karakter : menentukan ukuran file dalam byte Waktu pembuatan : menentukan kapan file terakhir dimodifikasi Nama file : menentukan nama file yang dimaksud

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.

7 MELIHAT ISI FILE
Untuk melihat jenis file menggunakan format :
file filename(s)

Isi file akan dilaporkan dengan deskripsi level tinggin seperti contoh berikut
$ file myprog.c letter.txt webpage.html myprog.c: C program text letter.txt: ASCII text webpage.html: HTML document text

Perintah ini dapat digunakan secara luas untuk file yang kadang membingungkan, misalnya antara kode C++ dan Java.

cd. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini. find. mv dan rm (sertakan format yang digunakan) 3. which. 9 MENCARI TEXT PADA FILE Untuk mencari text pada file digunakan perintah grep (General Regular Expression Print) dengan format perintah grep option pattern files Grep akan mencari file yang bernama sesuai pattern yang diberikan dan akan menampilkan baris yang sesuai. 2.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. Apa yang dimaksud perintah-perintah direktory : pwd. TUGAS PENDAHULUAN: Jawablah pertanyaan-pertanyaan di bawah ini : 1. Tuliskan maksud perintah-perintah : file. Login sebagai user. Selesaikan soal-soal latihan Percobaan 1 : Direktory 1. mkdir. Apa yang dimaksud perintah-perintah manipulasi file : cp. Perhatikan hasilnya. 3. Melihat direktori HOME $ pwd $ echo $HOME . PERCOBAAN: 1. rmdir. locate dan grep. Jelaskan perbedaan Symbolic link menggunakan hard link (direct) dan soft link (indirect). 4. 2.

Melihat direktori aktual dan parent direktori $ $ $ $ $ $ $ $ $ $ $ pwd cd . Navigasi direktori dengan instruksi cd untuk pindah dari satu direktori ke direktori lain.. Perintah cp untuk mengkopi file atau seluruh direktori $ cat > contoh Membuat sebuah file [Ctrl-d] $ cp contoh contoh1 $ ls -l $ cp contoh A $ ls –l A $ cp contoh contoh1 A/D $ ls –l A/D 2. mengapa ?) pwd Percobaan 2 : Manipulasi file 1.2. lebih dari satu direktori atau sub direktori pwd mkdir A B C A/D A/E B/F A/D/A ls -l ls -l A ls -l A/D 4. pwd cd 3. pwd cd /home/<user>/C pwd cd /<user/C (Terdapat pesan error. pwd cd . Membuat satu direktori. $ $ $ $ $ $ $ $ $ $ pwd ls -l cd A pwd cd . Menghapus satu atau lebih direktori hanya dapat dilakukan pada direktori kosong dan hanya dapat dihapus oleh pemiliknya kecuali bila diberikan ijin aksesnya $ rmdir B (Terdapat pesan error. Perintah mv untuk memindah file $ mv contoh contoh2 $ ls -l $ mv contoh1 contoh2 A/D $ ls –l A/D $ mv contoh contoh1 C $ ls –l C . mengapa ?) $ ls -l B $ rmdir B/F B $ ls -l B (Terdapat pesan error.. me ngapa ?) 5.

txt ls -l ln halo.txt cat bye. Membuat shortcut (file link) $ $ $ $ $ $ $ $ $ $ $ echo "Hallo apa khabar" > halo.3. Cobalah urutan perintah berikut : $ cd .txt” –print > myerror.txt $ cat myerror. –name “*.txt” –exec wc –l ‘{}’ ‘.txt $ find . Perintah rm untuk menghapus file $ $ $ $ $ rm ls rm rm ls contoh2 -l –i contoh –rf A C -l Percobaan 3 : Symbolic Link 1.’ 2.txt z ls -l cat z mkdir mydir ln z mydir/halo.juga cat mydir/halo. Perintah which $ which ls 3. Perintah find $ find /home –name “*. Perintah locate $ locate “*.txt Percobaan 5 : Mencari file 1.txt” Percobaan 6 : Mencari text pada file $ grep Hallo *.txt $ file bye.txt ls -l bye.txt LATIHAN: 1.juga ln -s z bye.txt Percobaan 4 : Melihat Isi File $ ls –l $ file halo.

Apa yang terjadi ? 14. 9.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ pwd ls –al cd . 11. pwd dan cat. Pada Percobaan 1 point 3 buatlah pohon dari struktur file dan direktori . Telusuri direktory /dev. Buat subdirektory work dan play.txt 2. Telusuri derectory /proc. 4. Ubahlah direktory home ke user lain secara langsung menggunakan cd ~username.. pwd ls -al cd . Buatlah file bernama hello. copy keseluruhan direktory play ke direktory bernama work menggunakan symbolic link. Hapus direktory work dan isinya dengan satu perintah LAPORAN RESMI: 1. Dapatkah Anda melihat mengapa directory /proc disebut pseudo -filesystem yang memungkinkan akses ke struktur data kernel ? 5. Identifikasi perangkat yang tersedia. Copy hello. Telusuri direktory /bin. 6. 8. Ubahlah ke subdirektory play dan buat symbolic link dengan nama terminal yang menunjuk ke perangkat tty. Dapatkah Anda gunakan ”cp” menggunakan ”terminal” sebagai file asal untuk menghasilkan efek yang sama ? 13. Tampilkan isi file interrupts. /sbin. /tmp dan /boot.txt ke terminal.txt file bye. Analisa hasil percobaan yang Anda lakukan. ls. cpuinfo. devices. siapa pemilih tty Anda (gunakan ls –l). 15. meminfo dan uptime menggunakan perintah cat. 10. /usr/bin. Copy file /etc/passwd ke direktory home Anda. Identifikasi tty (termninal) Anda (ketik who am i). Ubah kembali ke direktory home Anda. pwd ls -al cd /etc ls –al | more cat passwd cd – pwd ls –l file halo.. b. Analisa setiap hasil tampilannya. 7. Masih direktory home. pwd cd . Hapus subdirektory work. 3.txt yang berisi kata ”hello word”. a. Lanjutkan penelusuran pohon pada sistem file menggunakan cd. Apa yang terjadi jika melakukan hard link ke perangkat tty ? 12. Pindahkan ke subirectory play.

 Daemon . dialog)  Batch Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu). satu atau lebih proses ”child” akan dibuat oleh shell sesuai perintah yang diberikan. 3. DASAR TEORI: 1 KONSEP PROSES PADA SISTEM OPERASI LINUX Proses adalah program yang sedang dieksekusi.  Melakukan pengontrolan proses pada shell. maka kernel akan menciptakan sebuah proses-id. Praktikum 4 A Proses dan Manajemen Proses POKOK BAHASAN:  Proses pada Sistem Operasi Linux  Manajemen Proses pada Sistem Operasi Linux TUJUAN BELAJAR: Setelah mempelajari materi dalam bab ini.  Menampilkan status proses dengan beberapa format berbeda. Proses Id (PID) dimulai dari 0. Beberapa tipe proses :  Foreground Proses yang diciptakan oleh pemakai langsung pada terminal (interaktif. Proses ini disebut juga dengan terminology Unix sebagai sebuah Job. kemudian diikuti oleh proses berikutnya (terdaftar pada /etc/inittab). ProseBatch tidak diasosiasikan (berinteraksi) dengan terminal. Bila terdapat pesan error.  Memahami penjadwalan prioritas. Setiap kali instruksi dibe rikan pada Linux shell. 2. yaitu proses INIT.c. Setiap kali menggunakan utilitas sistem atau program aplikasi dari shell. Kerjakan latihan diatas dan analisa hasil tampilannya. mahasiswa diharapkan mampu:  Memahami konsep proses pada sis tem operasi Linux. jelaskan penyebabnya. Berikan kesimpulan dari praktikum ini.  Menampilkan beberapa cara menampilkan hubungan proses parent dan child.

Bila selesai. Misalnya bila melakukan pengeditan file teks dan ingin melakukan interrupt pengeditan untuk mengerjakan hal lainnya. Job bekerja pada foreground atau background. misalnya inetd. Bila tidak ada request. Umumnya nama proses daemon di UNIX berakhiran d. maka program ini akan berada dalam kondisi “idle” dan tidak menggunakan waktu hitung CPU. Job pada foreground akan mengontrol shell . popd dll 2 SINYAL Proses dapat mengirim dan menerima sinyal dari dan ke proses lainnya. Berdasarkan sinyal yang dikirim ini maka proses dapat bereaksi dan administrator/programmer dapat menentukan reaksi tersebut. Proses mengirim sinyal melalui instruksi “kill” dengan format kill [-nomor sinyal] PID 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.menerima input dari . dapat kembali (switch) ke editor dan melakukan pengeditan file teks kembali.Proses yang menunggu permintaan (request) dari proses lainnya dan menjalankan tugas sesuai dengan permintaan tersebut. named. Mengirim sinyal menggunakan instruksi kill [-nomor sinyal] PID Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui terlebih dahulu. 4 MENGONTROL PROSES PADA SHELL Shell menyediakan fasilitas job control yang memungkinkan mengontrol beberapa job atau proses yang sedang berjalan pada waktu yang sama. Pada foreground hanya diper untukkan untuk satu job pada satu waktu. yaitu memberitahukan proses yang sedang berjalan bahwa ada sesuatu yang harus dikendalikan.

Apa yang dimaksud dengan proses ? 2. menghentikan job seme ntara sangat berbeda dengan melakuakan interrupt job (biasanya menggunakan [Ctrl-C]). 3. Job yang dihentikan sementara dapat dijalankan kembali pada foreground atau background sesuai keperluan dengan menekan ”fg” atau ”bg ”. . 5. Sebagai catatan. 4. pstree. 6. Download program C++ untuk menampilkan bilangan prima yang bernama primes. Statistik secara detail dengan proses yang berjalan ditampilkan dan secara terus-menerus di-refresh. Apa yang dimaksud perintah untuk menampilkan status proses : ps. Login sebagai user. biasanya berjalan tanpa memerlukan interaksi. Perintah ini akan menghentikan proses sesuai PID atau job number proses. Kunci yang berguna pada top adalah s u k q – set update frequency – display proses dari satu user – kill proses (dengan PID) – quit Utilitas untuk melakukan pengontrolan proses dapat ditemukan pada system UNIX adalah perintah killall.keyboard dan mengirim output ke layar. PERCOBAAN: 1. dengan menekan [Ctrl-Z]. Job pada background tidak menerima input dari terminal. Job pada foreground kemungkinan dihentikan sementara (suspend). TUGAS PENDAHULUAN: Jawablah pertanyaan-pertanyaan di bawah ini : 1. Sebutkan opsi yang dapat diberikan pada perintah ps Apa yang dimaksud dengan sinyal ? Apa perintah untuk mengirim sinyal ? Apa yang dimaksud dengan proses foreground dan background pada job control ? Apa yang dimaksud perintah-perintah penjadwalan prioritas : top. Proses ditampilkan secara terurut dari utilitas CPU. renice. dimana job yang diinterrup akan dimatikan secara permanen dan tidak dapat dijalankan lagi. nice. 5 MENGONTROL PROSES LAIN 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. 2.

Logout dan tekan Alt+F7 untuk kembali ke mode grafis Percobaan 2 : Menampilkan Hubungan Proses Parent dan Child 1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user. Percobaan 1 : Status Proses 1. START adalah kapan proses tersebut diaktifkan $ ps –u 4. Ketik ps –e f dan tekan Enter. Tampilan serupa dengan langkah 2. COMMAND merupakan instruksi yang digunakan. Sebagai contoh proses init sebagai parent (ancestor) dari semua proses pada sistem. Proses child ditandai dengan awalan beberapa spasi.3. Mencari proses yang spesifik pemakai. TTY adalah nama terminal dimana proses tersebut aktif. Opsi –f akan menampilkan status proses dengan karakter grafis (\ dan _) $ ps –e f 4. STAT berisi S (Sleepin g) dan R (Running). Ketik pstree dan tekan Enter. Proses child muncul dibawah proses parent. Ketik pstree | grep mingetty dan tekan Enter. Beberapa child dari init mempunyai child. %MEM adalah presentasi system memori yang digunakan proses. Untuk melihat faktor/elemen lainnya. Lakukan percobaan-percobaan di bawah ini kemudian analisa hasil percobaan. $ ps -eH 3. Selain menampikan semua proses. Akan ditampilkan semua proses pada sistem dalam bentuk hirarki parent/child. $ ps 3. PID adalah Nomor Identitas Proses. 2. $ pstree 5. RSS (Real System Storage) adalah jumlah memori yang digunakan. Proses bash mempunyai proses child startx. Selesaikan soal-soal latihan. dimana pemakai teresbut melakukan login $ ps –u <user> $ ps –a $ ps –au 5. Proses parent di sebelah kiri proses child. 2. 4. Ketik ps –eH dan tekan Enter. Instruksi ps (process status) digunakan untuk melihat kondisi proses yang ada. Proses login mempunya i proses bash sebagai child. Opsi e memilih semua proses dan opsi H menghasilkan tampilan proses secara hierarki. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user. %CPU adalah presentasi CPU time yang digunakan oleh proses tersebut. Akan menampilkan semua proses mingetty yang berjalan pada system yang berupa console virtual. proses dikelompokkan dalam satu baris dengan suatu angka sebagai jumlah proses yang berjalan. Mencari proses lainnya gunakan opsi a (all) dan au (all user) 6. Proses startx mempunyai child xinit dan seterusnya. . SIZE adalah jumlah memori yang digunakan. gunakan option –u (user). Proses diatas hanya terbatas pada proses milik pemakai.

Untuk melihat semua PID untuk proses gunakan opsi –p.di bagian bawah screen. Ketik ps ax | more dan tekan Enter. $ pstree –p 7. Gunakan perintah yes yang mengirim output y yang tidak pernah berhenti $ yes Untuk menghentikannya gunakan Ctrl-C. tekan q untuk kembali ke prompt perintah. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user. TTY.%mem. 4. 5. 2. 3. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke terminal sebagai user.cmd | more Jika halaman penuh terlihat prompt --More-. cmd | more dan tekan Enter. TIME dan CMD. Ketik ps –eo pid. Logout dan tekan Alt+F7 untuk kembali ke mode grafis Percobaan 4 : Mengontrol proses pada shell 1. Akan menampilkan kolom PID. Opsi a akan menampilkan semua proses yang dihasilkan terminal (TTY). Opsi -e menampilkan semua proses dalam bentuk 4 kolom : PID. tekan q untuk kembali ke prompt perintah. $ ps ax | more Jika halaman penuh terlihat prompt --More-. 6. TTY. $ ps ef | more Jika halaman penuh terlihat prompt --More-. $ ps –e | more Jika halaman penuh terlihat prompt --More-. STAT. Untuk menampilk an proses dan ancestor yang tercetak tebal gunakan opsi –h. Jika proses hanya menggunakan sedikit memory system akan dita mpilkan 0. Opsi –e f akan menampilkan semuaproses dalam format daftar penuh. Ketik ps –e | more dan tekan Enter.di bagian bawah screen. tekan q untuk kembali ke prompt perintah.di bagian bawah screen. $ ps –eo pid. PPID adalah proses ID dari proses parent. Terdapa 5 kolom : PID. Ketik ps –eo pid. %MEM menampilkan persentasi memory system yang digunakan proses.ppid. $ ps –eo pid.cmd | more dan tekan Enter.$ pstree | grep mingetty 6. Ketik ps –e f | more dan tekan Enter. Belokkan standart output ke /dev/null . Opsi –eo akan menampilkan semua proses dalam format sesuai definisi user yaitu terdiri dari kolom PID dan CMD. 3.%mem. PPID dan %MEM. Opsi x menampilkan semua proses yang tidak dihasilkan terminal. 2. $ pstree –h Percobaan 3 : Menampilkan Berbagai Format Status Proses dengan 1. tekan q untuk kembali ke prompt perintah. TIME dan COMMAND.ppid. Secara logika opsi ini sama dengan opsi –e.di bagian bawah screen.cmd | more 7.

Untuk menghentikan sementara job gunakan Ctrl-Z. $ fg 4. Cara lain meletakkan job pada background dengan memulai job secara normal (pada foreground). 4. Untuk restart job pada foreground . . letakkan job pada foreground dengan fg dan kemudian hentikan sementara dengan Ctrl-Z. diikuti prefix dengan karakter ”%”. tekan fg dan tekan Enter. $ yes > /dev/null & Angka dalam ”[ ]” merupakan job number diikuti PID. bukan menghentikannya (terminate ). Lihat job dengan perintah ps -fae dan tekan Enter. Apabila ingin menjalankan banyak job dalam satu waktu. 2. baru dihentikan dengan cara tekan fg dan tekan Enter. 5. $ jobs 6. Untuk menghentikannya. Stop job lagi dengan Ctrl-Z. dimana dapat diabaikan jika mencoba mengerjakan job lain. kemudian dilanjutkan dengan Ctrl -Z untuk menghentikan sementara. Untuk identifikasi job number. kemudian dilanjutkan dengan Ctrl-Z untuk menghentikan sementara. stop job dan memulai lagi pada background $ yes > /dev/null Hentikan sementara job (suspend ). $ kill %<nomor job> contoh : kill %1 7. Kemudian gunakan perintah bg untuk meletakkan job pada background . gunakan perintah fg. Salah satu cara agar perintah yes tetap dijalankan tetapi shell tetap digunakan untuk hal yang lain dengan meletakkan proses pada background dengan menambahkan karakter & pada akhir perintah. 7. tetapi menghentikan sementara job sampai di restart. letakkan job pada foreground atau background dengan memberikan job ID $ fg %2 atau $ %2 $ bg %2 6. Untuk menghentikan job. Job harus dipindah ke foreground. 5. Shell akan menampilkan nama perintah yang diletakkan di foreground. $ bg Job tidak bisa dihentikan dengan Ctrl-Z karena job berada pada background. Lihat status job setelah diterminasi $ jobs Percobaan 5 : Menghentikan dan memulai kembali job 1. $ fg 3. $ yes & Untuk menghentikannya tidak dapat menggunakan Ctrl-C. Kemudian hentikan proses dengan perintah kill. gunakan perintah kill diikuti job number atau PID proses. Job pada background dapat digunakan untuk menampilkan teks pada terminal. Untuk melihat status proses gunakan perintah jobs.$ yes > /dev/null Untuk menghentikannya gunakan Ctrl-C.

Pilih Jendela Top dan tekan r. Buka terminal lagi (keempat). 2. Pada setiap terminal. Tunggu beberapa saat agar program top berubah . Kemudian gunakan terminal 3 (yang tidak menjalankan primes maupun Jendela Top) dan ketik renice 19 <PID terimnal 1> (contoh : renice 19 3148) dan diikuti Enter. Top tidak lagi menampilkan informasi pada bagian atas dari screen. Maka program top akan muncul. Hal ini berarti kedua proses mengkonsumsi waktu proses yang sama dan berjalan sama cepat. PID dari kedua proses akan berbeda. Program top terdapat prompt PID to renice: tekan 3148 (ingat bahwa Anda harus mengganti 3148 dengan PID Anda sendiri) dan tekan Enter. Ketik lmt. 6. Program top memberikan prompt Renice PID 3148 to value: tekan -19 dan tekan Enter. 11. Karena login sebagai root. Proses 3149 berjalan lebih cepat. tampilkan pada screen yang sama. Buka 3 terminal. Tunggu beberapa saat sampai program top berubah dan terlihat pada jendela Top. 9. maka akan ditampilkan ~: pada setiap terminal. Pada kolom STAT memperlihatkan N untuk proses 3148. Program top juga mempunyai fungsi yang sama dengan program renice. Logout dan tekan Alt+F7 untuk kembali ke mode grafis Percobaan 6 : Percobaan dengan Penjadwalan Prioritas 1. 10. Pada percobaan ini. \w menampilkan path pada direktori home. atur posisi sehingga keempat terminal terlihat pada screen. Login sebagai root. Nilai %CPU sama pada keduanya. 5. 7. Ulangi langkah 7 untuk terminal 2. Sekarang proses 3148 lebih cepat dari proses 3149. Pada terminal keempat. terminal ke empat sebagai je ndela Top.$ ps -fae $ kill -9 <NomorPID> 8. Ketik i. Untuk setiap terminal ketik pwd dan tekan Enter untuk melihat bahwa Anda sedang berada pada direktori /root. 3. 4. bukalah program executable C++ dengan mengetik program yes dan tekan Enter. 13. Kolom status menunjukkan < pada proses 3148 yang menunjukkan penjadwalan prioritas lebih rendah (lebih cepat) dari nilai 0. Hal ini berarti mengganti penjadwalan prioritas dari proses ke 19. 12. Tunggu beberapa saat sampai top berubah dan lihat nilai %CPU pada kedua proses. ketik PS1 = ” \w:” diikuti Enter. ketik top dan tekan Enter. Hal ini berarti bahwa penjadwalan prioritas untuk proses 3148 lebih besar (lebih lambat) dari 0. Jendela Top akan menampilkan dua program yes sebagai proses yang berjalan. 8. misalnya 3148 dan 3149. Top akan menampilkan proses yang aktif. Pilih terminal 3 (yang sedang tidak menjalankan yes atau program top) dan ketik nice –n -10 yes dan tekan Enter. Pada terminal 1.

Maka akan terlihat proses top terdaftar tetapi %CPU kecil (dibawah 1. Tulis PID dan COMMAND dari proses yang paling banyak menggunakan CPU time c. Sebutkan PID yang paling besar dan kemudian buat urut-urutan proses sampai ke PPID = 1. Proses tambahan akan muncul dan nilai %CPU berubah sebagai bagian grafis yang bekerja.dan akan terlihat proses primes ketiga. Ketik 4107 (ubahlah 4107 dengan PID Anda) dan tekan Enter.0) dan konsisten. Juga terlihat proses berhubungan dengan dekstop grafis seperti X. Kemudian perhatikan keluaran sebagai berikut : a. Lihat perubahannya. Apa yang terjadi dengan perintah ini ? . Sebutkan nama-nama proses yang bukan root b. ketik r. Pindahkan mouse sehingga kursor berubah pada screen dan lihat apa yang terjadi dengan tampilan top. Renice PID 4107 to value: muncul prompt. PID to renice : muncul prompt. 2. 14. Sebutkan buyut proses dan PID dari proses tersebut d. Lakukan urutan pekerjaan berikut : a.txt b. panel dll. belokkan output sehingga daftar direktori dialihkan ke file directories. Program top menampilkan proses yang aktif selain program yes. Tutup semua terminal window. 16. Opsi -10 berada pada kolom NI (penjadwalan prioritas). Gunakan perintah find ke seluruh direktory pada sistem. Jangan menggunakan mouse dan keyboard selama 10 detik. Pilih jendela Top. Sebutkan beberapa proses daemon e. Misalnya PID nya 4107. Ketik 0 dan tekan Enter. Cobalah format tampilan ps dengan opsi berikut dan perhatikan hasil tampilannya :  -f daftar penuh  -j format job  j format job control  l daftar memanjang  s format sinyal  v format virtual memory  X format register i386 3.txt dan daftar pesan error dialihkan ke file errors. Pada prompt login lakukan hal. LATIHAN: 1. Satu alasan adalah bahwa proses 4107 berjalan pada penjadwalan prioritas tinggi. Sekarang pindahkan mouse ke sekeliling screen. Masuk ke tty2 dengan Ctrl+Alt+F2. 15. Ketik ps –au dan tekan Enter. 17. Gunakan perintah sleep 5.hal sebagai berikut : $ $ $ $ $ $ csh who bash ls sh ps f. Logout dan login kembali sebagai user.

hentikan sementara dengan Ctrl. h. Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan kill untuk menghentikan sementara proses. Gunakan perintah ps –aeH untuk menampilkan hierarki proses. Log off komputer dan log in kembali. Jalankan sleep 15 pada foreground . Kombinasikan ps –fae dan grep. i. Ketikkan ps. Jalankan proses sleep 300 pada background. Lihat daftar semua proses yang berjalan. e. apa yang Anda lihat ? k. Analisa hasil percobaa n yang Anda lakukan. f. Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan perintah kill untuk menghentikan proses diikuti job number. Berikan kesimpulan dari praktikum ini. Jalankan sleep 60 pada background 5 kali dan terminasi semua pada dengan menggunakan perintah killall. 2. . Ketikkan jobs. Carilah init proses. 3. Apakah Anda bisa identifikasi sistem daemon yang penting ? Dapatkan Anda identifikasi shell dan subprose s ? j. g.c. Gunakan perintah ps. Apa yang terjadi pada proses sleep ? LAPORAN RESMI: 1. Gunakan bg untuk melanjutkan menjalankan proses. Kerjakan latihan diatas dan analisa hasil tampilannya. w dan top untuk menunjukkan semua proses yang sedang dieksekusi.Z dan kemudian letakkan pada background dengan bg. Jalankan perintah pada background menggunakan & d. Kembalikan job ke foreground dengan perintah fg.

 Membuat dan mengeksekusi shell script sederhana melalui editor vi. Beberapa macam shell :  /bin/sh Bourne shell. Untuk pemakai menggunakan prompt $ dan untuk superuser menggunakan promp #. dirancang oleh Steve Bourne dari AT&T  /bin/csh Dikembangkan oleh UNIX Berkeley yang dikenal dengan C -Shell  /bin/bash .  Memahami job control. Shell ditandai dengan prompt.Praktikum Bekerja Dengan Bash Shell POKOK BAHASAN:  History pada Bash Shell  Membuat Bash Shell Script TUJUAN BELAJAR: Setelah mempelajari materi dalam bab ini.  Memahami stack.  Menggunakan feature history pada Bash Shell. mahasiswa diharapkan mampu:  Memahami shell pada sistem operasi Linux.  Mengubah prompt shell.  Mengubah feature history pada Bash Shell.  Melakukan konfigurasi Bash Shell untuk menjalankan skrip secara otomatis. artinya program yang menunggu instruksi dari pemakai. memeriksa sintak dari instruksi yang diberikan.  Menggunakan alias. DASAR TEORI: 1 SHELL Shell adalah Command executive. kemudian mengeksekusi perintah tersebut.

maka dicari file bernama . terutama bila terjadi kesalahan pada penulisan instruksi maupun parameter. login pertama kali akan memeriksa file . . maka instruksi tersebut akan dicari pada daftar tersebut. program akan menjalankan beberapa program yaitu : 1.bash_profile.profile . 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. 4. History memudahkan pemakai untuk mengedit kembali instruksi kompleks dan panjang. Bila . 2 PROFILE Pada saat login. 2. 3.bash_login tidak ada. Bila tidak ada. kecuali pada fasilitas pemrograman dan editing. . PS1 adalah prompt dimana \u = Nama User \h = Nama Host \W = Nama working direktory 3 HISTORY History diadaptasi dari C-Shell. diedit dan dieksekusi. Catatan ini dapat dilihat sebagai history.bash_logout. /etc/profile Berisi shell script yang berlaku untuk seluruh pengguna Linux. . kemudian dapat dipilih kembali.Kompatibel dengan Bourne Shell dan juga mengadaptasi kemampuan Korn-Shell. maka file . Bila sebuah instruksi diberikan dariprompt shell. Perbedaan mendasar antara Shell diatasi hampir tidak ada. Profil untuk setiap pemakai Pada home directory. Bila ada.bashrc File ini akan dieksekusi untuk perpindahan dari satu shell ke shell yang lain melalui instruksi su. maka bash akan mencari file .bash_login akan dicari. yaitu catatan dari semua instruksi yang sejauh ini telah dilakukan.bash_logout Pada saat logout.

5 JOB CONTROL Job adalah sebuah eksekusi program yang diberikan kepada kernel. yaitu:  Command line Editor vi mengintepretasikan input sebagai instruksi untuk dieksekusi oleh editor. Pada awal vi dijalankan. Dengan menekan tombol “i” maka akan memasuki editing. Sebuah Job dianggap selesai. sebelum file bash-script yang berarti eksekusi shell dan tanda . 6 EDITOR vi Vi adalah full screen editor. Untuk kembali ke command mode. maka program memasuki command mode. Vi mempunyai 2 buah modus.  Εditing Editor vi mengintepretasikan input sebagai teks yang akan dimasukkan ke dalam buffer editor. baik proses Background maupun proses Foreground. contoh seperti mencari teks. Eksekusi Job adalah sama dengan eksekusi program./ berarti file bash-script berada pada direktori actual. tekan tombol Esc. bila eksekusi program tersebut berakhir. artinya editor tersebut dapat memanfaatkan fasilitas satu layar penuh. mengganti teks secara otomatis dan lainnya. Pada bagian bawah layar akan tampil teks “INSERTING”. Untuk eksekusi bash script gunakan . Kunci-kunci teks editor vi dapat dilihat pada tabel sebagai berikut : .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.

.

.

2. 2. File . $ ls –a $ more .TUGAS PENDAHULUAN: Jawablah pertanyaan-pertanyaan di bawah ini : 1. sehingga untuk melihatnya gunakan opsi a pada instruksi ls. Apa yang dimaksud dengan profile pada Bash Shell. Cobalah menggunakan editor vi untuk mengetik dan pahami perintah-perintah yang ada seperti yang terdapat pada dasar teori (untuk dilakukan. Apa yang dimaksud dengan history pada Bash Shell. 3. sebutkan cara-cara untuk mengetahui history perintah-perintah yang pernah digunakan oleh user! 5. 3. File . Login sebagai user. per kata dan per baris). simpan file dan keluar dari editori vi. PERCOBAAN: 1. Percobaan 1 : Profile 1. Apa yang dimaksud dengan shell dan sebuatkan shell yang ada di system operasi Linux. Apa kegunaan perintah history.bash_profile adalah hidden file.bashrc. 4. delete (per huruf. tidak perlu dijawab sebagai tugas pendahuluan).bash_profile . Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini kemudian analisa hasil percobaan. Perintah-perintah yang penting : insert huruf(kalimat). Apa yang Anda ketahui mengenai file . Selesaikan soal-soal latihan.bash_profile dijalankan pada home direktori pemakai yang login.

misalnya menghapus temporary file atau job lainnya. Kemudian gunakan perintah history. Misalnya ketik cat /bin/bash | strings | grep shell | less dan tekan Enter.2. $ !<Nomor Perintah> Contoh : !780 5. File . Untuk memeriksa apakah perintah ini ditambahkan pada history. Melihat file . Misalnya !?etc?! akan menjalankan perintah ls –l /etc yang sebelumnya digunakan. $ !who $ !whoa 9. artinya membersihkan semuanya. terutama pada perintah yang panjang. Anda bisa menggantikant string pada perintah history. tetapi cukup ketik ^shell^alias^ dan tekan Enter maka akan menggantikan kata ”shell” dengan ”alias”. Maka perintah sebelumnya akan ditampilkan. berfungsi sebagai house clearing jobs.bash_logout Percobaan 2 : Menggunakan Feature History Bash 1. Untuk memilih dan mengeksekusi perintah dengan nomor. Masukkan perintah berikut dan tekan Enter pada setiap baris.bash_logout dengan instruksi $ cat . Bash shell menyimpan ”history” perintah yang digunakan sebelumnya. Anda dapat memilih perintah sebelumnya dengan menggunakan Panah Atas. Anda dapat mengaksis history dalam beberapa cara. $ cat /bin/bash | strings | grep shell | less $ ^shell^alias^ . Jika ingin menampilkan kata ”alias”. Jika diketikkan !who maka yang dijalankan adalah perintah who. $ $ $ $ $ cd ls –l /etc ls –l whoami who 3. Cara yang mudah menggunkaan nomor pada perintah history atau mencarinya. Cara paling mudah adalah menggunakan Panah Atas.bash_logout akan diekseksi sesaat sebelum logout. Maka akan menampilkan semua string pada file /bin/bash yang berisi kata ”shell”. berikan Bash shell beberapa perintah untuk diingat. dapat menggunakan perintah history untuk melihat semua perintah yang pernah dimasukkan. 2. Tetapi bila Anda ketikkan !whoa maka yang dijalankan adalah perintah whoami. Anda dapat mencari perintah dengan menyertakan perintah yang diinginkan. $ !?wombat99? 8. $ !?etc? 6. maka Anda tidak perlu mengetik perintah yang panjang lagi. maka akan terlihat perintah ls –l /etc yang kedua dan bukan !?etc? $ history 7. $ history 4. Untuk keluar tekan q. tetapi hal ini tidak efisien untuk perintah yang semakin bertambah banyak. Berikutnya. masukkan kunci ! diikuti nomor perintah. Apabila string tidka ditemukan pada perintha history maka akan terdapat pesan error.

$ echo ‘HISTSIZE=5000’ >> .bashrc $ echo ‘HISTCONTROL=ignoredups’ >> . Log out dan log in kembali sebagai user yang sama. Ketikkan history beberapa kali dan perhatikan berapa kali history muncul. $ set|grep HISTSIZE 11. Bila ingin memperbesar jangkauan file history.bashrc 10. Untuk melihat berapa banyak perintah history yang ada pada file ketik berikut dan output yang keluar serupa di bawah ini $ wc –l . Perintah history bersifat up to date. Hal ini dilakukan dengan menambahkan variabel HISTCONTROL dan diberikan nilai ignoredups pada file . karena disimpan pada memory sistem. $ cd 2. Maka perintah echo ’Ini perintah saya’ akan berada pada baris terakhir. Ketik history|less untuk melihat perintah history terakhir pada screen. Ketik perintah berikut $ echo ‘Ini perintah saya’ 5. Tekan spacebar untuk melihat file lebih banyak. $ history $ tail . Lihat beberapa baris pada file . Ketik history dan tekan Enter. maka perintah ini akan disimpan pada BASH history meskipun yang diketikkan perintahnya sama. Ketik history dan tekan Enter.bash_history dan tekan Enter. Untuk keluar tekan q $ history|less 7.Percobaan 3 : Mengubah Feature History Bash 1. Anda dapat melakukan konfigurasi BASH agar tidak menambah perintah ke history jika perintah yang diketikkan sama dengan sebelumnya.bash_history. File ini bukan file yang up to date. Ketikkan perintah history beberapa kali. maka perintah tsb akan terdapat pada file .bash_history dengan ketik tail . Lihat perubahan variabel HISTSIZE. Log out dan log in kembali sebagai user yang sama. Log out dan log in kembali sebagai user yang sama.bash_history 8.bash_history menyimpan file history yang terdapat pada home directory. 12. Bash shell akan menyimpan perintah history meskipun telah log out dan log in kembali.bash_history. Untuk melihat jangkauan (limit) perintah history digunakan variable HISTSIZE.bash_history.bashrc 13. Untuk melihat jangkauan history ketik sebagai berikut $ set|grep HISTSIZE 9.bashrc pada home directory. Percobaan 4 : Mengubah Prompt Shell . Output menunjukkan bahwa 1000 perintah history disimpan pada file history. Lihat file . maka ubahlah variable HISTSIZE pada skrip startup yang disebut .bash_history 6. Maka akan terlihat baris terakhir adalah perintah history dan baris sebelumnya adalah tail . $ history 4. File .bash_history 3. $ tail .bash_history 1000 .

37m’ $ PS1=’\033[0. Sebagai contoh. Untuk menampilkan format 12 jam dengan indikator am dan pm ketik sebagai berikut $ PS1=’\t:’ 3. 36=cyan. 35=ungu. Prompt Bash shell dikonfigurasi dengan men-setting nilai variabel PS1.31m\w\033[0. 32=hijau. Ada beberapa prompt BASH lain yang dapat diubah. Ketik penutup quote (‘) dan tekan Enter. kata ”Hello. PS3 dan PS4. Selain menampilkan string statik sebagai prompt. 37=putih. $ echo ’Hello >’ 7. Ketik PS1=’\W:’ untuk melihat prompt sbin: $ PS1=’\W:’ 6. yaitu PS2.37m’ 10. Pada baris berikutnya akan muncul Selesai memasukkan perintah Anda:. 34=biru. Kemudian ketik echo ’Hello (tanpa diakhiri penutup quote) dan tekan Enter. 11. Karakter \w menampilkan hanya nama direktory. Ketik PS1=’\t:’ dan tekan Enter untuk menampilkan waktu sistem dalam format 24 jam sebagai prompt Bash. Untuk setting warna menjadi biru ketikkan berikut : $ PS1=’\033[0. Jika current directory adalah home directory. Kebanyakan orang menginginkan prompt Bash menampilkan current working directory. Simbol lebih besar dari (>) akan muncul. prompt BASH di-set dengan \w\$. ketik echo ’Hello (tanpa diakhiri penutup quote) dan tekan Enter. Direktory dapat ditampilkan dalam bentuk keseluruhan path atau hanya nama direktory.32m\$ \033[0.31m\w\$ \033[0. ketikkan perintah berikut : $ PS1=’\033[0. Contohnya. Ketik cd /usr/sbin untuk melihat prompt /usr/sbin: $ cd /usr/sbin 5. Format dalam HH:MM:SS $ PS1=’\t:’ 2. Anda dapat menampilkan menjadi dinamis. Untuk mendapatkan prompt warna merah ketikkan berikut : 30=hitam. Anda dapat mengubah prompt PS2 seperti mengubah prompt PS1. Perintah ini akan menyelesaikan prompt PS2. $ echo ’Hello Selesai memasukkan perintah Anda:’ 9.1. Bila menginginkan beberapa warna. maka tampil prompt ~: $ PS1=’\w:’ 4. Prompt BASH dapat ditampilkan berwar na dengan melakukan setting colorsetting string . 31=merah. Kemudian ketikkan penutup quote (’) dan tekan Enter. Jika perintah selesai. Hal ini memberitahukan bahwa BASH menunggu Anda menyelesaikan perintah. ” muncul diikuti dengan prompt PS1 pada baris baru. Untuk melihat bagaimana penggunaannya.37m’ . Ketik perintah berikut : $ PS2=’Selesai memasukkan perintah Anda:’ 8. maka kata Hello akan muncul diikuti prompt PS1 pada baris baru. akan menampilkan current working directory yang diikuti $ (atau # jika anda login sebagai root). Prompt PS2 digunakan sebagai prompt sekunder. apabila ingin menunjukkan current directory atau current time.34m\w\$ \033[0.

$ echo ’sort ~/list > ~/r13. atribut control diganti 1. Apabila Anda tidak menginginkan Shell Bash menampilkan file terurut sepanjang waktu. Kemudian ketik cat list dan tekan Enter.12. Jalankan program sorter diatas setiap shell Bash menampilkan prompt PS1.34m\w\033[5. Anda dapat menggunakan teks editor. buatlah variable PROMPT_COMMAND dimana nilainya adalah nama dari program sorter. atribut control diganti 7. $ PROMPT_COMMAND= .34m\w\033[1. Ketik cat list dan tekan Enter. Buatlah file skrip diatas menjadi file executable 4. Maka Anda akan melihat isi file list. file mungkin mempunyai hanya satu baris sehingga tidak dapat dilihat apakah file sudah terurut. Untuk menampilkan prompt berkedip. Bila Anda ingin BASH berhenti menjalankan program sorter. Masukkan bebe rapa perintah serupa dengan point 5 tetapi dengan nama dan nomor yang berbeda. tetapi jika sudah ada.37m’ Percobaan 5 : Menambahkan otomatisasi ke Prompt Shell 1. berkedip dan warna kebalikannya. mv ~/r13 ~/list’ > ~/sorter $ chmod +x sorter 3. Buatlah skrip sederhana untuk mengurut daftar file. atribut control diganti 5. Pada saat ini. Untuk menampilkan prompt yang lebih terang. $ echo ’John Smith:13001’>>list 6. Anda bisa menampilkan atribut visual seperti lebih terang. seperti perintah berikut : $ PS1=’\033[7. akan dibuat secara otomatis. Untuk menampilkan prompt dengan warna berkebalikan.32m\$ \033[0. Pastikan Anda berada di home directory $ cd ~ 2.34m\w\033[7. $ cat list 7. gunakan perintah echo untuk membuat file. $ PROMPT_COMMAND=~/sorter 5. string ’John Smith:13001’ aka h ditambahkan. seperti perintah berikut : $ PS1=’\033[1.32m\$ \033[0. Ketikkan echo ’John Smith:13001’>>list dan tekan Enter.37m’ 14. seperti perintah berikut : $ PS1=’\033[5.bashrc. Anda tidak perlu menambahkan variable PROMPT_COMMAND=~/sorter pada file konfigurasi seperti . maka ketikkan variable PROMPT_COMMAND= dan tekan Enter atau log out dan login kembali. Jika file list tidak ada. tetapi karena hanya satu baris. $ $ $ $ $ $ echo echo echo echo echo echo ’Anita:13002’>>list ’Samantha:13003’>>list ’Patrik:13004’>>list ’Sponse Bob:13005’>>list ’Lisa:13006’>>list ’Squid:13007’>>list 8.37m’ 13.32m\$ \033[0. Untuk melakukannya.

Proses background $ ps x > hasil & 3. Buatlah file ploop.Percobaan 6 : Membuat Bash-script dan menjalankannya 1.sh sh p1.sh $ .sh konvensi tersebut $ vi p1. Buatlah file ploop. Konvensi dalam pembuatan script shell dinyatakan sebagai #!/bin/bash. tekan Ctrl-C (^C) $ chmod +x ploop. $ cat p1.sh #!/bin/bash while [ true ] do sleep 10 echo “Hallo” done 5. File ini tidak akan pernah berhenti kecuali ditekan Ctrl-C $ vi ploop.sh $ vi p1.sh 4./p1.sh #!/bin/bash echo “Program bash script” 5. . Mengubah program menjadi executable 3.sh $ chmod +x p1.sh . Proses foreground $ ps x 2. Menjalankan script $ $ $ $ bash p1. Membuat file p1.sh echo “Program bash Script” $ ls –l p1.sh Percobaan 7 : Job Control 1.sh #!/bin/bash echo “Program 2 bash script” 6.sh .sh.sh $ . Untuk keluar program./ploop. cat p2.sh menjadi executable.sh . Menjalankan beberapa program shell dalam satu baris instruksi yang dipisahkan dengan tanda . p1. Tambahkan pada file p1. Untuk melihat jobs yang aktif $ jobs 4./p1.sh . Setiap job mempunyai PID yang tunggal (unique)./p2.sh . Jalankan program.sh 2.sh $ vi p2.sh $ ls –l p1. Buatlah file p2. akan ditampilkan kata Hallo setiap 10 detik.

Jalankan instruksi subtitute user.bash_profile /home/.bash_profile: echo “Profile dari . Instruksi dirs digunakan untuk melihat stack direktori. Gunakan instruksi hasil alias $ ls $ del hasil $ h | more 4. Untuk menghapus alias gunakan instruksi unalias $ unalias del $ del files (Terdapat Pesan Kesalahan. Membuat 3 buah direktori $ mkdir marketing sales support 3.profile /home/student/. Lakukan hal yang sama untuk file lainnya. Eksekusi seluruh profile yang ada : a.Percobaan 8 : Manipulasi stack untuk Direktori 1. Pada setiap file tersebut. Untuk melihat alias yang sudah terdaftar pada system : $ alias 2.bashrc c. misalnya pada /home/ student/. kemudian keluar dengan perintah exit sebagai berikut : $ su student $ exit kemudian gunakan opsi – sebagai berikut : $ su – student $ exit . pada output hanya ditampilkan direktori home ~ $ dirs Percobaan 9 : Alias 1. cantumkan instruksi echo. Ganti nama /home/student dengan nama anda sendiri. sesuaikan tampilan dengan nama file yang bersangkutan. student/. Alias adalah mekanisme untuk memberi nama alias pada satu atau sekelompok instruksi.bash_login /home/student/. mengapa ?) LATIHAN: 1. Instruksi dirs digunakan untuk melihat stack direktori. maka edit semua profile yang ada yaitu : /home/student/. Membuat beberapa alias $ alias del=’rm –i’ $ alias h=’history’ 3. 2. pada output hanya ditampilkan direktori home ~ $ dirs 2.bash_profile” d. Edit file profile /etc/profile dan tampilkan pesan seba gai berikut : echo ’Profile dari /etc/profile’ b. Asumsi nama anda student.

sh.sh #! /bin/bash . Gunakan fasilitas history dengan mengedit instruksi baris ke 5 dari instruksi yang terakhir dilakukan. Ulangi instruksi yang terakhir. Bash script a. 6.bash_logout. Ulangi instruksi dengan prefix “ls” $ !ls $ !?ls? Jelaskan perbedaan instruksi diatas 5. p2. sebelum eksekusi logout 4. Edit file . 3. tampilkan pesan dan tahan selama 4 detik. Prompt String (PS) a.sh #! /bin/bash echo “Program p2” who p3. Edit file .bash_profile. sebelum eksekusi logout Echo “Terima kasih atas sesi yang diberikan” Sleep 5 Clear b. $ !-5 c. Logout a. tampilkan pesan dan tahan selama 5 detik. Instruksi export diperlukan dengan parameter nama variab le tersebut. p3.bash_logout. Ulaingi instruksi pada history buffer nomor tertentu.sh. Gunakan juga ^P dan ^N untuk bernavigasi pada history buffer $ !! d. Ubahlah warna shell prompt dengan warna biru dan berkedip. misalnya nomor 150 $ !150 e. 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. History a. Ganti nilai HISTSIZE dari 1000 menjadi 20 $ HISTSIZE=20 $ h b.sh #! /bin/bash echo “Program p1” ls –l p2. ganti prompt PS1 dengan ‘>’.Jelaskan perbedaan kedua utilitas tersebut. Buat 3 buah script p1. Edit file .sh dengan isi masing-masing : p1.

sh $ .echo “Program p3” ps x b. Jobs a./p1. . Jalankan sebagai background./p1. Kerjakan latihan diatas dan analisa hasil tampilannya.sh & ./p2. kemudian jalankan satu program (utilitas find) di background sebagai berikut : $ jobs $ find / -print > files 2>/dev/null & $ jobs c./p1. Jalankan script tersebut sebagai berikut dan perhatikan hasilnya : $ $ $ $ . Jadikan program ke 1 sebagai foreground. kemudian menyimpan tanggal dan jam pada file hasil./p3.sh & ./p1. Berikan kesimpulan dari praktikum ini. #!/bin/bash while [ true ] do date >> hasil sleep 10 done b./p2.sh . Buat shell. ./p3. 3./p3. Analisa hasil percobaan yang Anda lakukan.sh .sh .sh . Stop program background dengan utilitas kill $ ps x $ kill [Nomor PID] LAPORAN RESMI: 1. . setiap 10 detik. .sh & ( .sh ) & 7.script yang melakukan loop dengan nama pwaktu. 2.sh. tekan ^Z dan kembalikan program tersebut ke background $ fg %1 $ bg d.

yang dimulai dengan tanda #. baris ini akan diabaikan oleh program shell (3) Penggunaan variable (assignment). Script selalu diawali dengan komentar. DASAR TEORI: 1 SHELL SCRIPT Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi “. sebagai dokumentasi. /bin/ksh dan lainnya (2) Adalah komentar. do while.  Membuat fungsi dan mengetahui cara memanggil fungsi tersebut. kemudian system mengaktifkan program shell (/bin/sh) yang tertera di situ.  Loop dengan while. disambung dengan ! dan nama shell yang digunakan. #!/bin/sh (1) # Program shell (2) # var1=x (3) var2=8 (1) Awal dari program shell.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. tidak boleh ada spasi di antara nama variable dan konstanta .sh”. misalnya /bin/csh. Program shell dapat dipilih. for. komentar awal ini akan dibaca oleh system.

Tata penulisan variable adalah sebagai berikut : nama_var = nilai_var Variable harus dimulai dengan alfabet. Pid ini akan terus berubah (umumnya) menaik. $8 dan $9. $$ menyatakan nomor proses id (pid) dari script yang dijalankan. Shell variable $* menyatakan seluruh string yang menjadi parameter / argument sebuah script ($@ mempunyai arti yang sama). 4 PARAMETER Sebuah program shell dapat mempunyai parameter sebanyak 9 buah dan direpresentasikan melalui variable khusus yaitu variable $!. disusul dengan alfanumerik dan karakter lain. karena shell akan menganggap pemisahan tersebut sebagai parameter. Nama program she ll (nama script) direpresentasikan melalui variable $0. setiap kali proses berjalan. contoh : VPT= Teknik Informatika VPT2=” Teknik Informatika Amikom” 3 MEMBACA KEYBOARD Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read. maka string tersebut harus berada dalam tanda kutip atau apostrof.2 VARIABEL Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String. maka nilai $# adalah 0. . Jumlah parameter dinyatakan sebagai $#. Bila tidak memberikan parameter. $6. contoh : VPT=Teknik Informatika i=5 Pemberian nilai variable tidak boleh dipisahkan dengan spasi. Variabel dapat ditulis dalam huruf kecil atau huruf besar atau campuran keduanya. contoh : VPT= Teknik Informatika echo $VPT Gaji=850000 echo $Gaji echo $VPT $Gaji Bila menggunakan string yang terdiri dari lebih dari satu kata. $5. Pada shell. instruksi echo dapat menampilkan isi variable tersebut. gunakan tanda $ di depan nama variable tersebut. $2. $7. $4. $3. Shell membedakan huruf besar dan huruf kecil (case sensitive). contoh : VPT = Teknik Informatika ##error VPT = Teknik Informatika ##error Untuk melihat nilai/isi dari sebuah variable.

Indikasi yang diberikan adalah :  Bila program berakhir dengan sukses. dan exit status dari instruksi tersebut akan menjadi kondisi. 7 KONSTRUKSI IF THEN ELSE if instruksi1 then instruksi1.5 STATUS EXIT Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variable spesial $?. Ekspresi terdiri dari factor dan operator yang dipisahkan oleh spasi. maka kondisi menjadi FALSE dan instruksi setelah else akan dijalankan. Hasil test akan memberikan nilai berupa status exit. yaitu 0 bila ekspresi sesuai. bila tidak maka hasil adalah ≠ 0. Bila 0. 8 INSTRUKSI TEST Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi. Bila tidak 0.1 instruksi2.2 ……………… fi Bila status exit tidak sama dengan 0. $? = 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.1 instruksi1. maka alur program diteruskan setelah kunci kata fi.2 ……………… else instruksi2. maka instruksi selanjutnyua masuk ke dalam blok then.  Operator untuk test .

Notasi && dan || sering ditemukan dalah shell script system administrator untuk menjalankan routine dari system operasi. bila exit status adalah TRUE(0). test dapat ditulis dengan [ekspresi] [sebenarnya adalah nama lain dari test. Oleh karena itu. Untuk memudahkan pembacaan (readability). maka instruksi2 akan dijalankan. 9 LOGICAL && DAN || (SHELL LEVEL) Notasi && dan || digunakan untuk menggabungkan instruksi shell sebagai alternatif untuk if then else. Bila hasil instruksi1 adalah FALSE. terlepas dari hasil eksekusi instruksi2. kosong dan lainnya. dapat ditulis. dan bila exit status instruksi1 adalah FALSE. dapat dibaca. maka hasil dari AND tersebut sudah pasti sama dengan FALSE.  instruksi1 && instruksi2 shell akan mengeksekusi instruksi1. hasil dari operasi OR tersebut sudah pasti menghasilkan TRUE. maka instruksi2 dijalankan  instruksi1 || instruksi2 shell akan menge ksekusi instruksi1. Oleh karena itu instruksi2 tidak perlu dijalankan. instruksi2 tidak dijalankan. bedanya [akan mencari kurung penutup] pada akhir ekspresi yang harus dipisahkan oleh spasi. . Test untuk files dan directory Test dapat dilakukan untuk memeriksa apakah file ada (Exist). Sebaliknya bila hasil instruksi1 adalah TRUE(0). sehingga instruksi2 tidak mempunyai pengaruh lagi.

10 OPERATOR BILANGAN BULAT UNTUK TEST Untuk membandingkan 2 buah bilangan. test memerlukan operator yang berbeda dengan string. OR dan NOT. 11 OPERATOR LOGICAL (TEST LEVEL) Logical operator terdiri dari AND. Operator ini menggabungkan hasil ekspresi sebagai berikut : NOT : symbol ! AND : symbol -a OR : symbol -o .

12 KONSTRUKSI IF THEN ELSE IF if instruksi1 then instruksi1. Floating.2 ……………… else instruksi3.2 ……………… elif instruksi2 then instruksi2. Tidak ada tipe lain seperti Numerik.1 instruksi2. . misalnya : A=5 B=$A +1 ## error UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang melakukan aritmetika sederhana. Boolean ata u lainnya. Sebagai nilai default program tersebut akan memberikan status exit 0. maka kondisi menjadi FALSE dan instruksi setelah else akan dijalankan. 14 INSTRUKSI EXIT Program dapat dihentikan (terminated/selesai) dengan instruksi exit. Akibatnya variable ini tidak dapat membuat perhitungan aritmetika. 13 HITUNGAN ARITMETIKA Tipe dari variable SHELL hanya satu yaitu STRING.1 instruksi1.1 instruksi3.2 ……………… fi Bila status exit tidak sama dengan 0.

*) instruksi3.. Loop akan berhenti. sehingga dengan case. case variable in match1) instruksi1. yang umumnya dibatasi dengan suatu kondisi. bila kondisi FALSSE.2 ……………… .15 KONSTRUKSI CASE Case digunakan untuk menyederhanakan pemakaian if yang berantai. 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).2 ……………… . Selama kondisi tersebut TRUE. Pada akhir pilihan yaitu *) yang berarti adalah “default”... atau program keluar dari blok while melalui exit atau break.strn do instruksi1 instruksi2 ……………… done 17 KONSTRUKSI WHILE While digunakan untuk pengulangan instruksi.. kondisi dapat dikelompokkan secara logis dengan lebih jelas dan mudah untuk ditulis.2 ……………… . esac Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan . for var in str1 str2 …... maka pengulangan terus dilakukan.1 instruksi1.1 instruksi3. while kondisi do instruksi1 instruksi2 ……………… done 18 INSTRUKSI DUMMY .1 instruksi2. match2) instruksi2.

. kemudian blok program yang dinyatakan dalam { … }.Instruksi dummy adalah instruksi yang tidak melakukan apa -apa. Membuat fungsi diawali dengan nama fungsi. return 1 Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Oleh karena itu. dapat juga dengan membuat executable file dan dieksekusi relatif dari current directory $ chmod +x prog01. nama variable yang digunakan dalam sebuah fungsi.sh dengan editor vi $ vi prog01. Untuk menjalankan shell. parameter. } ……. Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini kemudian analisa hasil percobaan. Buatlah file prog01. namun instruksi ini memberikan status exit 0 (TRUE). Hal yang perlu diperhatikan. bacalah dasar teori diatas kemudian buatlah program Shell untuk Latihan 1 sampai dengan 5. atau nilai 0 sebagai default. instruksi dummy dapat digunakan sebagai kondisi forever pada loop (misalnya while)./prog01.sh #!/bin/sh # Program shell # var1=x var2=8 2.sh Percobaan 2 : Variabel . Percobaan 1 : Membuat shell script 1. Simbol instruksi dummy adalah ⇒ : 19 FUNGSI Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). 2. prog01. Untuk menjalankan shell. Contoh : F1( ) { ……. gunakan notasi TITIK di depan nama program $ . 3. Selesaikan soal-soal latihan. sehingga tidak terjadi isi variable berubah. jangan sampai bentrok dengan nama variable yang sam adi luar fungsi..sh 3. PERCOBAAN: 1. Login sebagai user. TUGAS PENDAHULUAN: Sebagai tugas pendahuluan.sh $ .

Variabel dapat berisi instruksi. Bila direktori actual tidak terdaftar dalam PATH. Cara sederhana mengeksekusi shell adalah dengan menggunakan notasi titik di depan nama shell script tersebut. Contoh menggunakan variable pada shell interaktif $ VPT= Teknik Informatika $ echo $VPT 2. Bila script belum executable. Menggabungkan isi variable dengan string yang lain.sh prog01.sh Percobaan 3 : Membaca keyboard . $ $ $ $ $ . maka echo akan mengambil parameter tersebut sebagai string. prog01. Menggabungkan dua variable atau lebih $ $ $ $ $ V1= Teknik Informatika V2=’:’ V3=Amikom V4=$V1$V2$V3 echo $V4 4.sh berikut $ vi prog01./prog01.sh . Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah instruksi. instruksi tersebut akan dieksekusi CMD=who $CMD CMD=”ls –l” $CMD 6. Jika digabungkan dengan nama variable ya ng belum didefinisikan (kosong) maka instruksi echo menghasilkan string kosong./prog01. nama variable perlu diproteksi dengan { } dan kemudian isi variable tersebut digabung dengan string. jika tidak.sh (Terdapat pesan error) . Modifikasi file prog01. $ VPT2= Teknik Informatika Amikom (Terdapat pesan error) $ VPT2=” Teknik Informatika Amikom” $ echo VPT2 $ echo $VPT2 3. maka command tersebut tidak dapat ditemukan. script tidak dapat dieksekusi.1.sh #!/bin/sh V1= Teknik Informatika V2=’:’ V3=Amikom echo “Pemrograman shell” echo $V1$V2$V3 V3=ITS echo $V1$V2 di $V3 $ $ $ $ 7. yang kemudian bila dijadikan input untuk shell.sh (Terdapat pesan error) chmod +x prog01. Karakter $ harus ada pada awal nama variable untuk melihat isi variable tersebut. Untuk menghindari kekeliruan. $ echo $V3 $ echo $V3Amikom $ echo ${V3}Amikom 5.

Eksekusi program prog02.sh # membaca nama dan alamat echo “Nama Anda : “ read nama echo “Alamat : “ read alamat echo “Kota : “ read kota echo echo “Hasil adalah : $nama. prog02.1. Instruksi echo secara otomatis memberikan baris baru.sh #!/bin/sh # prog02.sh Nama Anda : Dony Alamat : Jl Nglempong Sari IV Yogyakarta Hasil adalah : Dony. Membaca nama dan alamat dari keyboard $ vi prog02.sh #!/bin/sh # prog02. Variabel kosong adalah variable yang tidak mempunyai nilai. Modifikasi program prog02.sh $ . Eksekusi program prog02. Jl Nglempong Sari IV di Yogyakarta 4. Variabel ini didapat atas assignment atau membaca dari keyboard atau variable yang belum didefinisikan $ read nama <CR> $ echo $nama . $alamat di $kota” 5. yang menyatakan kepada echo untuk menghilangkan baris baru. $alamat di $kota” 3. maka untuk menghindari hal tersebut disediakan opsi –n.sh # membaca nama dan alamat echo –n “Nama Anda : “ read nama echo –n “Alamat : “ read alamat echo –n “Kota : “ read kota echo echo “Hasil adalah : $nama. prog02. Menggunakan instruksi read $ read nama Dony $ echo $nama 2.sh $ vi prog02.sh Nama Anda : Dony Alamat : Jl Nglempong Sari IV Kota : Yogyakarta Hasil adalah : Dony.sh $ . Jl Nglempong Sari IV di Yogyakarta 6.

dengan 2 parameter. prog04.sh $ . Eksekusi prog04. prog04.sh $ vi prog03. prog04.sh versi 2 dengan memberikan jumlah parameter $ vi prog04. Membuat shell script 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.sh $ vi prog04.sh $ . Membuat shell script prog04.sh $ . Pada contoh dibawah . dengan 4 parameter $ . Eksekusi prog03.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.$ $ $ $ A= B=”” C=$A$B echo $C 7. Hasil dari eksekusi tersebut akan masuk sebagai nilai variable DIR $ pwd $ DIR=`pwd` $ echo $DIR 8.sh Percobaan 4 : Parameter 1. prog03.sh tanpa parameter. prog04. prog04. Variabel dapat disubtitusikan dengan hasil eksekusi dari sebuah instruksi.sh #!/bin/sh # prog04.sh tanpa parameter dan dengan 4 parameter $ .sh #!/bin/sh # prog03. instruksi pwd dieksekusi lebih dahulu dengan sepasang Back Quate (tanda kutip terbalik). Buatlah shell script prog03.sh Dony Ariyus $ .sh # NAMA=`whoami` echo Nama Pengguna Aktif adalah $NAMA tanggal=`date | cut –c1-10` echo Hari ini tanggal $tanggal 9.sh Dony Ariyus Randyka Pransisco .sh Dony Ariyus Randyka Pransisco 3.

bila sama. String diketemukan. String tidak diketemukan.sh dengan 4 parameter $ .sh Dony Ariyus Randyka Pransisco Percobaan 5 : Status Exit 1. maka blok program masuk ke dalam blok then-fi $ > > > $ > > > if [ $? = 0 ] then echo “Pemakai tersebut sedang aktif” fi if who|grep <user> >/dev/null then echo okay fi 3. 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.sh $ vi prog05. Instruksi dengan exit status 0 $ who $ who | grep <user> $ echo $? 2. maka status exit adalah 0 $ grep <user> /etc/passwd $ echo $? Percobaan 6 : Konstruksi if 1.sh # Program akan memberikankonfirmasi apakah nama .sh versi 3 dengan menambahkan total parameter dan nomor proses id (PID) $ vi prog04.5. Nomor (1) dan (2) diatas dapat disederhanakan dengan Percobaan 7 : Konstruksi if then else 1. Membuat shell script prog05. Membuat shell script prog04. If membandingkan exit status dengan 0. maka status exit adalah 1 $ grep xyz /etc/passwd $ echo $? 2. Eksekusi prog04.sh #!/bin/sh # prog05.

prog05.sh #!/bin/sh # prog06. Menggunakan instruksi test. Jalankan prog05.# user sedang aktif atau tidak # echo –n “Berikan nama pemakai : ” read nama if who | grep $nama > /dev/null then echo “$nama sedang aktif” else echo “$nama tidak aktif” fi 2. masukkan nama pemakai yang aktif yang tampil pada instruksi who dan coba juga untuk nama pemakai yang tidak aktif $ who $ .sh echo –n “NAMA = “ read NAMA if test “$NAMA” = dony then echo “Selamat Datang $NAMA” else echo “Anda bukan dony. Aplikasi test dengan konstruksi if $ vi prog06.sh dengan memasukkan NAMA = amir dan NAMA = <CR> perhatikan hasil tampilannya $ . prog05. prog06. prog06. sorry!” fi 3.sh [NAMA = <CR>] (Terdapat pesan error) 4. Modifikasi prog06.sh dengan menggunakan notasi untuk test $ vi prog06.sh.sh #!/bin/sh # prog06. sorry!” . perhatikan spasi antara $ $ $ $ $ NAMA=Dony test $NAMA = dony echo $? test $NAMA = Chevin echo $? 2. Jalankan program prog06.sh [nama=<user>] $ .sh echo –n “NAMA = “ read NAMA if [ “$NAMA” = Dony ] then echo “Selamat Datang $NAMA” else echo “Anda bukan Dony.sh [NAMA = Dony] $ .sh [nama=studentOS] Percobaan 8 : Instruksi Test 1.

File prog01. Bila file prog01. Bila prog01.sh ada” 3. karena itu instruksi echo dijalankan Percobaan 10 : Operator bilangan bulat untuk test 1. maka jalankan program berikutnya. File prog99. dan karena sudah TRUE maka instruksi echo tidak lagi dijalankan tergantung atas exit status instruksi ke dua. hasil masih $ [ -f prog99. prog06.sh ] || echo “Dieksekusi tidak ?” 6.fi 5. Jalankan program prog06. karena itu exit status adalah TRUE.sh dengan memasukkan NAMA = amir $ . maka tampilkan pesan error $ [ -f prog99.sh echo –n “INCOME = “ read INCOME if [ $INCOME –ge 0 –a $INCOME –le 10000 ] then BIAYA=10 elif [ $INCOME –gt 10000 –a $INCOME –le 25000 ] then .sh ] || echo “Dieksekusi tidak ?” 5. File prog01. File prog99.sh tidak ada.sh ada (TRUE).sh ada” 2. karena itu exit status adalah FALSE dan instruksi echo tidak dijalankan $ [ -f prog99. File prog99.sh ] && echo “Prog01.sh ada maka jalankan program berikutnya. hasil operasi AND masih tergantung pada hasil eksekusi instruksi ke 2. $ [ -f prog01.sh ] && echo “Prog99. karena itu exit status adalah TRUE. dan dengan demikian instruksi echo akan dijalankan.sh ada. Buatlah file prog07.sh ] && . Menggunakan operator dengan notasi test $ i=5 $ test “$i” –eq 5 $ echo $? $ [ “$i” –eq 5 ] $ echo $? 2.sh [NAMA = Dony] Percobaan 9 : Notasi && dan || 1.sh $ vi prog07.sh ada maka jalankan shell script tersebut $ [ -f prog01. karena itu exit status adalah FALSE. Bila prog01.sh 4.sh tidak ada” ada.sh ] || echo “Sorry.sh #!/bin/sh # prog07.sh memang $ [ -f prog01. prog01.sh tidak ada. prog99.sh tidak ada. Menggunakan operator dengan notasi [ ] (penganti notasi test) Percobaan 11 : Operator Logical dan konstruksi elif 1.

prog07.sh ] then exit 3 else exit –1 fi 2. prog07.sh echo “1. Jalankan file prog07. prog08. Tanggal hari ini” echo “3. Jalankan script prog08.sh dengan editor vi $ vi prog09. 20000. Buatlah file prog09.sh #!/bin/sh # Prog: prog09.sh [INCOME=5000] $ .sh $ echo $? Percobaan 14 : Konstruksi case – esac 1.sh $ vi prog08. prog07. Siapa yang aktif” echo “2. Buat shell script prog08. Kalender bulan ini” echo –n “ Pilihan : “ read PILIH case $PILIH in .sh [INCOME=20000] $ .sh #!/bin/sh if [ -f prog01.sh dan periksa status exit $ .BIAYA=25 else BIAYA=35 fi echo “Biaya = $BIAYA” 2.sh dan masukkan untuk INCOME=5000.sh [INCOME=28000] Percobaan 12 : Hitungan aritmetika 1. Menggunakan utilitas expr $ $ $ $ $ $ $ $ expr A=5 expr expr expr expr expr expr 5 + 1 $A $A $A $A $A 17 + 2 – 4 * 2 (Ada Pesan Error) \* 2 / 6 +10 % 5 2. Substitusi isi variable dengan hasil utilitas expr $ A=5 $ B=`expr $A + 1` $ echo $B Percobaan 13 : Instruksi exit 1. 28000 $ .

sh yang merupakan bentuk lain dari case $ vi prog10. Jalankan program prog09. t | T | tidak | Tidak | TIDAK ) JWB=t . prog10.1) echo “Yang aktif saat ini” who .sh yang merupakan bentuk lain dari case $ vi prog10.. esac 4. prog10.sh #!/bin/sh # Prog: prog10.sh echo –n “Jawab (Y/T) : “ read JWB case $JWB in y | Y | ya |Ya |YA ) JWB=y .. [tT] | [tT]idak ) JWB=t ..sh Percobaan 15 : Konstruksi for-do-done .sh echo –n “Jawab (Y/T) : \c“ read JWB case $JWB in [yY] | [yY][aA] ) JWB=y .sh.. prog09..sh #!/bin/sh # Prog: prog10.sh. 2) echo “Tanggal hari ini” date . Jalankan program prog10. Jalankan program prog10. Modifikasi file prog10.. cobalah beberapa kali dengan inputan yang berbeda $ .sh. 3) echo “Kalender bulan ini” cal .. *) JWB=? . esac 2.sh 3. esac 6. *) echo “Salah pilih !!” .sh 5... Buatlah file prog10. cobalah beberapa kali dengan inputan yang berbeda $ . cobalah beberapa kali dengan inputan yang berbeda $ .

sh 3. Buatlah file prog12. Jalankan program prog11.sh $ . program ini akan menampilkan long list dari file yang mempunyai ekstensi lst $ vi prog12.sh $ vi prog13.sh #!/bin/sh # Prog: prog12. Keluar” echo “ Pilihan : \c” .sh yang berisi konstruksi for dan wildcard. program ini akan menampilkan nama file yang berada di current direktori $ vi prog12. Jalankan program prog12.sh PILIH=1 while [ $PILIH –ne 4 ] do echo “1.sh $ .sh for NAMA in Dony Ariyus Randyka Fransisco do echo “Nama adalah : $NAMA” done 2. prog12.sh $ vi prog11.1.sh Percobaan 16 : Konstruksi while-do-done 1. Jalankan program prog12. Siapa yang aktif” echo “2.sh for F in *. Modifikasi file prog12. Buatlah file prog11.sh $ . Buatlah file prog13.sh 5.sh #!/bin/sh # Prog: prog13.sh. prog12.lst do ls –l $F done 6.sh #!/bin/sh # Prog: prog12.sh #!/bin/sh # Prog: prog11.sh for F in * do echo $F done 4. Tanggal hari ini” echo “3. prog11. Kalender bulan ini” echo “4.

prog13. Tanggal hari ini” “3.sh beberapa kali dengan input yang berbeda $ . Buatlah file prog14.sh #!/bin/sh # Prog: prog13.sh $ .sh PILIH=1 while : do echo echo echo echo echo read if [ then “1.sh yang berisi instruksi dummy untuk konstruksi if $ vi prog14. Kalender bulan ini” “4.sh echo –n “Masukkan nilai : “ read A if [ $A –gt 100 ] then : else echo “OK !” fi 4.sh Percobaan 18 : Fungsi .sh $ . Jalankan program prog13.sh Percobaan 17 : Instruksi dummy 1. Siapa yang aktif” “2. Jalankan program prog13. prog14.sh #!/bin/sh # Prog: prog14.sh $ vi prog13. Keluar” “ Pilihan : \c” PILIH $PILIH –eq 4 ] break fi clear done echo “Program berlanjut di sini setelah break” 2. Modifikasi file prog13. prog13.sh 3.read PILIH if [ $PILIH –eq 4 ] then break fi clear done echo “Program berlanjut di sini setelah break” 2. Jalankan program prog14.

sh F1( ) { local Honor=10000 echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo “Nilai balik adalah $?” echo “Honor = $Honor” 6. Menggunakan variable pada fungsi dengan memodifikasi file fungsi. Buatlah file fungsi.sh #!/bin/sh # Prog: fungsi.sh . Jalankan program fungsi.sh $ .sh 3. Jalankan program fungsi.sh F1( ) { echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo $? 2.1. 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.sh $ . Jalankan program fungsi.sh $ vi fungsi. fungsi.sh #!/bin/sh # Prog: fungsi. fungsi.sh 5. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh $ .sh $ vi fungsi.

sh fasal ftujuan if [ $# -ne 2] then echo “Error.sh # Usage: checkdir. usage: checkdir.sh DirectoryName” exit 1 fi [ … ] && … 3. maka sisa tersebut PPH 35% Contoh : Gaji 8 juta PPH = 15% * 8 juta Gaji 12 juta PPH =15% * 10 juta + 25% * (12-10) juta .sh. salin gagal.sh file-asal file-tujuan Dengan ketentuan : a.sh yang menyalin file (copy ) sebagai berikut : salin. Bila jumlah parameter tidak sama ($#) dengan 2. hitung PPH per tahun dengan ketentuan sebagai berikut: a. Bila file asal tidak ada. beri pesan apakan file tersebut akan dihapus.sh file-asal file-tujuan” exit –1 fi fasal=$1 ftujuan=$2 echo “salin. b. #!/bin/sh # file: checkdir. Bila file tujuan belum ada.sh $fasal $ftujuan” …… …… 2. Dengan shell script pph. berikan pesan. Gunakan notasi [ -d NamaDirektori ] dan pilih logic al && atau || pada level shell. lakukan copy Untuk mengambil nama file. Bila masih ada sisa. 10 juta pertama PPH 15% b. Namakan program tersebut checkdir.sh DirectoryName # if [ $# -ne 1] then echo “Error. maka copy file tersebut d. beri pesan bahwa file tidak bisa disalin ke direktori c.sh # Usage: salin. Bila file tujuan ada dan file biasa.sh. usage: salin. gunakan parameter $1 dan $2.LATIHAN: 1. 25 juta berikutnya (sisa) PPH 25% c. Buatlah program salin. maka beri pesan exit = -1 #!/bin/sh # file: salin. jika parameter tersebut adalah direktori. Bila file tujuan ada dan file tersebut adalah directory. bila dijawab dengan “Y”. Buat program yang memeriksa nama direktori. maka jalankan instruksi ls –ld pada direktori tersebut.

#!/bin/sh # Confirm whether we really want to run this service confirm() { local YES=”Y” local NO=”N” local CONT=”C” .. stop) echo “Ini adalah stop” . Modifikasi kerangka program berikut untuk memenuhi permintaan tersebut. esac return 5.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.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. nilai parameter harus berupa string : start stop status restart reload Bila buka dari string tersebut. Sempurnakan program di bawah ini untuk keperluan tersebut #!/bin/sh # See how we were called case “$1” in start) echo “Ini adalah start” . *) echo $”Usage:$0 {start|stop|restart|reload|status}” . No = 1 dan Continue = 2.sh yang memberikan konfirmasi jawaban Yes. maka berikan pesan error. Buat sebuah fungsi pada script confirm. No atau Continue. Jika jawaban Yes. maka beri nilai balik 0.. $ sh –x pph. Buatlah program myprog..sh yang memproses parameter $1.

LAPORAN RESMI: 1. then return 1 fi done } Test fungsi diatas dengan program berikut : $ vi testp. 3. then return 2 elif …. Setelah eksekusi script tersebut. maka fungsi confirm dapat digunakan. Berikan kesimpulan dari praktikum ini. adalah loading dari fungsi confirm yang terdapat di script confirm. 2. confirm.sh.while : do echo –n “(Y)es/(N)o/(C)ontinue? {Y] “ read answer answer=`echo “$answer” | tr ‘[a-z]’ ‘[A-Z]’` if [ “$answer” = “” –0 “$answer” = $YES ] then return 0 elif ….sh confirm if [ $? –eq 0 ] then echo “Jawaban YES OK” elif [ $? =eq 1 ] then echo “Jawaban NO” else echo “Jawaban CONTINUE” fi Perhatikan baris pertama. . Kerjakan latihan diatas dan analisa hasil tampilannya. Analisa hasil percobaan yang Anda lakukan.sh .