BAB V : PENGOPERASIAN UNIX
5.4. Kelebihan Khusus UNIX
Salah satu kontribusi paling penting pada pada sistem operasi Unix adalah kelengkapannya akan banyaknya utilitas untuk melakukan tugas-tugas seperti untuk mendapatkan informasi yang diinginkan. Selain itu adalah pembakuan, dimana data disimpan dan dikirimkan dalam sistem-sistem Unix. Hal ini memungkinkan data untuk dikirimkan ke sebuah file, layar terminal, atau ke sebuah program, atau dari sebuah file, keyboard, atau dari sebuah program; selalu dalam cara yang sama. Penanganan data yang dibakukan ini mendukung dua hal penting dari utilitas Unix: pengalihan I/O dan piping.
Tanpa pengalihan output, output dari perintah dialihkan ke sebuah file daripada ke layar. Tanpa pengalihan input, inputdari perintah diberikan melalui file daripada ke keyboard. Trik-trik lain adalah kemampuan dengan pengalihan input dan output seperti yang akan Anda lihat nanti. Dengan piping, output dari sebuah perintah dapat digunakan
sebagai input (dipipakan) ke sebuah perintah yang berikutnya. Pada bagian ini kita membahas banyak keistimewaan dan utilitas yang tersedia kepada pengguna Unix.
5.4.1. File Descriptor
Ada tiga standard file descriptor :
• stdin 0 Standard input ke program • stdout 1 Standard output dari program • stderr 2 Standard error output dari program
Biasanya dari keyboard atau sebuah file. Kedua output stdout dan stderr, biasanya ke terminal, tetapi Anda dapat mengalihkan satu atau keduanya ke satu atau lebih file.
Anda dapat juga menentukan file descriptor tambahan, mendisainnya menjadi sebuah bilangan 3 sampai 9, dan mengalihkan I/O kepadanya.
5.4.2. File Redirection
Pengalihan output mengambil output dari sebuah perintah dan menempatkannya kedalam sebuah file yang telah dinamai. Pengalihan input membaca file tesebut sebagai input terhadap perintahnya. Tabel berikut ini merangkum pilihan pengalihan.
Tabel Pengalihan File
Simbol Pengalihan
> Pengalihan output.
>! Sama seperti diatas, tetapi menimpa pilihan noclobber pada csh >> Menambahkan output.
>>! Sama seperti diatas, tetapi menimpa pilihan noclobber pada csh dan menghasilkan file bila belum ada.
| Pipe output ke perintah yang lain. < Pengalihan input
<<String Mambaca dari input standard sampai hanya ”String” yang dijumpai pada baris.
Sebuah contoh dari pengalihan output adalah : cat file1 file2 > file3
Perintah diatas menjalin file1 kemudian file2 dan mengalihkan output ke file3. Jika file 3 belum ada ia akan dibuat. Jika ia tidak ada ia akan juga akan dipotong menjadi zero length sebelum isi yang baru dimasukkan, atau perintahnya akan ditolak, jika pilihan noclobber dari csh diset. File-file asal, file1 dan file2 tetap utuh sebagai bagian yang terpisah.
Output ditambahkan ke sebuah file dalam bentuk : cat file1 >> file2
Perintah ini menambahkan isi dari file1 ke akhir dari apa yang telah ada dalam file2. (Tidak melakukan overwrite file2)
Input dialihkan dari sebuah file dalam bentuk : program < file
Perintah ini mengambil input untuk program dari file.
Untuk melakukan pipe output ke perintah yang lain menggunakan bentuk : command | command
Perintah ini membuat output pada perintah pertama menjadi input pada perintah kedua.
Tabel Csh
Simbol Keterangan
>& file Pengalihan stdout dan stderr ke file. >>& Menambahkan stdout dan stderr ke file
|& command Melakukan pipe stdout dan stderr ke command
Untuk mengalihkan stdout dan stderr menjadi dua file yang terpisah, Anda pertama butuh stdout dalam sebuah sub-shell, seperti pada :
Tabel Sh
Simbol Keterangan
2> file Menujukan stderr ke file
> file 2>&1 Menujukan kedua stdout dan stderr ke file >> file 2>&1 Menambahkan kedua stdout dan stderr ke file 2>&1 | command Melakukan pipe stdout dan stderr ke command
Untuk mengalihkan stdout dan stderr menjadi dua buah file yang terpisah, Anda dapat melakukan :
$ command 1> out_file 2> err_file
Atau sejak default dari pengalihan tersebut ke stdout : $ command > out_file 2> err_file
Pada shell Bourne Anda dapat menentukan file descriptor yang lain (3 sampai 9) dan mengalihkan output melaluinya. Hal ini dilakukan dengan format :
n>&m mengalihkan file descriptor n ke file descripto m
Kita gunakan format diatas untuk mengirim stderr (2) ke tempat yang sama seperti pada stdout (1), 2>&1, ketika kita ingin mendapatkan pesan error dan pesan normal ke file daripada ke terminal. Jika kita hanya ingin pesan error ke file, kita dapat melakukannya dengan menggunakan sebuah tempat penampungan file descriptor , (3). Kita mula-mula mengalihkan 3 ke 2, kemudian mengalihkan 2 ke 1, dan akhirnya kita mengalihkan 1 ke 3
$ (command 3>&2 2>&1 1>&3) > file
Hal ini mengirim stderr ke 3 kemudian ke 1, dan stdout ke 3, dimana dialihkan ke 2. Jadi efeknya kita telah membalikkan file descriptor 1 dan 2 dari arti normalnya. Kita dapat menggunakan ini pada contoh berikut :
$ (cat file 3>&2 2>&1 1>&3) > errfile
Jadi jika file membaca informasi ia dibuang dari perintah output, tetapi bila file tidak dapat membaca pesan error ia diletakkan dalam errfile untuk dapat Anda gunakan kemudian nanti.
m<&- menutup sebuah file descriptor input <&- menutup stdin
m>&- menutup sebuah file descriptor output >&- menutup stdout
5.4.3. Simbol Simbol Perintah Khusus yang Lain
Sebagai tambahan pada simbol pengalihan file, ada sejumlah dari simbol-simbol khusus yang lain yang dapat Anda gunakan pada baris perintah. Hal ini meliputi :
; pemisah perintah
& menjalankan perintah dengan latar-belakang
&& menjalankan perintah berikutnya ini jika perintah sebelumnya selesai dengan komplet contoh :
grep string file && cat file
|| menjalankan perintah berikutnya hanya jika perintah sebelumnya tidak selesai dengan komplet contoh :
grep string file || echo”String not found”
( ) perintah yagn berada dalam tanda kurung dieksekusi dalam sebuah subshell. Output dari subshell dapat dimanipulasikan seperti diatas.
‘ ‘ jangan biarkan beberapa arti arti khusus ke beberapa karakter diantara tanda kutip ini.
\ lepas dari karakter berikutnya
“ “ Memberikan pertukaran variabel dan perintah dengan tanda kutip ini ( tidak melumpuhkan fungsi $ dan \ dalam string).
‘command’ mengambil output dari perintah ini dan menggantinya sebagai argumen pada beris perintah.
# semua yang mengikutinya sampai baris baru adalah sebuah comment
Karakter | dapat juga digunakan untuk keluar karakter <newline>, jadi Anda dapat meneruskan sebuah perintah yang panjang pada lebih dari satu baris teks fisik.
5.4.4. Wild Cards
Shell dan beberapa program text processing akan memberikan meta-characters, atau wild card , dan menggantikannya dengan pola yang sesuai. Untuk nama-nama file, meta-cahacters dan penggunaanya :
? sesuai dengan karakter tunggal manapun pada posisi yang ditunjukannya * sesuai dengan string manapun dari nol atau bangnyak karakter
[abc…] sesuai dengan karakter-karakter yang terlampir [a-e] sesuai dengan karakter yang ada di antara a,b,c,d,e
[!def] sesuai dengan karakter yang bukan seperti terlampir, hanya sh
{abc,bcd,cde} sesuai dengan karakter manapun yang terpisah dengan koma (tidak ada spasi), hanya sh
~ direktori home dari current user , hanya csh ~user direktori home dari user yang ditunjuk, hanya csh
5.5. Perintah-perintah yang sering dijumpai