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

Kirim email ke