i STTS kolah Bab 2 Bourne Again Shell Teori PENDAHULUAN Ketika user login ke dalam Linux, mereka berkomunikasi dengan satu dari beberapa interpreter. Setiap operasi terhadap interpreter ini disebut shell, dan setiap shell mempunyai satu fungsi, yaitu membaca dan melaksanakan perintah-perintah dari input standard. Dengan shell maka perintah-perintah dapat : • digabung untuk menghasilkan perintah-perintah baru • mengirimkan parameter-parameter posisi • ditambahkan dan dihapus oleh user • diproses dalam suatu loop atau dalam conditional • dapat dijalankan background tanpa menginterrupt sebuah proses pada suatu terminal. Lebih jauh lagi, perintah-perintah dapat diberikan input dari suatu source dan dapat mengirimkan output ke file, printer, atau ke perintah yang lain. COMMANDS Cara yang paling umum di dalam menggunakan shell ialah dengan memasukkan perintah-perintah sederhana melalui keyboard. Argumen yang pertama (diberi nomer nol) akan berisi nama dari perintah yang Praktikum Sistem Operasi | 2 i STTS akan dijalankan, dan argumen lain yang dibutuhkan akan dikirimkan ke perintah tersebut. Contoh : • $ ls *.c #menampilkan semua file dengan extention .c • $ cat .profile #untuk menampilkan isi dari file .profile Jika sebuah perintah bersifat executable maka shell akan memprosesnya langsung. Contoh di atas memperlihatkan perintah yang sifatnya executable. Jika perintah dibuat sendiri oleh user dan belum executable maka user memerlukan procedure shell untuk menjalankannya. Untuk jelasnya ketikkan : • $ vi coba1 #untuk masuk ke dalam editor vi # Perintah menampilkan kalimat echo 'Ini Program Linux Saya' Lalu simpan dengan tombol Esc-x, maka sekarang user sudah mempunyai perintah baru yaitu coba1, dan untuk mejalankannya diperlukan shell procedure $ sh coba1 maka coba1 akan dijalankan BAGAIMANA CARA SHELL MENCARI PERINTAH Shell secara normal akan mencari perintah yang user ketikkan di dalam tiga lokasi yang berbeda pada filesystem. Mula-mula shell akan memakai langsung nama perintah yang diketikkan. Jika gagal maka directory /bin akan ditambahkan, dan jika tidak berhasil lagi maka /usr akan ditambahkan, sehingga directory-nya adalah /usr/bin/perintah. Mengenai masalah directory ini dapat diatur dengan mengubah path pada variabel PATH Linux. CARA MENAMPILKAN FILE Kebanyakan argumen-argumen dari perintah-perintah ialah nama file. Kadang-kadang nama file memiliki kemiripan. Agar dapat memproses Praktikum Sistem Operasi i STTS kolah nama file yang mirip maka Linux menyediakan bentuk-bentuk khusus yang dapat dipakai. Adapun bentuk-bentuk khusus tersebut ialah : • * Jika digunakan maka akan menampilkan semua nama file yang diinginkan. Contoh : • $ ls *.c • $ ls *temp* • $ ls a* • ? Jika digunakan maka akan menggantikan posisi dari satu karakter. Contoh : • $ ls coba? semua nama file yang mengandung kata coba plus satu karakter bebas akan ditampilkan. • [ ] Jika digunakan maka akan menampilkan semua nama file sesuai dengan karakter-karakter yang diberikan di dalam tanda []. Contoh : • $ ls coba [a-f] semua nama file yang mempunyai kata coba plus karakter a sampai f akan ditampilkan. Perhatikan bahwa nama directory tidak boleh mengandung karakterkarakter di atas. Beberapa karakter, seperti <, >, *, ?, [ ] memiliki arti tersendiri untuk shell. Untuk memakainya biasanya diperlukan tanda-tanda baca, antara lain : • Tanda petik tunggal (') atau tanda petik ganda (") untuk membuat suatu kalimat. Contoh : • $ echo 'Saya Mahasiswi STTS' Perhatikan perbedaanya dengan $ echo "Saya Mahasiswi STTS" • $ echostuff='echo $? $*; ls *| wc' $ echo $echostuff akan menghasilkan string echo $? $*; ls *| wc • Tanda `..` memiliki fungsi untuk menjalankan perintah yang terdapat di dalamnya. Praktikum Sistem Operasi | 2 i STTS Contoh : • $ ABC=`cat .profile` $ echo $ABC • Tanda $ pada contoh di atas ialah untuk menampilkan isi dari suatu variabel. Contoh : • $ kata='STTS' $ echo $kata maka akan tercetak STTS. • Tanda \ di depan sebuah karakter tunggal digunakan untuk mencetak karakter tersebut. Contoh : • $ echo "\"" maka hasilnya " Tanda \ juga digunakan untuk menjalankan suatu perintah di dalam perintah. Contoh : • $ echo "Directory anda sekarang : \`pwd\`" DERETAN PERINTAH DAN PERINTAH PIPA (PIPELINE) Perintah Linux dapat dibuat secara berderet dengan memisahkan dengan tanda: • ; (titik koma) Contoh : • $ who ; ls -l ; date • Pipeline sebagai filter (penyaring) untuk membatasi antara perintah yang satu dengan yang lain. Pipeline diwakili dengan tanda |. Di dalam deretan perintah yang mengandung pipeline maka tiap output perintah (kecuali perintah terakhir) akan menjadi input bagi perintah selanjutnya. Contoh : • $ banner STTS | write jim tty05 Dengan contoh di atas maka huruf STTS akan dikirim ke user jim. Praktikum Sistem Operasi i STTS kolah Untuk jelasnya ketikkan contoh di bawah ini : • $ who | ls • $ who | sort akan menampilkan semua user yang sedang login dalam keadaan urut. MENGGANTI PERINTAH Seperti diterangkan di atas bahwa semua perintah dapat diletakkan di dalam tanda `..` sehingga output dari perintah dapat disimpan pada suatu variabel. Hal ini berguna untuk memberikan nilai pada shell variabel. Contoh : • $ today=`date` maka today akan berisi tanggal dari system yang sedang berlaku saat itu. Untuk melihat isi dari today maka gunakan perintah echo $today. Kita dapat pula memberikan pipeline di dalam tanda `..`. Contoh : • $ users=`who | wc -l` Semua perintah yang akan ditampilkan di layar dapat diletakkan di dalam tanda `..`, dan di dalm tanda tersebut dapat dilakukan perintah berulang (di dalam perintah terdapat perintah lagi). Contoh : • $ logmsg=`echo your login directory is \`pwd\`` maka pwd yang juga merupakan perintah akan dijalankan. Variabel-variabel dapat diisi dengan menggunakan perintah read dan line commands. Contoh : • $ read first init last kita memasukkan input G. A. SNYDER maka first=G., init=A., last=SNYDER Dengan line command user dapat langsung mendefinisikan : first=G. init=A. last=SNYDER Praktikum Sistem Operasi | 2 i STTS PARAMETER PARAMETER POSISI Ketika suatu procedure shell dijalankan maka shell akan membuat parameter-parameter posisi. Di mana nama dari procedure shell ditempatkan pada posisi 0 ($0), parameter yang pertama = $1, dan seterusnya. Perintah shift dapat digunakan untuk mengakses parameter dengan nomor posisi yang lebih besar dari sembilan. Contoh : • $ pr a b c $ shift maka $0=pr, $1=b, $2=c VARIABEL VARIABEL YANG DIDEFINISIKAN USER Shell juga mengenal variabel-variabel yang mengandung alphanumerik. Untuk memberikan nilai pada variabel digunakan syntax : nama=string nama di sini mewakili nama dari variabel dan string ialah nilai yang akan diberikan ke variabel. Perhatikan bahwa antara tanda = dan string tidak ada spasi. Lebih dari satu assignment dapat dilakukan dalam sebuah baris perintah. Tapi perhatikan bahwa shell menjalankan assignment dari kanan ke kiri. Contoh : • $ a=$b b=abc maka a akan berisi abc Jika kita ingin memberikan spasi atau tab maka kita harus menggunakan tanda '...' atau "...". Contoh : • $ a=$b b='sekolah tinggi teknik surabaya' $ stars=***** #jika ingin memberi spasi maka stars=' *****' $ asteriks='$stars' Praktikum Sistem Operasi i STTS kolah $ asteriks="$stars" Perhatikan perbedaan dalam variabel asteriks. Untuk mengakses nilai dari suatu variabel dalam suatu deretan kata, gunakan tanda { }. Contoh : • $ a='pem' $ echo "${a}belian makanan" #tercetak pembelian makanan Perhatikan perbedaannya jika tanda { } tidak digunakan. Variabel-variabel di bawah ini dibuat oleh shell. Beberapa dari mereka diset oleh shell, tapi semua dapat diubah oleh user. • HOME Variabel yang berisi nama dari directory login user pada saat pertama kali login ke dalam Linux. Directory ini akan menjadi directory utama; perintah cd tanpa argumen akan mengembalikan user ke home directory. Contoh : • $ echo $HOME $ cd /usr/bin $ cd #kembali ke home $ pwd #melihat directory aktif • PATH Variabel yang berisi path yang digunakan shell di dalam mencari perintah. Contoh : • $ PATH=/bin:/usr/bin:. Tanda . di belakang merupakan current directory dan antara satu directory dengan directory lain dibatasi tanda : PATH secara normal selau di set di dalam file .profile Praktikum Sistem Operasi | 2 i STTS • PS1 Variabel yang berisi karakter (kata) yang digunakan sebagai prompt primer. Nilai standard dari PS1 ialah "$" untuk Bourne Shell, "#" untuk root, dan "%" untuk C Shell. Contoh : • $ PS1=STTS maka prompt primer akan berubah menjadi STTS • PS2 Variabel yang berisi prompt sekunder. Nilai standard dari variabel ini ialah ">". Contoh : • $ PS2=Second maka prompt primer akan berubah menjadi Second. • OLDPWD Variabel yang berisi working directory sebelumnya. • PWD Variabel yang berisi working directory saat ini. • SECONDS Variabel yang berisi jumlah detik yang telah dilalui sejak session bash yang sekarang dijalankan. User harus menggunakan perintah export untuk semua variabel di atas. Perintah export akan menyebabkan terjadinya nilai-nilai yang dimodifikasi tersebut berlaku untuk semua perintah shell yang dibuat. Contoh : • $ export HOME PATH PS1 PS2 Praktikum Sistem Operasi i STTS kolah VARIABEL VARIABEL SPECIAL TERDEFINISI Beberapa variabel memiliki arti penting seperti di bawah ini dan hanya diset oleh shell : • $# Variabel yang digunakan untuk menampung jumlah argumen yang dikirimkan ke suatu perintah, tetapi tidak termasuk nama dari perintah itu sendiri. Contoh : • $ sh pr a b c $ echo $# maka jumlah argumen yang ditampilkan ialah 3. Salah satu penggunaan penting dari variabel ini ialah untuk memeriksa apakah jumlah argumen yang ditulis sesuai dengan yang dibutuhkan oleh perintah. Contoh : • if test $# -lt 2 then echo 'Argumen yang dibutuhkan berjumlah 2 atau lebih' • $? Berisi exit status (exit code) dari perintah yang dilaksanakan terakhir. Nilainya berupa desimal. Kebanyakan perintah Unix mengembalikan nilai 0 untuk memberitahu bahwa proses sukses. Contoh : • $ mail root < notes $ echo $? maka akan ditampilkan nilai 0 jika file notes ada atau nilai 2 jika file notes tidak ada. • $$ Variabel yang berisi nomer proses dari perintah yang sedang diakses. Karena nomer-nomer proses unik untuk semua proses maka variabel ini Praktikum Sistem Operasi | 3 i STTS biasa digunakan membentuk nama yang unik untuk nama file temporary. Contoh : • $ temp=/usr/tmp/$$ $ ls > $temp $ rm -F $temp #hapus jika sudak tak terpakai • $! Variabel yang berisi nomer proses dari perintah terakhir yang dijalankan secara background. $! ini terdiri dari 1-5 digit. Contoh : • $ cc testfile.c& #program dijalankan secara background $ echo $! akan menampilkan nomer proses dari perintah di atas. • $Variabel yang berisi nama dari flag-flag eksekusi yang aktif di dalam perintah shell. Contoh : • $ cat .profile $ echo $akan menghasilkan 'xv'. FILE .profile File .profile dibaca setiap saat user login ke Linux pada Bourne Again Shell. File ini digunakan untuk menset variabel-variabel HOME, PATH, dll yang terdapat di dalam file tersebut. File ini seperti file AUTOEXEC.BAT di DOS. Contoh : • $ vi .profile lalu tambahkan echo 'STTS <Sekolah Tinggi Teknik Surabaya>' maka setiap kali user login, kalimat di atas akan dicetak. Praktikum Sistem Operasi i STTS kolah BOURNE AGAIN SHELL PROGRAMMING Karena shell Unix merupakan interpreter, maka shell juga mempunyai tata cara programming pula. Praktikum kali ini membahas cara programming Bourne Again Shell. Membuat procedure shell dapat dilakukan dengan membuat alur program pada screen editor vi dengan menuruti tata cara Bourne Again Shell programming. Perintah (shell) dapat dijalankan dengan 2 cara : 1. Dengan memanggil procedure shell terlebih dahulu Contoh : $ sh coba sh -v (untuk trace baris yang dijalankan) sh -x (perintah yang sedang diproses) 2. Dengan membuat program tersebut bersifat executable Sebelum dijalankan, directory tempat program tersebut darus dimasukkan dahulu dalam path. Contoh : isi file coba #!/usr/bin/sh # baris 1 menunjukkan program untuk menjalankan # baris 2 dan 3 adalah baris komentar echo „I love pinguin‟ echo “don‟t you ?” <EOF> • $ chmod u+x coba $ coba DAFTAR PERINTAH • Perintah echo : Bentuk penulisan perintah echo : Praktikum Sistem Operasi | 3 i STTS echo [option] [args] echo biasanya mengeluarkan output ke layar. Contoh : • $ echo "Program Linux Saya" Jika option n diberikan maka akan menghilangkan ganti baris (newline). Contoh : • $ echo -n 'Masukkan nama :' • Perintah read : Perintah read digunakan untuk meminta inputan $ read nama • Perintah if Bentuk penggunaan dari perintah if ialah : if [ekspresi1] then perintah-perintah elif [ekspresi2] then perintah-perintah else perintah-perintah fi Jika ekspresi yang dituliskan di samping if menghasilkan true, maka perintah di samping then akan dilaksanakan. fi digunakan untuk mengakhiri perintah if. Contoh : • if test -f "$1" then ls $1 elif test -d "$1" then (cd $1;ls -a) else echo $1 bukan suatu file atau directory fi Perintah test dapat digantikan dengan [ ]. Jadi : if [ -f "$1" ] Contoh : • if [ $HOME ] ; then echo hello ; fi if [ ! -f file ] then touch file #buat file Praktikum Sistem Operasi i STTS kolah fi • Perintah case Bentuk penggunaan dari case ialah : case string1 in kondisi1) perintah-perintah;; kondisi2) perintah-perintah;; *) perintah-perintah;; esac Tanda ;; untuk mengakhiri perintah case setelah perintah-perintah di dalam kondisi dilaksanakan. esac digunakan sebagai tanda akhir dari blok case. Contoh : • case $LOGNAME in root) echo 'hello root, selamat datang';; steve) echo 'bagaimana liburanmu ?';; jim) echo 'tolong baca mailmu';; esac User dapat juga menggunakan wild-card. Contoh : • case $LOGNAME in budi|jim) echo 'jangan lupa makan nanti';; *) echo 'welcome to Linux';; esac • Perintah while dan until Bentuk penulisan perintah : Praktikum Sistem Operasi | 3 i STTS while (atau until) ekspresi do perintah-perintah done while digunakan untuk melakukan perulangan selama ekspresi bernilai true, dan penggunaan dari until merupakan kebalikan dari while. Contoh : • #counter val=1 while [ $val -lt 11 ] do echo "Bilangan : `echo $val` masih < 11" val=`expr $val + 1` done • val=10 until [ $val -lt 1 ] do echo "Bilangan : `echo $val` masih > 0" val=`expr $val - 1` done • Perintah for Bentuk penulisan perintah for : for variabel in list do perintah-perintah done Contoh : • for val in 1 2 3 4 5 do echo $val done • for file in * ; do echo $file ; done • count=0 Praktikum Sistem Operasi i STTS kolah for file in * do count=`expr $count + 1` done • for val in `ls` do echo $val done Kita dapat menghilangkan 'in list' untuk menerima parameter dari luar. Contoh : • #ulang for word do echo $word$word done Lalu berikan status execute untuk file ulang dengan chmod +x ulang dan cobalah dengan ulang ma pa me ko • Loop Control : break dan continue Perintah break digunakan untuk menghentikan proses looping pada for dan while, dan perintah continue digunakan untuk melanjutkan looping dengan segera. Perintah-perintah ini hanya berfungsi selama ditulis di dalam blok do dan done. Contoh : • while true #loop forever do echo "Please enter data : " read response case $response in "done") break;; " ") continue;; *) #process data here;; esac done Perintah break dan continue dapat diikuti level n (break n atau continue n). Ini berguna di dalam nested loop untuk mengatur loop mana yang Praktikum Sistem Operasi | 3 i STTS akan di-break atau di-continue. Jika level tidak diberikan, maka loop yang terakhir yang akan di-break atau di-continue. • Akhir dari File dan Perintah exit Ketika shell mencapai akhir dari file pada procedure shell, maka shell akan mengeluarkan exit status. Tapi jika user ingin keluar dari procedure shell tanpa harus mencapai end of file maka user dapat menggunakan perintah exit n (n=levelnya). Contoh : • if true then exit 6 fi Setelah menjalankan program di atas, perhatikanlah isi dari variabel $?. Yang perlu diingat di sini ialah exit status untuk pelaksanaan perintah yang berhasil dijalankan oleh shell selalu sama dengan 0. • Mendefinisikan Function Shell memiliki kemampuan untuk membuat function. Function sama seperti procedure shell cuma function ini residen di memori sehingga dapat diakses langsung oleh shell. Bentuk penulisan : fname () { perintah-perintah shell } Function didefinisikan sekali dan dapat dipanggil berulang kali. Contoh : • getyn () { while echo "0* (y/n) ? c">&2 do read yn rest case $yn in [Yy]) return 0;; [Nn]) return 1;; *) echo "isi dengan y atau n">&2 esac Praktikum Sistem Operasi i STTS kolah done } cara menjalankan : getyn "Ingin melanjutkan lagi" • show () { echo $1 echo $2 exit } Cobalah dengan : show hello world • Perintah test : evaluasi kondisi Perintah test mengevaluasi ekspresi dari argumen yang diberikan. Jika ekspresinya benar, maka test akan menghasilkan nol sebagi exit status. Test memberikan exit status tidak sama dengan nol jika tidak ada argumen yang diberikan. Bentuk penulisannya : test ekspresi atau [ ekspresi ] Di bawah ini ada beberapa pilihan yang dapat dipakai bersama perintah test untuk membuat perintah conditional : -r nama file digunakan untuk menguji apakah file tersebut dapat dibaca oleh user. Contoh : • if test -r "$1" then cat "$1" fi -w namafile digunakan untuk menguji apakah file tersebut dapat ditulisi oleh user. Contoh : • if test -w "$1" then who >> "$1" fi -x namafile digunakan untuk menguji apakah file tersebut dapat dijalankan oleh user. Contoh : • if test -x "$1" Praktikum Sistem Operasi | 3 i STTS then "$1" fi -s namafile digunakan untuk menguji apakah file tersebut berukuran lebih besar dari 0. Contoh : • if test -s "$1" then mail jim < "$1" fi -d namafile digunakan untuk menguji apakah argumen yang diberikan merupakan sebuah directory atau bukan. Contoh : • if [ -d "$1" ] then (cd "$1"; ls -a) fi -f namafile digunakan untuk menguji apakah file tersebut merupakan file biasa. Contoh : • if [ -f "$1" ] then cat "$1" fi -z str mengeluarkan nilai true jika panjang str sama dengan 0. -n str mengeluarkan nilai true jika panjang str lebih besar 0. dan pilihan-pilihan di atas dapat dikombinasikan dengan operasioperasi : ! tanda tidak sama -a operasi and -o operasi or Contoh : • if test $# != "2" then echo "membutuhkan 2 argumen" fi Praktikum Sistem Operasi i STTS kolah • Perintah expr Perintah expr digunakan untuk operasi aritmatik dan logika pada bilangan integer. expr mengevaluasi ekspresi tunggal dan menulis hasilnya ke layar. Contoh : • a=1 while test $a -lt 5 do echo $a a=`expr $a + 1` done Selain digunakan untuk melakukan proses aritmatik, perintah expr juga dapat digunakan untuk : Mencari posisi suatu karakter expr index <kalimat> <karakter> Menghitung panjang kalimat expr length <kalimat> Melakukan proses substring expr substr <kalimat> <posisi awal> <panjang> • true dan false Perintah true dan false memberikan nilai true dan false. Perintah-perintah ini biasa digunakan untuk implementasi loop-loop tak bersyarat. Contoh : • a=1 while true do echo $a a=`expr $a + 1` if test $a -gt 10 then exit fi Praktikum Sistem Operasi | 4 i STTS done • Perintah . (titik) Bentuk pemakaian : . proc Dengan perintah ini menyebabkan shell membaca perintah dari proc tanpa membuat proses baru. Perubahan terhadap variabel di dalam proc hanya berpengaruh setelah perintah dot (.). Contoh : • $ a=`echo ini uji coba perintah .` $.a Perintah ini biasa digunakan untuk menginisialisasi ulang variabelvariabel yang terdapat di dalam file .profile setelah user melakukan perubahan. Contoh : • $ . .profile • Perintah PENGGANTIAN BERSYARAT (ISI VARIABEL) Jika user menuliskan $var maka isi dari var tersebut yang akan ditampilkan. Tapi kadang-kadang user ingin membuat suatu kondisi yang dapat mengatur penggantian penggunaan isi dari variabel. Dengan beberapa perintah di bawah ini maka penggantian berkondisi tersebut dapat dilaksanakan. Adapun variabel-variabel tersebut ialah : • ${variabel: - string} Perintah ini berarti jika variabel ini berisi maka gunakanlah isi dari variabel tersebut. Tapi jika variabel ini kosong maka gunakanlah ekspresi yang diberikan. Ingat dalam perintah di atas isi dari variabel tidak berubah. Contoh : • echo ${isi: - 'mahasiswa stts'} Praktikum Sistem Operasi i STTS kolah Lalu cobalah : isi='stts' echo ${isi: - 'mahasiswa'} • ${variabel:=string} Jika variabel berisi maka gunakan isi dari varabel, tapi jika variabel kosong maka isilah variabel dengan ekspresi yang diberikan (mengganti posisi string) dan gunakan untuk ekspresi. Contoh : • cd ${HOME:='/usr/gas'} ini berarti jika HOME tidak kosong maka cd ke isi dari HOME tapi jika kosong gunakan cd /usr/gas dan set HOME=/usr/gas • ${variabel:? string} Jika variabel berisi maka gunakan isi dari varabel, tapi jika variabel kosong maka tampilkan pesan yang terdapat di sebelah ?. Jika string tidak terisi maka yang akan tampil pesan: variabel : parameter null or notset. Contoh : • cat ${coba:? 'tidak ada file coba'} • $ {variabel:+ string} Jika variabel berisi maka gunakan isi dari string sebagai ekspresi. Kalau variabel kosong maka berikan tanda " ". Ingat isi dari variabel tidak akan berubah. Contoh : • a='stts' echo ${a:+ 'mahasiswa'} $a Praktikum Sistem Operasi | 4 i STTS MENGIRIM ARGUMEN-ARGUMEN KE SHELL PROCEDURE Jika user mengirimkan argumen-argumen ke shell maka jumlah argumen tersebut akan ditampung di variabel $#, di mana untuk argumen yang pertama akan diwakili $1. Contoh : # ripple command while test $# != 0 do echo $1 $2 $3 $4 $5 $6 $7 $8 $9 shift done Perintah shift digunakan untuk menggeser argumen ke kiri, di mana nilai dari $1 akan dikeluarkan, $2 menggantikan $1, $3 menggantikan $2, dan seterusnya. Perhatikan bahwa $0 tidak pernah digeser, sebab $0 mewakili nama procedure. Ubah program di atas pada bagian echo $1 .. $9 dengan echo $*. Dua perintah echo di atas mempunyai perbedaan, yang pertama akan mencetak paling banyak 9 parameter posisi, yang kedua akan mencetak semua parameter posisi yang diberikan. ENVIRONMENT PERINTAH Semua variabel yang dikenal oleh sebuah perintah pada saat mula-mula perintah dijalankan mempunyai environment tersendiri. Keyword parameter ialah variabel-variabel yang diletakkan di depan nama dari suatu procedure shell. Contoh : # keycommand echo $a $b Jika user ingin menjalankan perintah keycommand, misalnya : a=key1 b=key2 keycommand Praktikum Sistem Operasi i STTS kolah maka akan ditampilkan key1 key2 Keyword parameter tidak dihitung sebagai argumen-argumen terhadap suatu procedure dan tidak berpengaruh pada variabel $#. Untuk melihat isi dari environment gunakan : printenv atau env CONTOH PROGRAM SHELL: • MAILALL # mailall letter=$1 shift for i in $* do mail $i < $letter done Program di atas dapat dijalankan dengan : $ sh mailall letter joe bob atau dengan memberikan status execute pada file dengan chmod u+x mailall. Lalu jalankan dengan : $ mailall letter joe bob Jika mailall diletakkan di dalam directory yang ditunjuk oleh variabel PATH yang terdapat pada .profile maka mailall akan dapat dijalankan dari directory lain. • COPYPAIRS # penggunaan copypairs file1 file2 ... # copy file1 ke file2, file3 ke file4 while test "$2" != "" do cp $1 $2 shift; shift done if test "$1" != "" Praktikum Sistem Operasi | 4 i STTS then echo "$0: argumen ganjil" > &2 fi • COPYTO # pengunaan copyto dir file ... # copy file ke directory if test $# -lt 2 then echo "$0: membutuhkan dua argumen" elif test ! -d $1 then echo "$0: "$1 bukan sebuah directory" else dir=$1; shift for eachfile do cp $eachfile $dir done fi • WRITEMAIL # penggunaan : write mail message user # jika user log in # tulis pesan ke terminal # jika tidak maka tulis ke mail echo "$1" | { write "$2" || mail "$2" ; } • NULL # penggunaan : null files # membuat file kosong untuk setiap nama file for eachfile do > $eachfile done Praktikum Sistem Operasi