Terima kasih semuanya. Saya sudah coba dan sukses. -----Original Message----- From: Ronny Haryanto [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 02, 2007 3:25 PM To: tanya-jawab@linux.or.id Subject: Re: [tanya-jawab] Command Linux
On Tue, Jan 02, 2007 at 02:59:46PM +0700, Coba wrote: > Selamat siang linuxers, > Saya ingin tanya, bagaimana cara membuat command di prompt yang ingin > melakukan secara sekaligus > perintah seperti ini : > # find / -name *.dat > akan muncul semua file extensi *.dat dari semua folder dan sub folder. > Setelah itu saya lanjutkan dengan: > # rm -rf *.dat dari semua folder dan sub folder tsb yg merupakan hasil dari > pencarian find... Ini sebetulnya kunci dari konsepnya adalah pengertian bahwa hasil menjalankan suatu perintah itu hanya akan muncul (ke standard output) by default kalo kita tidak menyuruh untuk dikemana2in. Umumnya shell memberi kita fasilitas untuk menyambung2kan beberapa perintah lewat piping antara standard output dan standard input. Contohnya: ls -al | less Itu tanda vertical bar (|) kadang disebut juga pipe, jadi outputnya ls -al yg biasanya diterusin ke standard output by default akan disambungkan menjadi input untuk perintah less lewat standard input. Di sini lah sebetulnya bentuk kekuatan perintah2 di Unix systems. Kecil2 tapi cabe rawit. Perintah2nya biasanya cuma do one thing, but they do it well. Trus biasanya bisa digabung2kan, jadi flexible banget. Gak jarang kombinasi yg sampe 3 atau 4 kali piping dalam satu baris. Menjawab pertanyaan anda (secara tidak langsung), sebetulnya outputnya find pun bisa dipipe ke rm, tapi tidak secara langsung, karena rm tidak mengambil input nama2 file yg mau dihapus lewat standard input, melainkan lewat command line arguments. Jadi kalo mau pake cara itu butuh bantuan perintah xargs. Polanya umumnya begini: find ..... -print0 | xargs -0 perintah Di mana 'perintah' itu menerima lebih dari satu input lewat command line argumentsnya, contohnya rm. Tapi find juga punya opsi -exec untuk menjalankan perintah ke setiap match. Silakan baca manualnya utk cara pakenya. Bedanya dg pake xargs adalah kalo misalnya ada 100 match dari hasil find, maka kalo pake -exec perintahnya akan dijalankan 100 kali utk setiap match, sedangkan kalo pake xargs cuma seperlunya aja (tergantung batas panjang command line arguments di shell), biasanya cuma sekali. Di real life perbedaan performance jarang signifikan, jarang berasa bedanya. Jadi mostly cuma masalah selera, atau mana yg mudah diingat aja. Saya pribadi lebih suka xargs, karena kalo yg -exec mesti diescape2 lagi utk shell, males. > Apakah perlu shell programming.... Terima kasih. Yg saya jelaskan di atas sebetulnya salah satu bentuk shell programming juga, cuma bisa dijalankan dalam 1 baris (sering disebut one-liner) jadi biasanya gak perlu disave ke file. Kita jalanin perintah di shell pun itu juga bisa dibilang programming. Dalam bentuk yg paling sederhana, mungkin. Kalo mau mencoba2 yg di atas, apalagi pake rm, mesti extra hati2, karena biasanya hampir gak bisa di-undo. Mesti dites dulu bbrp kali sampe yakin kalo mau aman. Dan dicek dulu output dari find apakah udah bener seperti yg kita mau sebelum bener2 dipipe ke xargs rm. Kalo buat latihan mungkin dibackup dulu, dan dicoba2 di file2 dummy atau copy. Good luck! Ronny -- FAQ milis di http://wiki.linux.or.id/FAQ_milis_tanya-jawab Unsubscribe: kirim email ke [EMAIL PROTECTED] Arsip dan info milis selengkapnya di http://linux.or.id/milis