BAB 2 MENGGUNAKAN UNIX Oleh: Denny Yerianto Bab ini akan menguraikan sekilas tentang bagaimana menggunakan perintah-perintah dasar pada sistem UNIX, khususnya bagi pemula. Juga diuraikan pula mengenai beberapa konsep dasar UNIX. Pembahasan akan mencakup: - format umum perintah UNIX - karakter khusus - perintah-perintah dasar UNIX - substitusi nama file - masukan, keluaran dan keluaran kesalahan standar - pemipaan 2.1. STRUKTUR PERINTAH UNIX Shell bertanggung jawab untuk mengeksekusi seluruh program yang kita masukkan dari terminal. Setiap kita masukkan sebaris kata-kata ke dalam shell, shell akan menganalisa kata-kata tersebut dan menentukan apa yang harus dikerjakan. Format umum yang diterima oleh shell adalah sebagai berikut: nama-program argumen-argumen Baris kata-kata yang diketik ke dalam shell ini disebut perintah baris. Shell akan memeriksa perintah baris ini dan menentukan nama program yang dieksekusi dan argumen-argumen yang dilewatkan kepadanya. Shell menggunakan karakter khusus untuk menentukan dimana nama program dimulai dan diakhiri dan dimana nama masing-masing argumen dimulai dan diakhiri pula. Karakter yang digunakan untuk menandakan hal tersebut adalah karakter whitespace yaitu berupa karakter spasi (space), karakter tab dan karakter newline. Pemunculan karakter tersebut lebih dari satu kali akan diabaikan oleh shell. cp file1 file2 Shell akan memeriksa perintah baris tersebut dan mengambil karakter dari awal baris hingga ditemukan karakter whitespace sebagai nama program, yaitu cp. Kumpulan karakter sesudah karakter whitespace tersebut hingga ditemukan kembali karakter whitespace adalah sebagai argumen pertama, yaitu file1. Selanjutnya mulai dari sesudah karakter whitespace kedua hingga ditemukan karakter whitespace selanjutnya adalah argumen ke dua, yaitu file2. Setelah analisa perintah baris ini, shell mengetahui bahwa yang akan dieksekusi adalah perintah cp dengan argumen-argumen ke satu adalah file1 dan argumen ke dua adalah file2. Hal ini dapat digambarkan sebagai berikut: +----------+ +---------+ argumen | file1 | | cp |<- - - - - - - - - +----------+ +---------+ | file2 | +----------+ Gambar 2.1 Eksekusi perintah cp dengan 2 argumen Pada sistem UNIX terdapat ratusan perintah yang dapat dimanfaatkan untuk mengelola sistem. Perintah-perintah tersebut pada umumnya memiliki argumen. Argumen-argumen tersebut memiliki bentuk berupa: a. Pilihan (option) Pada umumnya pilihan di awali oleh tanda pilihan, misalnya tanda minus (-). Beberapa perintah mengijinkan penggabungan pilihan sekaligus dalam sebuah tanda pilihan. Disamping tanda pilihan minus, sering juga digunakan tanda pilihan plus (+) atau bahkan tanpa tanda pilihan. Pilihan dapat memiliki argumen b. Ekspresi Ekspresi merupakan kumpulan aturan yang mengatur masukan untuk perintah (akan dijelaskan pada bab lain) c. Namafile Namafile adalah nama dari file yang akan dimanipulasi. Pada umumnya file yang akan dimanipulasi oleh perintah dapat lebih dari satu. Secara umum derajat dari argumen-argumen tersebut pada sebuah perintah UNIX adalah: Perintah pilihan ekspresi namafile Pemanfaatan pilihan, ekspresi dan nama file bagi suatu perintah sesuai dengan kebutuhannya. Artinya kita dapat menggunakan sebagian atau seluruhnya atau tidak menggunakan sama sekali sesuai dengan format yang disediakan. Perhatikan contoh-contoh berikut ini (arti dari perintah-perintah berikut akan dijelaskan kemudian): $ rm file1 file2 file3 | | | | | +---------------> namafile | +--------------------> namafile +--------------------------> namafile Gambar 2.2 Perintah rm file1 file2 file3 $ ls -alR | +--------------------------> gabungan pilihan $ grep -v "chaerinda denny" file1 | | | | | +----> namafile | +----------------> ekspresi +--------------------------> pilihan Gambar 2.3 perintah ls dan grep Untuk melakukan pemanggilan lebih dari satu perintah dalam satu baris, dapat kita gunakan tanda semicolon ";" sebagai pemisah antar perintah. $ date ; pwd ; echo selamat datang di UNIX Fri Oct 23 07:28:32 PDT 1992 /usr/denny selamat datang di UNIX $ 2.2 BEBERAPA PERINTAH DASAR UNIX 2.2.1 Menampilkan Tanggal dan Waktu Perintah date dapat digunakan untuk menampilkan tanggal dan waktu sistem saat ini. Perhatikan contoh berikut: $ date Fri Oct 23 07:28:32 PDT 1992 $ Perintah date tanpa argumen akan menampilkan informasi berupa hari, bulan, tanggal, jam, menit dan detik dan tahun. Bila terdapat argumen, perintah date akan mengatur tanggal dan waktu sesuai dengan argumen yang dikirim. 2.2.2 Melihat Pemakai Aktif Saat Ini Perintah who dapat digunakan untuk menampilkan daftar pemakai yang sedang aktif dalam sistem UNIX. $ who root tty01 Oct 23 07:28 denny tty02 Oct 23 07:28 ucrit tty03 Oct 23 07:29 chaerind tty04 Oct 23 07:30 ita tty06 Oct 23 08:00 kamin tty07 Oct 23 08:15 aagung tty08 Oct 23 08:20 yhadi tty09 Oct 23 10:15 $ Disini terlihat ada beberapa pemakai yang sedang aktif dalam sistem UNIX. Misalnya ada sebuah terminal yang sedang tidak digunakan, namun sistemnya tidak dalam keadaan log out. Untuk mengetahui tentang jati diri pemakai terminal tersebut dapat kita gunakan perintah who am i yang akan menampilkan informasi pemakai terminal tersebut. $ who am i (pemakai terminal ini ucrit !) ucrit tty03 Oct 23 07:29 $ who dan who am i merupakan perintah yang sama, yaitu who. am i adalah argumen dari perintah who. 2.2.3 Mencetak Karakter ke Terminal Perintah echo dapat digunakan untuk menampilkan karakter ke terminal (kecuali beberapa karakter khusus). $ echo selamat datang di dunia UNIX selamat datang di dunia UNIX $ echo echo echo $ echo ditampilkan baris kosong $ echo satu dua tiga empat satu dua tiga empat $ Jika kita perhatikan pada contoh terakhir bahwa rangkaian spasi kosong antar kata satu, dua, tiga dan empat di atas seolah-olah diabaikan oleh perintah echo. Sesungguhnya hal ini disebabkan bukan oleh perintah echo, namun oleh kerja dari shell UNIX. Seperti telah diterangkan di muka bahwa shell UNIX akan mengartikan perintah diatas sebagai perintah echo diikuti oleh argumen-argumen, dimana spasi antar argumen diabaikan olehnya. +------------+ | satu | +------------+ +-------+ argumen | dua | | echo |<- - - - - - - - - - +------------+ +-------+ | tiga | +------------+ | empat | +------------+ Gambar 2.4 echo satu dua tiga empat Pemberian spasi tambahan dapat kita lakukan dengan cara memberi tanda kutip ganda pada awal dan akhirnya. $ echo "satu dua tiga empat" satu dua tiga empat $ atau menggunakan kutip tunggal $ echo 'satu dua tiga empat' satu dua tiga empat $ Dengan demikian kata satu, dua, tiga dan empat akan dianggap sebagai satu argumen seperti terlihat pada gambar berikut ini. +-------+ argumen +-------------------------------+ | echo |<- - - - - -| satu dua tiga empat | +-------+ +-------------------------------+ Gambar 2.5 echo 'satu dua tiga empat' Bandingkan gambar perintah echo pada gambar 2.4 dengan gambar 2.5. 2.2.4 Proses Latar Depan dan Latar Belakang UNIX merupakan sebuah sistem multitasking dan multiuser. Multitasking berarti lebih dari satu program dapat berjalan pada waktu yang bersamaan. Sedangkan multiuser berarti bahwa lebih dari satu pemakai yang dapat masuk ke dalam sistem (login) dan menjalankan program pada waktu yang sama. Program yang berhubungan dengan terminal pemakai disebut proses latar depan (foreground proces). Disamping itu, terdapat pula program yang tidak berhubungan dengan terminal pemakai, yang biasa disebut proses latar belakang (background proces). Bagaimana mungkin sebuah komputer dapat menjalankan lebih dari satu program ? Hal tersebut sebenarnya tidak terjadi. Komputer sangat cepat sehingga dapat menjalankan sebuah program untuk sesaat, beralih ke program lain, dan menjalankan sebuah program untuk sesaat dan kemudian beralih kembali ke program semula. Maka seolah-olah keduanya berjalan pada waktu yang bersamaan. UNIX menentukan program yang berjalan dan mengatur peralihan bolak balik antar mereka. Kita dapat mendefinisikan sebuah proses atau program yang berjalan tanpa berhubungan dengan sebuah terminal. Hal ini disebut proses latar belakang karena berjalan bila semua proses dengan terminal sedang menunggu. Setiap proses yang dijalankan UNIX memiliki prioritas yang berhubungan dengannya. Bila beberapa proses siap dijalankan, UNIX akan memilih proses yang akan berjalan berdasrkan prioritasnya. Bila seorang pemakai memulai sebuah proses latar belakan, maka dapat ditentukan agar proses tersebut berjalan pada prioritas lebih rendah dibandingkan proses latar depan. Dengan cara demikian program latar belakang tidak menggunakan sumber kritis bila diperlukan proses latar depan. Ia hanya berjalan jika sistem tidak memiliki pekerjaan lain. Biasanya orang menjalankan program yang panjang pada prioritas rendah di latar belakang, yaitu program yang tidak membutuhkan interaksi dengan pemakai, misalnya kompilasi program. Untuk menjalankan proses latar depan dengan mengetikkan perintah baris UNIX pada terminal dan mengakhirinya dengan enter. Proses ini berhubungan dengan terminal, walaupun ia tidak berkomunikasi dengannya, kita tidak dapat melakukan pekerjaan lain sampai saat proses selesai. Kita dapat menjalankan perintah yang sama sebagai proses latar belakang dengan mengetikkan sebuah karakter "&" pada akhir perintah baris. UNIX akan menjawab dengan menampilkan nomor id proses latar belakang yang dibuat untuk menjalankan program kita. Nomor id proses adalah unik untuk setiap perintah. Kemudian selanjutnya sistem akan menampilkan prompt shell, sehingga dapat dikirim perintah lainnya. $ sort data > file1 - (menunggu proses sort usai) $ sort data > file1 & (proses latar belakang) 1210 (nomor id proses) $ date Fri Oct 23 07:28:32 PDT 1992 (terminal langsung dapat $ digunakan tanpa menunggu) Keluaran standar dari proses latar belakang masih dapat diarahkan ke terminal, namun pada umumnya keluaran standar dalam proses latar belakang dikirim ke dalam file. Bila kita mempunyai beberapa proses latar belakang yang berjalan dan akan ditunggu hingga selesai sebelum melangkah pada program atau proses lebih lanjut, maka dapat kita gunakan perintah wait. $ sort data > file1 & (proses latar belakang) 1220 (nomor id proses) $ date Fri Oct 23 07:28:32 PDT 1992 (langsung digunakan ) $ wait 1220 (tunggu proses 1220 hingga usai) $ Jika perintah wait tidak diikuti id proses, berarti seluruh proses latar belakang yang ada akan ditunggu hingga usai. 2.2.5 Informasi Proses Perintah ps dapat digunakan untuk menampilkan informasi tentang proses yang sedang berjalan pada sistem UNIX. Ia juga dapat menunjukkan program yang sedang dijalankan setiap terminal dan juga proses latar belakang yang sedang berjalan. Tanpa argumen, perintah ps akan menampilkan proses yang dimiliki pemakai saja. Perhatikan contoh perintah ps tanpa argumen berikut ini: $ ps PID TTY TIME COMMAND 30 01 0:03 csh 73 01 0:00 sh 80 01 0:00 ps $ Jika kita memiliki sebuah proses yang sedang berjalan dari terminal dan salah sehingga tidak dapat dihentikan dari terminal memulai, maka kita dapat menghentikannya dari terminal lain dengan menggunakan perintah kill. Perintah kill juga dapat menghentikan proses latar belakang. Perintah kill ini membutuhkan nomor id proses dari proses yang ingin dihentikan. $ kill 30 $ 2.3 PERINTAH-PERINTAH UNTUK FILE DAN DIREKTORI Sistem file pada sistem UNIX dapat dikelompokkan menjadi 3 jenis yaitu : a. file biasa b. direktori c. file khusus file biasa adalah file yang umum kita gunakan untuk menyimpan data. Kumpulan file biasa membentuk apa yang disebut direktori. Tidak seperti halnya kebanyakan sistem operasi lainnya, UNIX memperlakukan semua piranti sebagai file, yaitu file khusus. Piranti-piranti tersebut dikelompokkan menjadi piranti blok dan piranti karakter. Piranti blok akan menyalurkan data dalam blok 512 byte, misalnya disk. Piranti karakter akan menyalurkan data satu karakter setiap saat, misalnya terminal. Sistem UNIX menyediakan berbagai utilitas yang mempermudah pemakai dalam mengelola file-file tersebut. 2.3.1 Melihat File dan Direktori Perintah ls dapat digunakan untuk melihat file atau direktori yang ada di dalam sebuah direktori tertentu, dengan default adalah direktori aktif saat itu (current). $ ls nama1 file nama2 file dir1 direktori $ ls dir1 coba1 $ Keluaran dari perintah ls tadi adalah nama file atau direktori. Dengan menggunakan pilihan -l kita dapat melihat informasi lengkap daftar file pada direktori tertentu. $ ls -l -rw-r----- 1 denny denny 931 May 21 05:41 nama1 -rw-r----- 1 denny denny 620 May 21 05:41 nama2 drw-r--r-- 1 denny denny 1479 Oct 23 07:34 dir1 $ ls -l dir1 -rw-r----- 1 denny denny 620 May 21 05:41 coba1 $ 2.3.2 Menampilkan Isi File Perintah cat dapat digunakan untuk menampilkan isi dari satu file atau lebih dan menuliskannya secara beruntun ke keluaran standar, serta menyambung file. Bila tidak terdapat file masukan yang ditentukan, cat akan membaca data dari masukan standar. $ cat nama1 unyil ucrit $ cat nama2 semar petruk gareng $ cat nama1 nama2 unyil ucrit semar petruk gareng $ 2.3.3 Menghitung Jumlah Kata, Baris dan Karakter dalam File Perintah wc dapat digunakan untuk menghitung jumlah baris, kata dan karakter dalam suatu file. $ cat nama1 denny yerianto chaerinda kuswidayanti herman trisdiantono aryo yudoko sri rahayu ayu ningsih $ wc nama1 5 12 93 cobba $ Perintah wc diatas menampilkan tiga angka yang diikuti oleh sebuah nama file. Nomor pertama menyatakan jumlah baris dalam file, nomor kedua menyatakan jumlah kata dalam file dan yang ketiga menyatakan jumlah karakter dalam file. Terkadang kita menginginkan informasi tentang jumlah karakter saja, jumlah baris saja atau jumlah kata saja. Untuk itu perintah wc juga dilengkapi dengan pilihan yang mengatur hal tersebut. Pilihan -l menampilkan jumlah baris dalam file $ wc -l nama1 5 nama1 $ Pilihan -c menampilkan jumlah karakter dalam file $ wc -c nama1 93 nama1 $ Pilihan -w menampilkan jumlah kata dalam file $ wc -w nama1 12 nama1 $ 2.3.4 Membuat Duplikat File Perintah cp dapat digunakan untuk membuat duplikat dari sebuah file. Argumen pertama adalah nama file dari aslinya dan argumen kedua adalah nama file dari aslinya. $ ls nama1 nama2 direktori1 $ cp nama1 nama3 $ ls nama1 nama2 nama3 (Aha, file duplikat!) direktori1 $ Disamping itu, argumen kedua atau argumen terakhir dapat merupakan nama direktori. Perhatikan contoh berikut ini: $ ls direktori1 coba1 $ cp nama1 direktori1 $ ls direktori1 coba1 nama1 file duplikat $ Untuk menduplikatkan beberapa file sekaligus ke dalam suatu direktori dapat dilakukan sebagai berikut: $ cp nama2 nama3 direktori1 $ ls direktori1 coba1 nama1 nama2 file duplikat nama3 file duplikat $ 2.3.5 Mengganti atau Memindahkan File Perintah mv dapat digunakan untuk mengganti nama file dari suatu file. Argumen yang mengikuti perintah mv adalah sama dengan perintah cp. Dengan demikian untuk mengubah file nama3 menjadi nama4 adalah: $ ls misal1 $ mv misal1 misal0 $ ls misal0 $ Disamping proses seperti di atas, dapat pula dilakukan pemindahan file dari suatu direktori ke direktori lainnya. Misalnya akan dipindahkan file nama4 ke direktori /tmp. $ ls misal0 misal3 $ ls /tmp misal2 $ mv misal0 /tmp $ ls misal3 $ ls /tmp misal0 misal2 $ 2.3.6 Menghapus File Perintah rm dapat digunakan untuk menghapus satu atau lebih file. $ ls coba1 coba2 coba3 $ rm coba1 coba2 $ ls coba3 $ 2.3.7 Bekerja dengan Direktori Pada sistem UNIX, sebuah direktori adalah sejenis file. Sebuah direktori dapat mempunyai file di dalamnya dan karena merupakan sebuah file, maka dapat membuat direktori di dalamnya. Akibatnya UNIX mempunyai sistem direktori yang berbentuk seperti pohon. Dengan mendefinisikan sebuah direktori baru dalam sistem maka terbentuklah sebuah cabang lain pada pohon. Dengan membuat beberapa direktori sebagai anggota direktori lainnya maka akan diperoleh sebuah sistem direktori berhirarki. Direktori ditandai dengan karakter "/". Direktori master untuk seluruh sistem disebut direktori akar atau root direktory. Direktori akar memiliki beberapa direktori lain sebagai anggota, antara lain adalah direktori etc, direktori bin dan direktori usr. Karena merupakan anggota direktori akar, maka namanya ditulis sebagai /etc, /bin dan /usr. Misalnya di dalam direktori /usr terdapat direktori lain bernama bin, maka ditulis /usr/bin. Proses pembuatan daftar seluruh direktori mulai dari direktori akar hingga salah satu direktori yang diberi nama, dinamakan nama jalur lengkap dari direktori. Perhatikan bahwa ada 2 direktori bin dengan nama jalur lengkap berbeda. Mereka mungkin memiliki nama akhir yang sama tetapi nama jalur lengkapnya berbeda, dengan demikian sesungguhnya mereka berbeda. Untuk mengetahui nama jalur lengkap dari direktori yang kita gunakan dapat digunakan perintah pwd. $ pwd /usr/denny $ Perintah di atas memberitahukan bahwa saat ini kita sedang berada dalam direktori /usr/denny. Kita dapat pindah dari suatu direktori ke direktori lain yang diijinkan, yaitu dengan menggunakan perintah cd. $ pwd /usr/denny $ cd .. $ pwd /usr $ cd /etc $ pwd /etc $ Untuk membuat direktori baru, kita dapat mengggunakan perintah mkdir sebagai berikut: $ mkdir /tmp/denny $ cd /tmp/denny $ pwd /tmp/denny $ Sedangkan untuk menghapus suatu direktori dapat dilakukan dengan menggunakan perintah rmdir: $ rmdir /tmp/denny $ Namun sebelumnya harus diingat bahwa direktori yang akan dihapus adalah direktori yang sudah kosong dan tidak ada file satupun di dalamnya. 2.4 SUBSTITUSI NAMA FILE 2.4.1 Pencocokan Seluruh Untaian Karakter Karakter asteriks atau "*" akan cocok dengan untaian karakter atau string apa saja. Sebelum diterangkan lebih lanjut, marilah kita lihat direktori yang akan dijadikan contoh. $ ls bab1 bab2 bab3 bab4 $ Seandainya kita akan melihat isi dari file-file tersebut secara keselurahan, maka kita dapat melakukannya dengan perintah cat sebagai berikut: $ cat bab1 bab2 bab3 bab4 .... (ditampilkan file isi bab1 s/d bab4) $ Selain dengan cara tersebut, kita juga dapat menuliskannya sebagai berikut: $ cat * .... (ditampilkan isi file bab1 s/d bab4) $ Ke dua cara di atas akan mendapatkan hasil yang sama. Shell otomatis akan mensubstitusikan nama dari seluruh file pada current direktory untuk *. Substitusi yang sama dapat pula dilakukan pada perintah echo: $ echo * bab1 bab2 bab3 bab4 $ echo bab* bab1 bab2 bab3 bab4 $ Disini karakter "*" digantikan dengan nama dari seluruh file yang ada pada current directory dan perintah echo akan menampilkannya pada terminal. Namun perhatikan contoh berikut ini: $ echo *ab2 bab2 $ echo *b* bab1 bab2 bab3 bab4 $ echo *x *x $ Pada dua contoh di atas memperlihatkan betapa fleksibelnya karakter "*" dalam mensubtitusi nama file. Pada contoh terakhir memperlihatkan bahwa karakter "*" dapat pula diartikan sebagai karakter "*" dan bukan pensubstitusi nama file. Hal ini dikarenakan file yang ada huruf 'x' nya tidak ada. 2.4.2 Pencocokan Setiap Karakter Tunggal Disamping pencocokan global dengan karakter asterisk, kita dapat pula melakukan pencocokan spesifik satu karakter, yaitu dengan karakter tanda tanya "?". Perhatikan isi direktori yang akan digunakan contoh. $ ls a aa aax aku b bb c cc report1 report2 report3 $ echo ? a b c $ echo a? aa $ echo ?? aa bb cc $ echo ??* aa aax aku bb cc report1 report2 report3 $ Cara lain adalah menggunakan tanda kurung siku []. Cara ini akan menyeleksi file berdasarkan apa yang disyaratkan dalam kurung siku tersebut. $ ls [a-b]* a aa aax aku b bb c cc $ Maksud perintah di atas adalah menampilkan daftar file dari current directory dengan syarat huruf awalnya adalah a sampai dengan c. Contoh lain misalnya anda menginginkan jangkauan angka seperti: $ ls bab1 bab2 bab3 $ ls bab[1-2] bab1 bab2 $ Tanda seru "!" dapat digunakan sebagai penginvert atau penyebalik arti. misalnya [!a-z] adalah cocokkan dengan karakter yang bukan a sampai dengan z (huruf kecil). Jadi bisa saja A s/d Z atau 0 s/d 9. 2.5 MASUKAN, KELUARAN DAN KELUARAN KESALAHAN STANDAR Setiap saat pemakai login, shell akan menganggap masukan dan keluaran standar adalah terminal yang digunakan pemakai. Keyboard sebagai masukan standar dan terminal sebagai keluaran standar dan keluaran kesalahan standar. Melalui ketiga bentuk standar ini perintah yang dijalankan oleh shell melakukan pertukaran data masukan dan keluaran. Dalam shell, ketiga standar tersebut dapat dialihkan arah masukan dan keluarannya, dikenal dengan istilah pengalihan atau redirection, yaitu menggunakan tanda lebih besar ">" untuk mengalihkan keluaran standar dan tanda lebih kecil "<" untuk mengalihkan masukan standar. $ who heru tty05 Oct 23 07:30 root tty01 Oct 23 07:28 denny tty02 Oct 23 07:28 ucrit tty03 Oct 23 07:29 chaerind tty04 Oct 23 07:30 $ who > berkas (keluaran dialihkan ke file) $ sort < berkas (masukan dialihkan dari file) chaerind tty04 Oct 23 07:30 denny tty02 Oct 23 07:28 heru tty05 Oct 23 07:30 root tty01 Oct 23 07:28 ucrit tty03 Oct 23 07:29 $ Sebenarnya program who dan sort tidak mempersoalkan adanya pengalihan arah dari masukan dan keluaran, karena shell yang mengartikan tanda lebih besar atau lebih kecil tersebut. Pemrogram cukup menganggap masukan dan keluarannya adalah dari masukan dan keluaran standar. Jika pemakai ingin mengalihkan arah masukan dan keluaran, maka shell yang akan mengatur hal tersebut tanpa harus mengubah program. Pada umumnya program tanpa argumen akan menggunakan masukan standar. Keluaran kesalahan standar digunakan supaya pesan kesalahan suatu program masih dapat dibaca pemakai jika keluaran standar program diubah arahnya oleh shell. Untuk itu shell menggunakan notasi khusus yaitu: 2> namafile Perhatikan bahwa konstruksi penulisannya tidak mengijinkan penggunaan spasi di antara angka 2 dan tanda lebih besar. Simbol 2 untuk keluaran kesalahan standar disebut juga file deskriptor, sebagai penunjuk untuk keluaran kesalahan standar . File deskriptor untuk keluaran standar adalah 1. $ cat filenull > filetmp filenull: No such file or directory (pesan kesalahan dicetak ke layar) $ cat filenull > filetmp 2> fileerr (ubah keluaran standar ke fileerr) $ cat fileer filenull: No such file or directory $ Berikut ini adalah tabel pengalihan masukan dan keluaran. ----------------------------------------------------- Karakter Fungsi ----------------------------------------------------- > file alihkan keluaran standar ke file >> file tambahkan keluaran standar ke file 2> file alihkan keluaran kesalahan standar ke file < file ambil masukan standar dari file ----------------------------------------------------- Tabel 2.1 Pengalihan masukan dan keluaran 2.6 PIPA Pada contoh-contoh diatas bila anda hendak menggunakan keluaran dari suatu program menjadi masukan dari program lain, maka harus digunakan berkas sementara, untuk aliran data. Biasanya berkas sementara akan dihapus jika telah selesai digunakan. Cara yang lebih efisien adalah menggunakan fasilitas pipa (pipe) dari UNIX. Pipa adalah cara untuk menggabungkan keluaran dari suatu program menjadi masukan dari program lain. Karakter yang digunakan adalah "|", yang akan menginstruksikan shell untuk membangun hubungan masukan keluaran antara dua program. $ ls -l berkas1 berkas2 berkas3 $ ls -l | wc -l 3 $ Contoh di atas dapat diterangkan dengan gambar sebagai berikut: / \ / +-+------+-+/ berkas1 \+-+----------+-+/ | | ls | | berkas2 | | wc -l | | 5 +-+------+-+\ berkas3 /+-+----------+-+\ \ / \ atau / +-+------+-++-+----------+-+/ | | ls | || | wc -l | | 5 +-+------+-++-+----------+-+\ \ Gambar 2.6 Proses pemipaan Jadi program yang membaca masukan dari masukan standar dapat di alihkan arahnya oleh shell untuk membaca dari pipa. Konvensi ini berlaku untuk hampir semua program standar dalam sistim UNIX. Perintah yang tidak mengambil masukan seperti date dan who tentunya tidak digunakan dalam rangkaian pemipaan. Hubungan perintah pipa dapat digabung secara berurutan dan lebih dari satu pipa. Program akan berjalan sesuai urutan dalam pipa dan tugas shell untuk mengatur sinkronisasi keluaran sebagai masukan dari program sesudahnya. Fasilitas pipa hanya memproses keluaran standar dari suatu program. Keluaran kesalahan standar tetap akan tercetak pada layar terminal, sehingga kesalahan suatu program pada saat melakukan pemipaan tetap diinformasikan kepada pemakai. 2.7 KARAKTER KHUSUS UNIX Shell akan memberi arti khusus pada beberapa karakter. Beberapa diantaranya telah dibicarakan sebelumnya, yaitu karakter * dan ? Karakter-karakter ini memiliki fungsi khusus, sehingga pemunculannya akan diartikan khusus pula oleh shell. Berikut ini adalah tabel dari karakter khusus dan fungsinya. ------------------------------------------------------- Karakter Fungsi ------------------------------------------------------- "..." Mencegah tindakan karakter khusus dalam untaian karakter yang disertakan, tetapi memperbolehkan karakter khusus untuk ekspansi variabel dan perintah bekerja. $ Menyebabkan substitusi variabel shell & proses latar belakang '...' Mencegah karakter khusus yang ada dalam untaian karakter yang disertakan () Memberi daftar perintah untuk dikerjakan sebagai proses terpisah * karakter yang dapat mencocokkan dengan untaian karakter apa saja - menunjukkan tanda pilihan dari perintah yang menyertainya / memisahkan bagian dari nama jalurnya direktorinya : memisahkan harga untaian karakterpada saat membuat sebuah variabel shellmenjadi lebih dari satu untaian karakter ; memisahkan beberapa perintah dalam satu baris ;; delimiter pada perintah case < masukan standar > keluaran standar ? karakter yang dapat mencocokkan dengan karakter tunggal apa saja [...] mengelompokkan karakter untuk pencocokkan \ mencegah karakter khusus yang mengikutinya {} mengelompokkan daftar perintah | membentuk pipa antar perintah ------------------------------------------------------- Tabel 2.2 Karakter khusus (Bersambung) HAK CIPTA OLEH VLSM PEMULA 2000