Contoh Kegunaan perintah "xarg"

Penerangan dan Pengenalan

Perintah xargs biasanya digunakan dalam baris arahan di mana output satu arahan diteruskan sebagai argumen masukan ke arahan lain.

Dalam banyak kes, tiada perintah khas seperti xarg diperlukan untuk mencapai itu, kerana operator "paip" dan "redirection" melakukan transaksi jenis yang sama. Walau bagaimanapun, kadang-kadang terdapat isu-isu dengan mekanisme perpipaan dan pengalihan asas, contohnya, jika hujah mengandungi ruang, maka kelebihannya.

Tambahan pula, xargs melaksanakan arahan yang ditentukan berulang kali, jika perlu, untuk memproses semua argumen yang diberikan kepadanya. Malah, anda boleh menentukan berapa banyak argumen yang harus dibaca aliran input standard setiap kali xargs melaksanakan arahan yang ditentukan.

Secara umum, perintah xargs hendaklah digunakan jika output satu perintah digunakan sebagai sebahagian daripada pilihan atau argumen arahan kedua yang mana data tersebut disiarkan (menggunakan operator paip "|"). Pemasangan paip tetap memadai sekiranya data dimaksudkan sebagai masukan (standard) perintah kedua.

Sebagai contoh, jika anda menggunakan arahan ls untuk menghasilkan senarai nama fail dan direktori, dan kemudian masukkan senarai ini ke dalam perintah xargs yang melaksanakan echo , anda boleh menentukan berapa banyak nama fail atau nama direktori diproses dengan echo pada setiap lelaran seperti berikut :

ls | xargs -n 5 echo

Dalam kes ini, echo menerima lima fail atau nama direktori pada satu masa. Oleh kerana echo menambah aksara barisan pada akhir, lima nama ditulis pada setiap baris.

Jika anda melaksanakan perintah yang mengembalikan item nombor yang besar dan tidak dapat diramalkan (mis. Nama fail) yang disampaikan kepada perintah lain untuk diproses selanjutnya, adalah ide yang baik untuk mengawal bilangan maksimum argumen yang diterima oleh perintah kedua untuk menghindari beban dan kegagalan.

Barisan baris berikut menyebarkan aliran nama fail yang dihasilkan dengan mencari int kumpulan 200 sebelum diserahkan kepada arahan cp , yang menyalinnya ke direktori sandaran .

cari ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Unsur "./" dalam arahan mencari menentukan direktori semasa untuk mencari. Argumen "-type f" mengehadkan carian ke fail, dan "-name" *. Txt "bendera menyaring lagi apa-apa yang tidak mempunyai sambungan" .txt ". Bendera -i dalam xargs memberi isyarat bahawa { } notasi mewakili setiap nama fail wap.

Perintah berikut mendapati fail bernama teras dalam atau di bawah direktori / tmp dan memadamnya.

cari / tmp -name core -type f -print | xargs / bin / rm -f

Perhatikan bahawa ini akan berfungsi dengan tidak betul jika terdapat sebarang nama fail yang mengandungi baris baru, petikan tunggal atau berganda, atau ruang. Versi berikut memproses nama filenya sedemikian rupa sehingga nama fail atau direktori yang mengandungi petikan tunggal atau berganda, ruang atau baris baharu dikendalikan dengan betul.

cari / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Daripada pilihan -i anda juga boleh menggunakan bendera -I yang menentukan rentetan yang digantikan oleh baris input dalam argumen arahan seperti dalam contoh ini:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

Rentetan penggantian ditakrifkan sebagai "{}". Ini bermakna, sebarang kejadian "{}" dalam hujah arahan digantikan oleh elemen input yang dikemukakan kepada args melalui operasi paip. Ini membolehkan anda meletakkan elemen masukan pada kedudukan tertentu dalam argumen arahan untuk (dilaksanakan secara berulang).