Android

Perintah Xargs di linux

How to Copy a File to Multiple Directories With One Command in Linux

How to Copy a File to Multiple Directories With One Command in Linux

Daftar Isi:

Anonim

Utilitas xargs memungkinkan Anda untuk membangun dan menjalankan perintah dari input standar. Biasanya digunakan dalam kombinasi dengan perintah lain melalui perpipaan.

Dengan xargs , Anda dapat memberikan input standar sebagai argumen untuk utilitas baris perintah seperti mkdir dan rm .

Dalam tutorial ini, kita akan membahas dasar-dasar penggunaan perintah xargs .

Cara Menggunakan Perintah Linux xargs

xargs membaca argumen dari input standar, dipisahkan oleh spasi kosong atau baris baru, dan mengeksekusi perintah yang ditentukan menggunakan input sebagai argumen perintah. Jika tidak ada perintah yang diberikan, standarnya adalah /bin/echo .

Sintaks untuk perintah xargs adalah sebagai berikut:

xargs]

Contoh paling mendasar dari menggunakan xargs adalah untuk melewatkan beberapa string yang dipisahkan dengan spasi menggunakan pipa ke xargs dan menjalankan perintah yang akan menggunakan string tersebut sebagai argumen.

echo "file1 file2 file3" | xargs touch

Pada contoh di atas, kami menyalurkan input standar ke xargs , dan perintah touch dijalankan untuk setiap argumen, membuat tiga file. Ini sama seperti jika Anda menjalankan:

touch file1 file2 file3

Cara Melihat Perintah dan Meminta Pengguna

Untuk mencetak perintah pada terminal sebelum menjalankannya gunakan opsi -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Ketik y atau Y untuk mengonfirmasi dan menjalankan perintah:

touch file1 file2 file3 ?…y

Opsi ini berguna saat menjalankan perintah destruktif.

Cara Membatasi Jumlah Argumen

Secara default, jumlah argumen yang diteruskan ke perintah ditentukan oleh batas sistem.

Opsi -n ( --max-args ) menentukan jumlah argumen untuk diteruskan ke perintah yang diberikan. xargs menjalankan perintah yang ditentukan sebanyak yang diperlukan hingga semua argumen habis.

Dalam contoh berikut, jumlah argumen yang dibaca dari input standar dibatasi hingga 1.

echo "file1 file2 file3" | xargs -n 1 -t touch

Seperti yang dapat Anda lihat dari output verbose di bawah ini, perintah sentuh dijalankan secara terpisah untuk setiap argumen:

touch file1 touch file2 touch file3

Bagaimana Menjalankan Banyak Perintah

Untuk menjalankan banyak perintah dengan xargs , gunakan opsi -I . Ia bekerja dengan mendefinisikan replace-str setelah opsi -I dan semua kemunculan replace-str diganti dengan argumen yang diteruskan ke xargs.

Contoh xargs berikut akan menjalankan dua perintah, pertama itu akan membuat file menggunakan touch , dan kemudian akan membuat daftar file dengan perintah ls :

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

Pilihan umum untuk replace-str adalah % . Namun, Anda dapat menggunakan placeholder lain, misalnya, ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Cara Menentukan Pembatas

Gunakan opsi -d ( --delimiter ) untuk menetapkan pembatas khusus, yang bisa berupa karakter tunggal atau urutan pelarian dimulai dengan \ .

Contoh berikut ini kami gunakan ; sebagai pembatas:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Cara Membaca Item dari File

Perintah xargs juga dapat membaca item dari file alih-alih input standar. Untuk melakukannya, gunakan opsi -a ( --arg-file ) diikuti dengan nama file.

Pada contoh berikut, perintah xargs akan membaca file ips.txt dan melakukan ping setiap Alamat IP.

ips.txt

8.8.8.8 1.1.1.1

Kami juga menggunakan opsi -L 1 , yang menginstruksikan xargs untuk membaca satu baris pada saat itu. Jika opsi ini dihilangkan, xargs akan meneruskan semua IP ke satu perintah ping .

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Menggunakan xargs dengan find

xargs paling sering digunakan dalam kombinasi dengan perintah find . Anda dapat menggunakan find untuk mencari file tertentu dan kemudian menggunakan xargs untuk melakukan operasi pada file tersebut.

Untuk menghindari masalah dengan nama file yang mengandung baris baru atau karakter khusus lainnya, selalu gunakan opsi find- -print0 , yang menyebabkan find untuk mencetak nama file lengkap diikuti oleh karakter nol. Output ini dapat ditafsirkan dengan benar oleh xargs menggunakan opsi -0 , ( --null ).

Dalam contoh berikut, find akan mencetak nama lengkap semua file di dalam direktori /var/www/.cache dan xargs akan meneruskan path file ke perintah rm :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Menggunakan xargs untuk Memangkas Karakter Spasi

xargs juga dapat digunakan sebagai alat untuk menghapus spasi putih dari kedua sisi string yang diberikan. Cukup pipa string ke perintah xargs , dan itu akan melakukan pemangkasan:

echo " Long line " | xargs

Long line

Ini bisa bermanfaat saat membandingkan string dalam skrip shell.

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

Kesimpulan

xargs adalah utilitas baris perintah di Linux yang memungkinkan Anda membangun dan menjalankan perintah.

Untuk informasi lebih rinci tentang setiap opsi xargs , baca halaman manual xargs.

terminal xargs