BAB 1 PENGANTAR UNIX Oleh: Denny Yerianto 1.1 MENGENAL UNIX Dibanding dengan sistem operasi yang lain, mungkin UNIX bukan yang terbaik. Akan tetapi sebagian besar sistem operasi non-UNIX itu hanya untuk komputer tertentu. Suatu aplikasi yang dirancang pada sistem operasi tertentu tidak dapat dengan mudah dioperasikan pada komputer dengan sistem operasi yang berbeda. Ketergantungan terhadap komputer tertentu dirasakan kurang menguntungkan oleh pihak pemakai. Pada umumnya pemakai menginginkan suatu sistem yang dapat mengoperasikan perangkat lunak yang standar pada perangkat keras dari berbagai vendor yang saling bersaing. UNIX saat ini tengah memasuki proses penyempurnaan untuk memenuhi kebutuhan standar itu. Dari pihak vendor baik di Amerika, Eropa maupun Asia menyadari bahwa UNIX memberi standar dunia yang memungkinkan pemakai menghindari ketergantungan terhadap vendor tertentu. Dan standarisasi sistem operasi berbasis UNIX yang ada saat ini berkembang untuk mendukung terbentuknya lingkungan komputasi sistem terbuka (open system computing). 1.2 STRUKTUR DAN KEMAMPUAN UNIX UNIX adalah sistem operasi komputer. Yang dimaksud dengan sistem operasi komputer adalah program yang berguna untuk mengendalikan sistem komputer. Sistem operasi akan mengalokasikan sumber daya komputer dan penjadualan proses. Sumber daya dapat berupa : - waktu CPU - memory - disk - tape - printer - terminal - modem - piranti lain yang dihubungkan dengan komputer. Sistem operasi juga merupakan penghubung antara pemakai dengan perangkat keras dan memberikan cara bagaimana pemakai melakukan akses pada sumber daya komputer tersebut. Hubungan antara pemakai, sistem operasi dan perangkat keras digambarkan pada gambar 1.1 sebagai berikut: +-----------------------+ | pemakai | +-----------------------+ | sistem operasi | +-----------------------+ | perangkat keras | +-----------------------+ Gambar 1.1 Sistem Operasi Pada mulanya UNIX dikembangkan di komputer besar, namun kini banyak pula terdapat pada komputer sedang bahkan komputer mikro. Struktur sistem UNIX terdiri dari beberapa bagian. Untuk memudahkan dalam menerangkan struktur UNIX, maka sistem UNIX akan diuraikan menjadi beberapa lapisan. Lapisan-lapisan tersebut digambarkan sebagai berikut: +---------------------------+ | s h e l l <----------- Bourne Shell | ................... | C shell awk --------------> Utilitas . | Korn Shell grep | . +-------------+ . | make | . | Kernel | . | cp | . | +---------+ | . | ... | . | | h/w <-------------- Komputer | . | | sistem | | . | Printer | . | +---------+ | . | Disk | . +-------------+ . | Tape | ................... | ... | | +---------------------------+ Gambar 1.2 Sistem UNIX a. Lapisan yang paling dalam adalah komputer dan piranti pendukungnya, seperti disk, tape, printer dan lain-lain. Ini semua disebut perangkat keras sistem. b. Di seputar perangkat keras tersebut terdapat sejumlah program yang menangani secara detail seperti sumber daya komputer, mengorganisir sistem file, mengurus disk dan tape. Pengoperasian yang dilakukannya sangat detil sehingga tidak perlu diketahui oleh pemakai. Lapisan ini kita sebut kernel. Kernel merupakan otak dari otak dari sistem operasi. c. Kernel menyediakan lapis dukungan, yaitu berupa program utilitas. Utilitas berfungsi untuk melakukan akses sistem bagi pemakai. Utilitas-utilitas yang agak sederhana dapat dikombinasikan dengan memakai fasilitas pemipaan. d. Lapis terluar dari sistem UNIX adalah shell. Shell merupakan penghubung antara pemakai dan sistem. Bila pemakai mengetikkan sebuah perintah, shell menerjemahkan perintah tersebut dan mengatakan kepada kernel apa yang harus dilakukan. Sesungguhnya shell merupakan bagian dari utilitas. Namun karena kerumitannya dan fungsinya yang sedikit unik, maka shell cenderung dianggap sebagai lapis terpisah. Kemampuan-kemampuan yang dimiliki oleh UNIX antara lain sebagai berikut: o Multiuser Sistem dapat digunakan oleh lebih dari satu orang pada satu saat. Tentunya untuk melakukan hal ini harus digunakan lebih dari satu terminal yang dihubungkan. Selanjutnya, kita dapat memakai file, program bahkan piranti-piranti yang terhubung dengan komputer secara bersama. o Multitasking Sistem dapat melakukan beberapa tugas atau proses pada waktu yang bersamaan. Dengan demikian sesorang dapat memiliki satu proses yang sedang berkomunikasi langsung dengan terminal, tetapi juga memiliki proses lain dengan prioritas yang lebih rendah. o Sistem File Organisasi file di UNIX memiliki struktur pohon (tree) yang terdiri dari file dan direktori. Struktur tersebut diawali oleh akar (root) sebagai awal dari seluruh direktori yang ada. Karakteristik dari sistem file UNIX antara lain: - konsisten dalam memproses data dan peralatan - pertumbuhan file dan direktori secara dinamis - dilengkapi dengan proteksi o Shell Shell merupakan antar muka pemakai dengan sistem UNIX. Shell memiliki kemampuan menterjemahkan perintah-perintah untuk dilaksanakan oleh kernel UNIX. Disamping itu, shell memiliki kemampuan sebagai bahasa pemrograman. o Utilitas-utilitas UNIX memiliki lebih dari 200 utilitas yang dapat digunakan untuk mengelola sistem. UNIX memiliki sejumlah utilitas yang agak sederhana yang dapat dikombinasikan dengan memakai pipa dan filter. o Surat Elektronik UNIX dilengkapi dengan fasilitas untuk pengiriman surat antar pemakai di lingkungan sistem UNIX. o Konsep Perangkat Keras Perangkat keras yang terhubung pada sistem UNIX akan dianggap sebagai file biasa. UNIX tidak membedakan antara perangkat keras dan file biasa. UNIX mengenal keyboard sebagai masukan standard dan layar terminal sebagai keluaran standard. o Komunikasi antar Proses keluaran dari suatu proses dapat diproses langsung oleh proses lainnya (lihat bab 4). o Jaringan Pemakai UNIX dapat berhubungan dengan pemakai lain dalam satu komputer (hubungan antar terminal). Disamping itu pemakai UNIX juga dapat berkomunikasi dengan pemakai lain pada komputer lainnya dalam satu jaringan lokal atau LAN. Bahkan pemakai UNIX dapat berhubungan dengan pemakai lain pada jaringan lain dalam lingkup jaringan luas atau WAN. Data ditransfer dari PC ke UNIX, UNIX ke UNIX dan UNIX ke mesin atau komputer lain melalui: - kabel komunikasi langsung RS232 (serial comm) - ethernet - dial up modem, leased line, public switched data network. o Keamanan UNIX menyediakan fasilitas keamanan untuk pemakai biasa, pengembang sistem, dan administrator sistem serta jaringan sistem. Proteksi dilakukan melalui password (login), perijinan file dan direktori, enkripsi data, usia password otomatis, shell terbatas dan identifikasi jaringan. 1.3 SEJARAH UNIX Sistem operasi UNIX mulai dibuat pada tahun 1969. Pada waktu itu Ken Tompson dan kawan-kawan sekerjanya khususnya Dennis Ritchie dan Joseph Ossanna dari Laboratorium Bell, yang merupakan bagian dari AT&T (American Telephone and Telegraph), sedang mengerjakan proyek MULTICS. MULTICS adalah singkatan dari MULTIplexed Information and Computing Systems, namun beberapa orang ada yang mengartikan sebagai Many Unnecessarily Large Tables In Core Simultaneously. Setelah MULTICS selesai, muncul beberapa kejanggalan dan dinilai kurang ramah dengan lingkungan komputer yang ada. Kemudian mereka memutuskan untuk membuat sistem operasi baru. Namun Ken tidak ingin menulis keseluruhan dari awal, mereka melanjutkan dan memodifikasi beberapa kemampuan yang ada pada MULTICS. Nama UNIX itu sendiri berasal dari kata UNICS yaitu Uniplexed Information and Computing Systems, yang dicetuskan oleh Brian Kernighan pada tahun 1970. Saat itu UNIX masih ditulis dalam bahasa assembly untuk komputer DEC PDP 7. Pada tahun yang sama, UNIX berhasil pula diimplementasikan pada komputer DEC PDP-11/20. Waktu itu yang pertama kali menggunakan UNIX adalah kantor Laboratorium Bell, yaitu untuk sistem pengolahan teks. Kantor ini tercatat sebagai pemakai UNIX yang pertama di dunia. UNIX terus berkembang dan beberapa fasilitas pendukung pemakai mulai dilengkapi, seperti fasilitas pengeditan dan pemformatan. Akhirnya pada tahun 1971 lahirlah UNIX versi pertama. Pada musim panas 1973 UNIX ditulis kembali dalam bahasa C. Pada saat itu kernel UNIX, yaitu inti sistem operasi yang mengatur keseluruhan proses termasuk masukan dan keluaran, terdiri atas 10.000 baris program C dan sekitar 1000 baris program assembly. Dengan menggunakan bahasa C, sistem operasi ini menjadi lebih mudah dimengerti dan dikembangkan. UNIX yang dikeluarkan pada tahun 1973 disebut UNIX versi 4. Jumlah pemakai UNIX di Laboratorium Bell bertambah banyak dan dukungan pengembangan semakin dibutuhkan. Untuk itu dibentuk dua kelompok peneliti lain di Laboratorium Bell. Pada perkembangan selanjutnya ternyata kedua kelompok ini saling bersaing. Kelompok pertama dikenal dengan nama PWB (Programmer's Workbench). Kelompok ini dipimpin oleh Rudd Canaday. Mereka pada dasarnya disamping memberi dukungan juga mengembangkan UNIX khususnya untuk perangkat lunak-perangkat lunak besar. Hasil kerjanya yang pertama diberi nama PWB/UNIX 1.0 Kelompok kedua diberi nama USG (UNIX Suport Group). Mula-mula kelompok ini hanya menyediakan dukungan saja, namun selanjutnya kelompok ini mencoba membuat beberapa versi UNIX untuk kebutuhan sendiri. Mereka memperkenalkan versi terbarunya yang diberi nama MERT (Multi Environtment Real-Time). MERT ini sama dengan konsep mesin virtual. Pada tahun 1974 UNIX versi 5 dikeluarkan. Versi ini secara resmi dibuat untuk tujuan pendidikan. UNIX versi inilah yang diajarkan di berbagai universitas. Konon harganya sangat murah sekali. UNIX semakin populer setelah Laboratorium Bell mengeluarkan UNIX versi 6 pada bulan Mei 1975. Versi ini merupakan versi pertama yang dapat diperoleh kalangan luar Laboratorium Bell dengan membayar royalti. Hal ini menyebabkan banyak institusi lain yang ikut mengembangkan UNIX, antara lain Rand, BBN (Bolt Beranek and Newman), Universitas Illinois, Harvard, Purdue dan Universitas California di Berkeley. Pengembangan yang paling potensial adalah yang dilakukan oleh Universitas California Barkeley. Versi yang dikeluarkan diberi nama UNIX versi BSD (Berkeley Software Distributions). UNIX versi 7 dikeluarkan pada tahun 1979 dengan dilengkapi kompiler C dan sebuah shell yang diberi nama Bourne shell. Sifat portabilitas mulai didapat pada UNIX versi ini. Versi ini merupakan basis bagi semua pengembangan sistem UNIX yang bersifat komersial. Pada awal tahun 80-an, SCO (The Santa Cruz Operation) bekerja sama dengan Microsoft mengimplementasikan UNIX pada Intel 8086 dan beberapa mikroprosesor lainnya. Versi UNIX ini dikenal dengan nama SCO XENIX. Saat ini XENIX sudah sangat populer di kalangan pemakai UNIX di komputer mikro. Persaingan antara kelompok USG dan PWB berakhir pada tahun 1982. Mereka bergabung menjadi USDL (Unix System Development Laboratory) dan memperkenalkan UNIX system III. UNIX system V baru muncul pada tahun 1983 oleh AT&T Information System. Versi inilah yang paling banyak beredar sampai saat ini disamping UNIX versi BSD. UNIX system V ini mencakup beberapa kemampuan dari BSD, seperti editor vi dan C shell. Dengan demikian kronologis pengembangan UNIX yang telah diuraikan di atas dapat dirinci sebagai berikut: 1969 UNIX lahir pada PDP-7 1971 UNIX Versi 1, pada DEC PDP-11/20 1973 UNIX Versi 4, dalam bahasa C dibentuk kelompok PWB dan USG 1974 UNIX Versi 5, untuk pendidikan 1975 UNIX Versi 6, disebar ke litbang Universitas timbul versi BSD 1979 UNIX Versi 7, portable dan dilengkapi dengan kompiler C dan Bourne Shell 1982 UNIX System III, Gabungan PWB dan USG 1983 UNIX System V, ditambahkan versi BSD seperti vi dan C shell 1.4 TENTANG BUKU INI 1.4.1 Tata Cara Penulisan Huruf Dalam buku ini, kami menyajikan beberapa jenis huruf. Secara umum tata cara penulisan huruf yang digunakan dalam buku ini adalah sebagai berikut: a. Teks biasa Disamping digunakan untuk bacaan biasa, jenis huruf ini digunakan untuk memperlihatkan keluaran atau response dari sistem. b. Huruf miring Digunakan untuk nama file atau istilah asing. Jika huruf miring tersebut di letakkan di dalam tanda kurung maka diartikan sebagai komentar atau penjelasan dari operasi yang tengah dilakukan (tidak terlihat pada layar terminal sistem). c. Huruf tebal Digunakan untuk menandakan masukan yang diketikkan oleh pemakai yang akan dikirim ke dalam sistem. d. Karakter ^ Digunakan untuk perintah penekanan tombol kontrol pada keyboard yang diikuti oleh huruf lain. Misalnya: ^H penekanan kontrol H ^D penekanan kontrol D ^C penekanan kontrol C Awas, ^H tidak sama dengan penekanan tombol ^ dan tombol H ! e. Karakter $ Digunakan sebagai tanda prompt atau menyatakan bahwa shell telah siap menerima perintah yang akan dikirim ke dalam sistem. f. Huruf tebal bergaris bawah Digunakan untuk menandakan bahwa karakter-karakter tersebut merupakan masukan yang diketikkan oleh pemakai namun hasil ketikannya tidak ditampilkan ke layar terminal. Untuk lebih jelasnya, maka perhatikan contoh-contoh berikut ini: Login: denny Password : yerianto (yerianto tak terlihat mata!) $ ls bin data program rahasia tmp $ Kata Login dan Password merupakan keluaran sistem. Kata denny merupakan masukan dari pemakai. Kata yerianto merupakan masukan yang diketikkan oleh pemakai namun hasil ketikkannya tidak ditampilkan pada layar terminal. Kalimat (yerianto tak terlihat mata!) merupakan penjelasan terhadap operasi yang tengah dilakukan. Karakter $ merupakan prompt UNIX, yaitu UNIX yang menggunakan Bourne shell, yang berarti bahwa UNIX siap menerima perintah yang akan dikirm ke dalam sistem. Kemudian kata ls merupakan perintah yang diketikkan melalui terminal oleh pemakai yang selanjutnya oleh shell akan dikirim ke dalam sistem. Hasil operasi perintah yang dimasukkan ditampilkan ke layar sebagai keluaran sistem, seperti terlihat yaitu bin, data, program, rahasia dan tmp. Selanjutnya shell siap menerima perintah berikutnya, hal ini ditandai dengan karakter $. 1.4.2 Apa saja yang akan dipelajari Akan memberikan tuntunan praktis untuk bekerja di dalam UNIX. Tuntunan diberikan melalui uraian-uraian singkat dengan dilengkapi contoh-contoh yang bervariasi dan disertai beberapa contoh kasus. Secara Umum materi yang tercakup di dalam ini adalah sebagai berikut: Bab 1 : Sekilas tentang kemampuan dan perkembangan sistem operasi UNIX. Bab 2 : Pengertian rekening pemakai, password dan prosedur penggunaan UNIX. Bab 3 : Konsep file dan direktori serta operasi yang berhubungan dengan keduanya. Bab 4 : Konsep proses dan hubungan antar proses, seperti pemipaan, filter dan pengalihan arah masukan dan keluaran. Bab 5 : Utilitas-utilitas UNIX seperti grep, sort cut, cmp, diff, find dan lain-lain. Bab 6 : Penggunaan editor teks UNIX, seperti vi, ex dan sed. Bab 7 : Pengertian tentang shell dan teknik pemrogramannya. Bab 8 : Fasilitas untuk melakukan komunikasi antar pemakai di dalam sistem. Materi ini menyajikan materi tentang UNIX system V. Namun demikian, tidak menutup kemungkinan dapat digunakan pada UNIX versi BSD karena dasar-dasar UNIX-nya tidak jauh berbeda. (Bersambung) HAK CIPTA OLEH VLSM PEMULA 2000, www.pemula.com BAB 2 Oleh: Denny Yerianto MULAI BEKERJA DENGAN UNIX Bab ini akan menjelaskan tentang bagaimana bekerja dengan menggunakan UNIX. Disamping itu juga akan dijelaskan mengenai beberapa konsep dasar UNIX yang perlu diketahui. Pembahasan akan mencakup: - konsep rekening pemakai - memulai, menggunakan dan mengakhiri UNIX - password dan masalah keamanannya - format umum perintah UNIX - karakter dan tombol khusus - pertolongan tentang perintah 2.1 PEMAKAI DALAM SISTEM UNIX Setiap pemakai yang akan menggunakan sistem UNIX harus memiliki sebuah rekening pemakai di dalam sistem. Rekening ini akan digunakan untuk mengidentifikasikan pemakai di dalam sistem. Pemakai yang dikenal oleh sistem akan diperbolehkan masuk dan melakukan operasi-operasi yang diijinkan, sedangkan yang tidak dikenal oleh sistem akan ditolak masuk. Rekening pemakai yang digunakan UNIX terdiri dari 7 field dimana pembatas antar field tersebut yaitu ':'. Ketujuh field tersebut adalah : a. Nama pemakai atau user name Semua pemakai UNIX akan diberikan nama pemakai atau user name dimana nama pemakai ini akan digunakan untuk mengidentifikasi pemakai yang akan masuk ke dalam sistem. Di dalam sistem, nama pemakai antar pemakai sebaiknya unik atau tidak boleh ada yang sama. Jika tidak maka akan menimbulkan beberapa hal- hal yang tidak diinginkan kemudian, misalnya surat elektronik yang akan salah alamat. b. Password Ketika kita akan masuk ke dalam sistem, UNIX akan selalu menanyakan password kita. Password dapat dimisalkan sebagai kunci untuk memasuki lingkungan kerja pemakai. Tanpa kunci tersebut, kita tidak dapat masuk ke dalam sistem dan lingkungan kerja milik kita sendiri. c. Nomor id pemakai Disamping nama pemakai, seorang pemakai juga memiliki nomor id pemakai. Berbeda dengan nama pemakai, nomor id pemakai haruslah unik. Nomor ini digunakan oleh sistem untuk mengidentifikasikan pemakai pada beberapa operasi di dalam sistem. d. Nomor id group Beberapa pemakai dapat disatukan dalam satu group. Group tersebut memiliki nama group dan nomor id group dimana informasi lengkap tentang group itu sendiri tersimpan pada file /etc/group. Pada rekening pemakai cukup dicantumkan nomor id group saja. e. Informasi rekening pemakai Informasi rekening pemakai digunakan untuk menjelaskan tentang pemilik rekening tersebut. f. Home direktory Home directory adalah direktori yang pertama kali kita kunjungi dan tinggali ketika masuk ke dalam sistem. Pada umumnya direktori ini merupakan direktori standar dimana kita dapat bekerja. g. Program yang pertama kali dieksekusi Ketika pemakai masuk ke dalam sistem, secara otomatis UNIX akan langsung mengeksekusi perintah yang tercantum pada kolom ini. Pada umumnya perintah yang pertama kali dieksekusi adalah shell. Selanjutnya shell akan menerjemahkan perintah- perintah lainnya yang kita masukkan ke dalam sistem. Perhatikan contoh rekening pemakai milik tati dibawah ini: tati:Zzwd8ofgcPVIw:189:S1_87:staf:/usr/tati:/bin/sh | | | | | | | | | | | | | | +---------|-------|-----|----|-------|------|-> nama pemakai +-------|-----|----|-------|------|-> password +-----|----|-------|------|-> no id pemakai +----|-------|------|-> no id group +-------|------|-> informasi pemakai +------|-> direktori tinggal +-> program pertama Gambar 2.1 rekening pemakai Perhatikan bahwa pada kolom password terdapat kata Zzwd8ofgcPVIw dimana kata tersebut merupakan password dari pemakai. Namun apakah itu merupakan password sesungguhnya ? Bukan ! Password sesungguhnya telah dikonversi atau di-encrypt. Jadi yang terlihat pada file rekening tersebut merupakan konversi dari password aslinya. Password asli tidak dapat diketahui oleh siapapun. Pada rekening pemakai tati juga terlihat bahwa program yang pertama kali dieksekusi ketika pemakai masuk ke dalam sistem UNIX adalah program /bin/sh yaitu program shell. Seluruh rekening milik pemakai di dalam sistem UNIX disimpan di dalam sebuah file yang diberi nama /etc/passwd. Contoh isi sebuah file rekening pemakai adalah sebagai berikut: $ cat /etc/passwd root:hxI/hs24w48Qg:0:0:Super user:/:/bin/csh sysadm::0:0:System Administration:/usr/sysadm:/bin/sh shut::0:0:Shutdown Otomatis:/usr/shut:/bin/sh cron:NOLOGIN:1:1:Cron daemon for periodic tasks:/: bin::3:3:System file administration:/: uucp::4:4:Uucp :/usr/spool/uucppublic:/usr/lib/uucp/uucico asg:NOLOGIN:6:6:Assignable device administration:/: sysinfo:NOLOGIN:10:10:Access to system information:/: network:NOLOGIN:12:12:Mail and Network :/usr/spool/micnet: lp:NOLOGIN:14:3:Print spooler administration:/usr/spool/lp: dos:NOLOGIN:16:10:Access to Dos devices:/: chaerind:9zws8okDcPVIw:190:1087:geo:/tmp:/bin/sh denny:Zzw.8ofgcPVIw:3710:1087:denny yerianto:/usr/mhs/denny:/bin/sh ucrit:dsfinUcnsf2ck:3711:1087:ucrit :/usr/mhs/ucrit:/bin/csh jecky:Kawhju.ZQ4GOk:3713:51::/usr/jecky:/bin/ksh heru::3714:51::/usr/heru:/bin/sh $ Pada sistem UNIX dikenal dua jenis pemakai yaitu: a. Pemakai biasa Pemakai biasa adalah pemakai yang diberi ijin untuk menggunakan sistem dan beberapa fasilitas lain dalam UNIX dengan batas-batas perijinan tertentu. Dengan demikian pemakai biasa tidak dapat secara bebas keluar masuk direktori lain atau tidak dapat secara bebas menggunakan file-file di dalam sistem. Ingat, pemakai biasa hanya boleh menggunakan direktori atau file yang telah dijinkan saja. b. Super user Super user adalah pemakai yang memiliki hak istimewa di dalam sistem UNIX karena memiliki kemampuan yang tidak dibatasi oleh perijinan yang diterapkan pada sistem. Super user dapat keluar masuk direktori atau menggunakan file secara bebas. Pada umumnya super user dimiliki oleh administrator sistem. Administrator sistem adalah pemakai yang bertanggung jawab untuk mengelola sistem. Nama pemakai dari rekening super user , di dalam /etc/passwd biasanya bernama root dengan nomor id pemakai 0. 2.2 MEMULAI, MENGGUNAKAN DAN MENGAKHIRI UNIX Jika kita baru pertama kali menggunakan UNIX, langkah pertama yang dilakukan adalah meminta rekening pemakai kepada administrator sistem. Jika administrator sistem menyetujui, maka ia akan membuatkan rekening pemakai baru bagi kita serta menyediakan home direktori sebagai direktori tempat kita bekerja. Jangan lupa pula menanyakan nama pemakai bagi rekening kita, sebab nama tersebut tidak selalu sesuai dengan nama kita yang sesungguhnya. Pada umumnya nama pemakai pada rekening pemakai adalah 8 karakter. Perlu ditanyakan pula apakah password sudah diberikan ke dalam rekening tersebut. Setelah langkah-langkah di atas telah dilakukan, maka kita siap menggunakan terminal UNIX. Layar terminal kita terlihat sebagai berikut: login: Untuk masuk ke dalam sistem UNIX kita harus melalui proses login, yang akan memeriksa apakah kita diijinkan masuk ke dalam sistem. Proses pemeriksaan dilakukan oleh sistem dengan cara memeriksa nama pemakai dan password yang kita masukkan ke dalam sistem. Berikut ini akan dicontohkan cara memasukkan nama pemakai dan password ke dalam sistem, dimana nama pemakai adalah denny dan passwordnya adalah yerianto. login: denny (masukkan nama pemakai) password: yerianto (yerianto tak tampak dilayar) Welcome to UNIX System V for personal computers Brought to you by The Santa Cruz Operation $ (prompt tanda shell siap) Pengetikan password tidak akan ditampakkan pada layar. Hal ini bertujuan untuk merahasiakan password yang diketik. Tanda prompt menandakan jenis shell yang digunakan. Tanda prompt $ adalah menandakan jenis shell Bourne shell atau Korn shell. Sedangkan tanda prompt % menandakan jenis shell C shell. Kini kita telah berada di dalam sistem UNIX. Tepatnya di dalam home directory yang telah ditentukan sesuai dengan yang tercantum pada rekening pemakai. Kita dapat menjalankan perintah-perintah UNIX yang diijinkan bagi kita. Marilah kita coba beberapa perintah UNIX. Perintah pertama yang akan kita coba adalah perintah untuk menampilkan karakter ke layar terminal. Perintah yang digunakan adalah perintah echo yang diikuti dengan argumen berupa karakter yang akan ditampilkan ke layar terminal. Perhatikan contoh berikut ini: $ echo selamat datang di dunia UNIX selamat datang di dunia UNIX $ Kita juga dapat menampilkan siapa saja pemakai yang sedang aktif di dalam sistem UNIX sekarang dengan menggunakan perintah who sebagai berikut: $ 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 kamin tty06 Oct 23 10:29 suibam tty07 Oct 23 11:01 unyil tty08 Oct 23 11:29 satria tty09 Oct 23 11:30 $ Atau kita juga dapat melihat tanggal dan waktu sekarang dengan menggunakan perintah date. $ date Fri Oct 23 07:28:32 PDT 1992 $ Untuk masuk ke dalam sistem UNIX, kita harus melalui suatu proses yang disebut dengan proses login seperti telah diuraikan pada awal sub bab ini. Untuk keluar dari sistem, kita juga harus melakukan suatu proses yang disebut dengan proses logout. Ada tiga cara untuk keluar dari sistem UNIX yaitu: $ exit login: atau $ ^D (tekan kontrol dan D) login: atau $ logout login: Ingat, setiap sebelum meninggalkan terminal, kita harus melakukan proses logout. Jika tidak maka pemakai lain dapat menggunakan rekening pemakai milik kita. Pemakai tersebut dapat bertindak apa saja dengan mengatasnamakan rekening pemakai kita. 2.3 PASSWORD DAN MASALAH KEAMANANNYA Terkadang administrator sistem membuatkan rekening pemakai baru tanpa memberikan password. Akibatnya setelah kita mengisikan nama pemakai, maka pengisian password tidak dilakukan dan langsung masuk ke dalam sistem UNIX. Hal ini dapat dimisalkan sebagai rumah yang tidak terkunci pintunya. Keadaan ini akan sangat berbahaya bagi kita, karena pemakai lain dapat masuk dan menggunakan rekening kita. Oleh karena itu maka sebaiknya rekening tersebut harus segera diberi password. Perintah yang digunakan untuk membuat atau mengganti password adalah perintah passwd. Jika sebelumnya kita tidak memiliki password, maka cara yang digunakan untuk membuat password baru adalah sebagai berikut: $ passwd Changing password for denny New password: yerianto (tak tak tampak pada layar) Re-enter new password: yerianto $ Jika sebelumnya kita sudah memiliki password, maka cara yang dapat digunakan untuk mengganti password lama adalah sebagai berikut: $ passwd Changing password for denny Old password : yerianto New password : gontaganti Re-enter new password : gontaganti (konfirmasi) $ Sebelum kita mengganti password lama, maka kita diwajibkan untuk memasukkan password lama. Hal ini untuk memastikan bahwa kita memang berhak mengganti password dari rekening pemakai tersebut. Perhatikan contoh berikut dimana pemakai yang akan mengganti password lama tidak diijinkan mengganti dengan password baru dikarenakan tidak mengetahui password lamanya. $ passwd Changing password for denny Old password : gantiganti (seharusnya gontaganti !) sorry. $ Pada bagian akhir proses penggantian password dilakukan konfirmasi untuk memastikan tidak ada kesalahan isian password baru. Jika terjadi kesalahan pada konfirmasi maka perubahan dibatalkan dan diulang kembali. Jika kesalahan lebih dari tiga kali maka proses penggantian akan dibatalkan. Perhatikan contoh berikut ini : $ passwd Changing password for denny Old password : gontaganti New password : yerianto Re-enter new password : gontaganti (yerianto ?) They don't match; try again. Re-enter new password: gantiganti (yerianto ?) They don't match; try again. Re-enter new password: jerianto (yerianto ?) Too many tries; try again later. $ Pada umumnya panjang minimal karakter yang digunakan untuk password adalah lima karakter (beberapa UNIX ada yang mensyaratkan 8 karakter). Jika jumlah karakter password kurang dari yang ditentukan maka proses penggantian akan dibatalkan. $ passwd Changing password for denny Old password : gontaganti New password : chae (minimal 5 karakter) Too short. Password unchanged. $ Hal yang penting untuk diperhatikan dalam memelihara password, yaitu kemungkinan pembongkaran password milik kita oleh orang lain yang tidak berhak. Banyak cara yang telah dilakukan oleh para hacker untuk membongkar password sesorang. Tujuan mereka beraneka ragam, dari sekedar mencari kepuasan terhadap keberhasilan membongkar hingga upaya yang disengaja untuk mengacaukan sistem kita. Berikut ini akan diberikan panduan praktis untuk melindungi password kita agar tidak mudah dibongkar orang lain. a. Password harus mudah diingat oleh kita sendiri tetapi tidak mudah diingat oleh orang lain. b. Jangan menggunakan bagian dari nama lengkap, nama panggilan, nama kekasih, tanggal lahir, inisial, dan hal lain yang berhubungan dengan diri kita. Atau jangan pula menggunakan nama tempat, nama gedung, atau kata-kata yang lazim ada di kamus bahasa . contoh: - denny (nama pemakai sendiri) - yerianto (nama akhir) - 20011969 (tanggal lahir) - 7270165 (nomor telepon) - elexmedia (nama instansi) - jembatan (kata yang lazim) Jika masih tetap menginginkan kata-kata tersebut, seharusnya kata-kata tersebut diacak terlebih dahulu, misalnya dengan cara membalik urutan huruf sehingga sepintas lalu agak sulit diterka. - ynned (nama pemakai sendiri, denny) - 96911002 (tanggal lahir, 20011969) - 5610727 (nomor telepon, 7270165) - aidemxele (nama instansi elexmedia) Terkadang kata-kata 'plesetan' dapat lebih menyulitkan pembongkaran password. Contoh: - bon7ovi (bon jovi, penyanyi rock) - rock 4U (rock for you) - man7des (mantu judes) c. Jika mengalami kesulitan dalam menghafal password, jangan melakukan pencatatan pada buku, papan tulis atau tempat lain. Hal ini akan memudahkan orang lain untuk melihat dan kemudian membongkarnya. Tempat yang paling aman adalah di dalam otak kita. d. Gunakan lebih dari enam karakter dan sebaiknya mencakup karakter-karakter non alfabet. Contoh: - s_AR2_c3 - dg71m33ex - ada blank ! - 7d2u5u9r= - 1/3disayu Sebenarnya, password yang paling ideal adalah gabungan alfabet dan non alfabet karakter dengan rangkaian yang tak bermakna. Namun sayangnya hal itu sangat sulit untuk dihafalkan. Cara berikut ini akan menghasilkan rangkaian karakter password yang mudah dihafal oleh kita tetapi cukup sulit dihafal oleh orang lain. Caranya adalah dengan mengambil karakter awal suatu kalimat panjang yang mudah diingat. Gabungan karakter awal tersebut akan membentuk rangkaian karakter password. Selanjutnya yang perlu kita hafalkan adalah kalimatnya, bukan rangkaian karakter passwordnya. Kalimat tersebut bisa sebagai peribahasa, awal lagu dan lain-lain. Perhatikan contoh berikut ini: o bka5rrw balon ku ada 5 rupa rupa warnanya o tagytr tak ada gading yang tak retak o dksnkk dut keredut si nini kapi kadut o jlpmrsgh jhon lenon paul mccartney ringo star george harrison Perhatian, jika kita lupa password rekening pemakainya, maka tak ada mekanisme apa pun yang dapat menemukan kembali password yang terlupakan tersebut. 2.4 FORMAT UMUM PERINTAH UNIX Shell bertanggung jawab untuk mengeksekusi seluruh program yang kita panggil dari terminal. Setiap kita memasukkan sebaris kata-kata dan diakhiri dengan enter 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.2 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 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 $ ls -alR | +--------------------------> gabungan pilihan $ grep -v "pasal[1-12]" file1 | | | | | +------> namafile | +----------------> ekspresi +--------------------------> pilihan Gambar 2.3 perintah rm, ls dan grep Untuk melakukan pemanggilan lebih dari satu perintah dalam satu baris, dapat kita gunakan tanda semicolon ';' sebagai pemisah antar perintah. $ date ; who; echo selamat datang di UNIX Fri Oct 23 07:28:32 PDT 1992 root tty01 Oct 23 07:28 denny tty02 Oct 23 07:28 ucrit tty03 Oct 23 07:29 chaerind tty04 Oct 23 07:30 kamin tty06 Oct 23 07:30 suibam tty07 Oct 23 07:30 unyil tty09 Oct 23 07:30 selamat datang di UNIX $ 2.5 KARAKTER DAN TOMBOL KHUSUS UNIX Shell akan memberi arti khusus pada beberapa karakter. 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.1 Karakter khusus Disamping karakter khusus, terdapat pula beberapa tombol yang memiliki makna tertentu. Berikut ini adalah tabel dari tombol khusus dan fungsinya: ------------------------------------------------------- Singkatan Arti Tombol ------------------------------------------------------- intr gagalkan operasi Del (Delete) quit gagalkan dengan core dump ^\ (Ctrl-\) erase hapus dengan backspace ^H (Backspace) kill hapus baris ^U (Ctrl-U) eof bangkitkan end-of-file ^D (Ctrl-D) eol pilihan end-of-line ^@ (NULL) swtch job-control switch ^@ (NULL) ------------------------------------------------------- Tabel 2.2 Tombol khusus Tombol-tombol tersebut dapat kita definisi ulang dengan menggunakan perintah stty. Misalnya UNIX pada komputer yang kita gunakan menggunakan tombol del untuk melakukan erase dan kontrol-C untuk intr, maka kita dapat mengubah lingkungan kita seperti terlihat pada tabel di atas dengan cara sebagai berikut: $ stty intr "^?" erase "^H" $ Untuk melihat tombol yang telah terdefinisi di dalam lingkungan kita, dapat digunakan cara sebagai berikut: $ stty -a speed 9600 baud; line = 0; intr = DEL; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = ^@; swtch = ^@ -parenb -parodd cs8 -cstopb hupcl cread -clocal -loblk -ctsflow -rtsflow -ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc ixon ixany -ixoff isig icanon -xcase echo echoe echok -echonl -noflsh opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel cr0 nl0 tab3 bs0 vt0 ff0 $ 2.6 PERTOLONGAN TENTANG PERINTAH Jika kita mengalami kesulitan dalam mengoperasikan UNIX, ada sumber daya informasi yang dapat kita gunakan yaitu buku manual UNIX. Di dalam buku tersebut terdapat penjelasan yang rinci tentang berbagai hal termasuk pertolongan tentang perintah-perintah yang kita kurang mengerti. Beberapa UNIX menyediakan fasilitas pertolongan langsung di dalam sistem terhadap perintah yang tidak kita kenal, yaitu menggunakan perintah man dengan diikuti nama perintah yang ingin diketahui. man perintah Setelah pemanggilan perintah tersebut di atas, maka akan ditampilkan manual dari perintah yang ditanyakan. Manual perintah ditampilkan dalam bentuk yang telah ditata menggunakan text formatter. Manual tersebut berisikan informasi tentang: a. Nama (name) Nama perintah atau program dan keterangan singkat. b. Tata kalimat (syntax) Menguraikan tentang tata cara menggunakan perintah UNIX. Keterangan yang diberi kurung siku atau '[]' adalah pilihan atau option. Pada umumnya pilihan didahului tanda minus. Contoh: translate [-f rules] [-d] file [output-file] Perintah ini dapat digunakan sebagai berikut: translate source translate -f myrules source translate -d source translate source destination translate -f myrules -d source destination c. Deskripsi (description) Menguraikan aksi dari perintah tersebut, termasuk di dalamnya adalah penjelasan dari masing-masing pilihan dan parameternya. d. Lihat juga (see also) Acuan ke perintah lain. e. File-file Merupakan daftar file yang menjalankan perintah. File-file ini mungkin sebagai subyek dari perintah. f. Catatan (Notes) Komentar-komentar mengenai keterbatasan atau bahaya- bahaya dari penggunaan perintah ini. g. Kesalahan (Bugs) Berisi daftar kesalahan yang telah diketahui di dalam program. Beberapa UNIX menggunakan perintah help untuk menampilkan pertolongan. Program help lebih cepat dari pada man dalam menampilkan pertolongan karena help tidak menggunakan text formatter. Pada umumnya help menampilkan tata kalimat perintah atau program dan sebaris penjelasan tentang pilihan. $ help more more: MORE - View File by Screenful or by Line $ more [options] [files] Options: + /pat start two lines beforeline containing pat -c redraw page on line at a time -d prompt after Screenfull -f count by newlines instead of screen lines -l treat formfeed (^L) as ordinary character -n window size (default set with stty) +n start viewing file at line n -r display control character as ^C -s reduce multiple blank lines to one -u suppress terminal underlining or enhancing -w prompt before exiting (any key terminates) ? or h show summary of more commands $ (Bersambung) HAK CIPTA OLEH VLSM PEMULA 2000 ,http://www.pemula.com yerianto@yahoo.com BAB 3 FILE DAN DIREKTORI Oleh: Denny Yerianto yerianto@yahoo.com Bab ini akan menjelaskan tentang konsep file dan direktori serta bagaimana menggunakannya di dalam sistem UNIX. Pembahasan akan mencakup mengenai: - pengertian file dan direktori - aturan penamaan file dan direktori - menggunakan perintah dasar dengan pwd, ls, cd - melihat isi file dengan cat, pg - menentukan jenis file - membuat dan menghapus direktori - menggunakan perintah file dengan cp, mv dan rm - substitusi nama file - perijinan dan proteksi 3.1 PENGERTIAN FILE DAN DIREKTORI Sistem file pada sistem UNIX dapat dikelompokkan menjadi 3 jenis yaitu: a. File biasa adalah file yang umumnya kita gunakan untuk menyimpan data, seperti program atau dokumentasi. b. File khusus tidak seperti halnya kebanyakan sistem operasi lainnya, misalnya DOS, UNIX memperlakukan semua piranti atau peralatan yang terhubung ke dalamnya sebagai file. Piranti-piranti tersebut oleh UNIX dikelompokkan menjadi dua, yaitu: o piranti blok piranti blok akan menyalurkan datat dalam blok 512 byte, misalnya disk. o piranti karakter piranti karakter menyalurkan data satu karakter setiap saat, misalnya terminal. Piranti-piranti ini semua biasanya diletakkan di dalam sebuah direktori khusus, yaitu direktori /dev. c. Direktori adalah file yang berisi kumpulan file. Kumpulan file dapat berupa file biasa atau file khusus, bahkan dapat pula berisi direktori sehingga memungkinkan direktori berisi direktori. Sebagai hasilnya, UNIX memiliki sistem direktori yang berbentuk sebuah pohon atau tree. / | ..+----+----+----...----+----... | | | | bin dev etc ... usr | ..+----------+----+----+----... | | | bin mhs staf ... | | ... +----+----+ +----+---- ... | | | | | denny ... ... heru dono . . . . . . . . . Gambar 3.1 Sistem direktori pohon Penamaan direktori ditandai dengan sebuah '/'. Direktori utama untuk seluruh sistem disebut direktori root atau direktori akar dan ditulis sebagai '/'. Direktori root memiliki direktori lain sebagai anggota. Beberapa diantaranya adalah direktori bin, direktori dev, direktori etc, dan direktori usr. Karena mereka merupakan anggota direktori root, namanya ditulis sebagai /bin , /dev, /etc dan /usr. Direktori /usr dapat memiliki direktori lain, misalnya direktori staf dan mhs. Nama direktori dituliskan /usr/staf dan /usr/mhs. Nama jalur dari root hingga ke direktori tertentu disebut complete path name atau nama lengkap jalur. Perhatikan bahwa direktori /usr/bin dan /bin berbeda. Mereka mungkin memiliki nama akhir yang sama tetapi nama jalur lengkapnya berbeda. Panjang nama file dan direktori dapat lebih dari empat belas karakter, yang terdiri karakter apa saja. Namun demikian, beberapa karakter telah memiliki arti khusus bagi shell, sehingga penggunaan karakter tersebut pada nama file dan direktori sebaiknya dihindari (perhatikan tabel karakter khusus pada bab sebelumnya). Berikut ini contoh-contoh dari nama file yang benar: - coba - COBA - 1992 - prog1.c - prog2.c - mhs_S1 - old-prog - old_prog Berikut ini adalah contoh nama-nama file yang sebaiknya dihindari. - >cobaaku - coba|aku - sia?a - [repot] - pau LAYAR TERMINAL . --------+ / . . |/ . |\ . --------+ \ . KEYBOARD masukan 0 > . --------+ / . . |/ . . . |\ . --------+ \ . kesalahan 2> LAYAR TERMINAL . --------+ / . . |/ ............ Gambar 4.1 Proses masukan dan keluaran Kebanyakan program yang tersedia dalam UNIX mengambil masukan dari masukan standar dan menuliskan keluaran ke keluaran standar. Program seperti ini biasa disebut filter Program yang menggunakan nama file sebagai salah satu parameter dari perintahnya, sesungguhnya mengubah masukan standarnya dari keyboard ke file, sehingga file menjadi masukan bagi program. Sebagai contoh, misalnya kita memiliki sebuah file bernama peserta yang berisi nama-nama. File tersebut akan diurutkan berdasarkan nama dengan urut kecil ke besar, maka cara yang dilakukan adalah sebagai berikut: $ sort peserta arif budiman bagus pribadi denny yerianto fanny angela ferry sihombing irmawati $ Perintah sort mengasumsikan bahwa kita ingin mengurut isi file peserta. Jika perintah sort dilakukan tanpa memberikan nama file yang akan diurut sebagai argumen, maka program mengharapkan masukan dari masukan standar yaitu keyboard. Untuk itu maka kita dapat memasukkan nama-nama yang akan diurut satu persatu sebagai masukan melalui keyboard. Untuk mengakhiri masukan, ketikkan karakter end- of-file, yaitu Kontrol-D pada awal baris, selanjutnya perintah sort akan segera mengurut masukan. $ sort denny yerianto fanny angela (masukan via keyboard) bagus pribadi arif budiman irmawati ferry sihombing ^D (akhiri masukan) arif budiman (mulai proses urut) bagus pribadi denny yerianto fanny angela ferry sihombing irmawati $ Karena nama file tidak disebutkan pada perintah sort di atas maka masukan standar perintah tersebut diambil dari keyboard. Detil perintah sort akan dijelaskan pada bab selanjutnya. 4.1.1 Pengalihan Keluaran Dalam sistem UNIX, secara normal keluaran dari sebuah perintah dikirim ke keluaran standar, yaitu layar terminal. Namun keluaran tersebut secara mudah dapat dialihkan ke file atau program lain. Kemampuan inilah yang disebut sebagai pengalihan keluaran atau output redirection. Jika karakter '>' diikuti nama file ditambahkan pada akhir perintah UNIX yang menampilkan keluaran ke keluaran standar, maka keluaran dari perintah tersebut akan dialihkan ke file yang disebutkan dan tidak ditampilkan ke layar terminal. Perhatikan ilustrasi berikut ini: ............ . . |\ . --------+ \ . keluaran 1 > FILE . --------+ / . . |/ . |\ . --------+ \ . KEYBOARD masukan 0 > . --------+ / . . |/ . . . |\ . --------+ \ . kesalahan 2> LAYAR TERMINAL . --------+ / . . |/ ............ Gambar 4.2 Proses pengalihan keluaran Baris perintah berikut ini akan menyebabkan keluaran perintah who dialihkan dari layar terminal ke file. $ 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 > peserta $ Pada perintah who kedua tidak terlihat keluaran pada layar terminal. Hal ini disebabkan keluarannya telah dialihkan ke file peserta. Kita dapat memeriksa isi file peserta dengan perintah cat sebagai berikut: $ cat peserta 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 $ Contoh lain dari pengalihan keluaran adalah penyimpanan tanggal dan waktu ke dalam file waktu sebagai berikut: $ date Fri Oct 23 07:28:32 PDT 1992 $ date > waktu $ cat waktu Fri Oct 23 07:28:32 PDT 1992 $ Perintah echo menuliskan keluaran ke keluaran standar, sehingga dapat dialihkan sebagai berikut: $ echo baris satu > berkas $ cat berkas baris satu $ Jika keluaran sebuah perintah dialihkan ke sebuah file yang sebelumnya telah berisi data, maka data sebelumnya akan hilang dan diganti dengan data yang baru. Perhatikan contoh berikut ini. $ echo baris satu > berkas $ cat berkas baris satu $ echo baris dua > berkas $ cat berkas baris dua $ Isi dari file berkas (baris satu) hilang tertimpa data baru ketika perintah echo kedua dieksekusi. Jika diinginkan data sebelumnya tidak hilang dan data baru ditambahkan di bawah data lama, maka gunakanlah karakter '>>' sebagai pengganti karakter '>'. $ echo baris satu > berkas $ cat berkas baris satu $ echo baris dua >> berkas (append) $ cat berkas baris satu (tidak hilang !) baris dua $ 4.1.2 Perintah cat dan Hubungannya dengan Proses Berbeda dengan uraian mengenai perintah cat pada bab sebelumnya, kali ini akan diuraikan kemampuan perintah cat dan hubungannya dengan proses. Seperti pada sebagaian besar perintah lainnya pada UNIX, default masukan dan keluaran perintah cat adalah masukan standar dan keluaran standar. Artinya jika tidak ada nama file yang dikirim sebagai parameter dari perintah cat, maka masukan diambil dari keyboard terminal. $ cat baris satu baris satu baris dua baris dua baris tiga baris tiga ^D $ Perintah cat diatas menerima masukan dari masukan standar, yaitu keyboard terminal dan langsung ditampilkan melalui keluaran standar, yaitu layar terminal. Agar masukan yang kita ketik dapat disimpan di dalam file, maka keluaran dari perintah cat harus dialihkan ke file tertentu. $ cat > sampah baris satu baris dua baris tiga ^D $ cat sampah baris satu baris dua baris tiga $ Dengan menggunakan karakter pengalihan '>>', kita dapat menambahkan isi suatu file ke file lainnya. $ cat berkas1 berkas1 baris 1 berkas1 baris 2 $ cat berkas2 berkas2 baris 3 berkas2 baris 4 berkas2 baris 5 $ cat berkas2 >> berkas1 $ cat berkas1 berkas1 baris 1 berkas1 baris 2 berkas2 baris 3 berkas2 baris 4 berkas2 baris 5 $