6 Piping dengan Notasi "|"
7 ========================
9 'Piping' merupakan utility GNU/Linux yang dapat digunakan untuk mengarahkan sebuah output perintah menjadi masukan bagi perintah yang lain.
11 .. figure:: images/stream/konsep-piping.jpg
20 ~# cat databaru >> dataku | more dataku
24 Saat ini kami sedang belajar
25 penggunaan redirection untuk standard input
26 sehingga inputan bukan dari standard output
27 seperti keyboard melainkan dari file text
28 ASSalamu alaikum Wr. Wb.
30 Saat ini Saya Sedang belajar
31 command line Unix/GNU/Linux
32 haruS berSabar memang untuk
33 mempelajarinya. Ehehehe....
35 Pada contoh di atas, output perintah ``cat`` akan menjadi masukan bagi perintah ``more``.
40 Penulis ingin mencari kata 'elektronik' pada sebuah file text 'bertanya yang baik.txt'. Secara logika kita dapat mencarinya secara manual dengan membuka file text tersebut terdahulu. Tapi jika jumlah kalimat pada file sangat banyak, maka pasti kita akan kerepotan sendiri mencarinya. Dengan bantuan 'piping' yang digabungkan dengan perintah ``grep``, pencarian kata tersebut akan sangat mudah.
44 ~# cat bertanya\ yang\ baik.txt | grep elektronik | more
46 Output program di atas::
48 Tidak ada yang tahu jawabannya bukan berarti Anda diabaikan, walaupun memang
49 sulit untuk membedakannya (karena sifat komunikasi elektronik yang faceless).
51 Selain menampilkannya ke layar komputer, anda juga dapat mengarahkan hasil pencarian tersebut ke file text lain dengan menggunakan redirection ">".
55 ~# cat bertanya\ yang\ baik.txt | grep elektronik > elektronik.txt
56 ~# more elektronik.txt
58 Output program di atas::
60 Tidak ada yang tahu jawabannya bukan berarti Anda diabaikan, walaupun memang
61 sulit untuk membedakannya (karena sifat komunikasi elektronik yang faceless)
68 $ tr 'A-Z' 'a-z' < bertanya\ yang\ baik.txt | tr –cs 'a-z' '\n' | sort |
71 Pada contoh di atas, dapatkah anda membayangkan output dari perintah tersebut. Jika melihat perintah tersebut mungkin pembaca pemula akan sedikit pusing melihatnya, namun cukup sederhana. Mari kita lihat secara terpisah dari penggabungan beberapa perintah:
73 **tr 'A-Z' 'a-z' < bertanya\\ yang\\ baik.txt** – akan mengganti semua huruf kapital menjadi huruf kecil pada file text 'bertanya yang baik.text'.
75 **tr -cs 'a-z' '\\n'** – akan memenggal setiap kata ke baris baru
77 **sort** – akan mengurutkan kata-kata tersebut sesuai abjad (a-z)
79 **uniq** – akan menghilangkan salah satu kata yang sama
81 sehingga output dari perintah di atas adalah::
142 **tee** – Membaca informasi dari standar input kemudian menuliskannya ke standar output. Perintah ``tee`` ini biasanya digunakan di tengah-tengah pipeline.
144 .. figure:: images/stream/konsep-tee.jpg
151 $ ps aux | tee data.txt | more
152 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
153 root 1 0.0 0.2 1492 460 ? S 11:02 0:00 init [2]
154 root 2 0.0 0.0 0 0 ? S 11:02 0:00 [keventd]
155 root 3 0.0 0.0 0 0 ? SN 11:02 0:00 [ksoftirqd_CPU0]
156 root 4 0.0 0.0 0 0 ? S 11:02 0:00 [kswapd]
157 root 5 0.0 0.0 0 0 ? S 11:02 0:00 [bdflush]
158 root 6 0.0 0.0 0 0 ? S 11:02 0:00 --More--
160 Pada contoh di atas, output perintah ``ps aux`` selain di simpan ke dalam file text 'data.txt' juga akan ditampilkan ke layar komputer oleh perintah ``more``.
166 Terkadang command line Unix/GNU/Linux dapat membuat kita putus asa dan menyebalkan. Sebagai contoh penggunaan karakter-karakter aneh seperti $, \*, &, \\, \?. Namun, jika telah terbiasa maka penggunaan karakter-karakter tersebut bukan merupakan sesuatu yang sangat mengerikan. Bahkan penggunaannya dapat mempermudah melakukan aktivitas pada mode teks.
168 Pada *bash shell*, karakter \* dan \? merupakan wildcard dan $ berarti variabel. Pada sub bab ini penulis mencoba menjelaskan qoute ('', \*, \\, \\\\) yang dapat digunakan untuk mempermudah saat bekerja di lingkungan mode teks GNU/Linux.
174 $ cat 'data baru aku.txt'
175 kari 1018 0.0 0.3 1772 616 pts/1 T 13:00 0:00 more
176 kari 1020 0.0 0.3 1772 632 pts/1 T 13:00 0:00 more data.txt
177 kari 1023 0.0 0.3 1772 620 pts/1 T 13:01 0:00 more
178 kari 1026 0.0 0.3 1772 616 pts/1 T 13:01 0:00 more
179 kari 1029 0.0 0.3 1772 620 pts/1 T 13:02 0:00 more
180 kari 1033 0.0 0.5 2480 840 pts/1 R+ 13:02 0:00 ps aux
181 kari 1034 0.0 0.2 1484 396 pts/1 R+ 13:02 0:00 tee data.txt
182 kari 1035 0.0 0.9 2544 1460 pts/1 R+ 13:02 0:00 /bin/bash
184 Lihat betapa pentingnya penggunaan qoute ini. Jika tidak menggunakan quote (''), perintah ``cat`` akan mencoba menampilkan tiga file yang berbeda yakni: data.txt, baru.txt, aku.txt.
193 akan menghasilkan hasil berbeda dengan perintah berikut::
197 Pada contoh kedua di atas, file text yang cocok dengan \*data\*\* seperti data.txt, dataku.txt, databaruku.txt, dll akan terhapus.
200 Proses Input dan Output
201 =======================
203 Hubungan antara sebuah program dan sumber informasinya dan kontrol disebut dengan standar input. Jika bukan sebuah program, maka standar input defaultnya adalah keyboard. Secara default, standar output dan error biasanya menuju ke terminal atau layar komputer.
205 Jika sebuah program atau perintah tereksekusi dengan benar, maka hasil dari eksekusinya akan ditampilkan ke terminal (standar output 1) jika tidak dilakukan penginisialisasian standar output. Sebaliknya, jika eksekusi program gagal, maka akan menuju ke standar error 2 (default: terrminal).
207 .. figure:: images/stream/proses-input-output.jpg
209 *Proses input output*
211 Sebagai contoh, jika terdapat sebuah file dengan nama data.txt yang berisi 5 buah nama yang tidak tersusun secara berurut, maka untuk menampilkan isi file tersebut secara berurut dapat menggunakan perintah ``sort``.
220 data.txt merupakan masukan (input) bagi perintah ``sort`` sedangkan outputnya
221 menuju ke terminal komputer.
227 Pada sistem GNU/Linux, keluaran (output) dari sebuah perintah secara default akan menuju ke terminal. Namun, keluaran sebuah perintah dapat dialihkan ke sebuah file dan proses ini disebut output redirection.
229 Output redirection dinotasikan dengan '>' atau '>>' seperti yang tampak pada gambar berikut.
231 .. figure:: images/stream/redirection.jpg
233 *Redirection standard output*
235 Output redirection ini banyak digunakan untuk:
237 - Menyalin hasil/error ke sebuah file untuk disimpan secara permanen.
238 - Menyalin hasil/error ke printer untuk mendapatkan sebuah dokumentasi dalam bentuk hardcopy.
239 - Mengkombinasikan dua buah perintah sehingga dapat digunakan secara bersamaan.
242 Karakter yang digunakan oleh operator output redirection:
244 **Karakter operator output redirection:**
246 +---------------+-------------------------------------------------------------------+
247 | Karakter | Fungsi |
248 +===============+===================================================================+
249 | > | Mengirimkan output (redirection) ke sebuah file atau perangkat |
250 | | output yang lain (misal: printer, display monitor, dll). |
251 | | Jika file tersebut sudah ada, maka secara otomatis akan ditimpah. |
252 +---------------+-------------------------------------------------------------------+
253 | >> | Fungsinya sama Redirection ini memiliki fungsi yang sama dengan |
254 | | redirection pertama. Namun redirection tidak akan menimpah file |
255 | | yang telah ada sebelumnya. |
256 +---------------+-------------------------------------------------------------------+
259 Penggunaan Karakter ">"
260 -----------------------
262 Anda ingin menyalin sebuah string ke sebuah file (data.txt) dengan kata kunci 'ltmodem' yang terdapat pada sebuah file ``ltmodem.abw``. Perintah yang digunakan adalah::
264 $ grep 'ltmodem' /home/kari/ltmodem.abw > data.txt
269 Perintah ``ls –alF`` akan menampilkan seluruh file atau direktori di mana anda bekerja saat ini.
275 Perintah di atas akan menampilkan output dari perintah ``ls -alF`` pada file data.txt
276 Selain *output redirection* '>' mengarahkan keluarannya ke *output* standar berupa *file* atau terminal. *Output redirection* ini juga dapat digunakan untuk mengarahkan output ke perangkat/device.
278 .. figure:: images/stream/standar-output.jpg
280 *Standar output menuju speaker*
285 $ cat sound.wav > /dev/audio
287 Perintah di atas akan menghasilkan suara 'sound.wav' pada *speaker* anda. Perintah tersebut sering digunakan untuk memeriksa apakah *soundcard* komputer telah berjalan dengan baik.
290 Penggunaan Karakter ">>"
291 ------------------------
293 Sedangkan penggunaan karakter ">>" dapat anda perhatikan perbedaan dari *output* yang dihasilkan.
297 $ grep 'ltmodem' /home/kari/ltmodem.abw >> data.txt
303 Pada contoh di atas terlihat bahwa *output* dari perintah sebelumnya akan
304 ditambahkan pada bagian akhir dari kalimat tersebut (terulang 2x).
310 *Input redirection* adalah masukan perintah dapat diarahkan dari sebuah file dan dinotasikan dengan '<'.
312 .. figure:: images/stream/input-redirection.jpg
314 *Input redirection dari sebuah file*
317 Penggunaan Karakter "<"
318 -----------------------
320 Secara *default* standar input membaca informasi masukan dari keyboard, tapi sebenarnya standar input juga dapat menerima masukan dari file text biasa.
325 Saat ini kami sedang belajar
326 penggunaan redirection untuk standar input
327 sehingga masukan bukan dari standar input
328 seperti keyboard melainkan dari file text
330 Pada contoh di atas perintah 'cat' akan membaca informasi masukan dari sebuah *file* yakni "dataku" dan menampilkannya ke layar komputer.
332 *Input/output redirection* '<', '>' atau '>>' dapat digabungkan penggunaannya satu dengan yang lain.
336 $ cat <dataku>> databaru
338 ASSalamu alaikum Wr. Wb.
340 Saat ini Saya Sedang belajar
341 command line Unix/GNU/Linux
342 haruS berSabar memang untuk
343 mempelajarinya. ehehehe....
344 Saat ini kami sedang belajar
345 penggunaan redirection untuk standar input
346 sehingga masukan bukan dari standar input
347 seperti keyboard melainkan dari file text
349 Perintah di atas akan membaca informasi masukan dari *file* "dataku" kemudian *output* akan diarahkan ke *file* "databaru". Karena "databaru" telah terdapat sebuah teks, maka penulis menggunakan *redirection* '>>' agar teks sebelumnya tidak tertimpa oleh teks baru.
352 Standar kesalahan (error) menuju sebuah file
353 ============================================
355 Secara *default* standar *error* biasanya diarahkan ke terminal komputer. Namun, pengguna juga dapat mengarahkannya ke sebuah *file*. Untuk *bash shell* yang umum digunakan pada GNU/linux menggunakan notasi **2>&1**.
357 .. figure:: images/stream/standar-error.jpg
359 *Standar error ke sebuah file*
364 $ ls –l askari > output 2>&1
370 ``Sed`` merupakan *utility* unix yang dapat digunakan untuk mengganti teks atau *string* dengan *string* atau teks lain pada sebuah *file*.
374 $ cat <file> | sed –e 's/<text yang dicari>/<text pengganti>/<option>' > <fileakhir>
379 Assalamu Alaikum Wr. Wb.
381 saat ini saya sedang belajar
382 command line Unix/GNU/Linux
383 harus bersabar memang
384 untuk mempelajarinya. Ehehehe....
390 Selanjutnya huruf "s kecil" yang terdapat pada kalimat di atas akan diganti dengan huruf "S besar". Kemudian dengan menggunakan *redirection* yang telah dijelaskan sebelumnya, maka *file* perubahan akan disimpan dengan nama *file* baru yaitu "databaru".
394 $ cat data | sed –e 's/s/S/g' > databaru
396 ASSalamu alaikum Wr. Wb.
398 Saat ini Saya Sedang belajar
399 command line Unix/GNU/Linux
400 haruS berSabar memang untuk
401 mempelajarinya. Ehehehe....