Ronny Haryanto wrote: > 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 > mantaP.... Terima kasih Ilmu-nya Pak....
-- 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
