utilitas xargs memungkinkan Anda membangun dan menjalankan perintah dari input standar.
Xargs biasanya digunakan dalam kombinasi dengan perintah lain melalui piping (|
). Menggunakan xargs memungkinkan Anda untuk memberikan input standar sebagai argumen untuk utilitas baris perintah seperti mkdir
dan rm
.
Dalam tutorial ini, kami akan membahas dasar-dasar penggunaan perintah xargs.
Cara Menggunakan Perintah Linux xargs
Xargs membaca argumen dari input standar, dipisahkan oleh spasi 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 [OPTIONS] [COMMAND [initial-arguments]]
Contoh paling dasar dari menggunakan xargs adalah untuk melewatkan beberapa string yang dipisahkan dengan spasi menggunakan pipe ke xargs dan menjalankan perintah yang akan menggunakan string tersebut sebagai argumen.
echo "file1 file2 file3" | xargs touch
Pada contoh di atas, kita akan piping input standar ke xargs dan perintah touch
dijalankan untuk setiap argumen, sehingga membuat tiga file. Ini sama seperti jika Anda menjalankan:
touch file1 file2 file3
Cara Melihat Command dan Prompt User
Untuk mencetak perintah pada terminal sebelum menjalankannya gunakan opsi -t
(--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
Jika Anda ingin memunculkan peringatan sebelum menjalankan setiap perintah, gunakan opsi -p
(--interactive
):
echo "file1 file2 file3" | xargs -p touch
Ketik y
atau Y
untuk konfirmasi dan menjalankan perintah :
touch file1 file2 file3 ?...y
Penggunaan peringatan dan konfirmasi ini sangat berguna jika ingin menggunakan perintah yang berbahaya.
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 akan menjalankan perintah yang ditentukan sebanyak yang diperlukan sampai semua argumen habis.
Dalam contoh berikut, jumlah argumen yang dibaca dari input standar dibatasi hanya 1.
echo "file1 file2 file3" | xargs -n 1 -t touch
Seperti yang dapat Anda lihat dari output verbose di bawah ini, perintah touch dijalankan secara terpisah untuk setiap argumen:
touch file1 touch file2 touch file3
Cara Menjalankan Banyak Perintah
Untuk menjalankan banyak perintah dengan xargs, gunakan opsi -I
. Ia bekerja dengan mendefinisikanreplace-str
setelah switch-I
dan kemudian semua output darireplace-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 linuxid users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxid users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxid users 0 May 6 11:54 file3
Pilihan umum untuk replace-str adalah %
, namun, Anda dapat menggunakan placeholder lain, misalnyaARGS
:
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'
Cara Menentukan delimiter (pembatas)
Gunakan opsi -d
(--delimiter
) untuk mengatur pembatas khusus yang bisa berupa karakter tunggal atau urutan pelarian dimulai dengan \
.
Contoh berikut ini kita akan gunakan ;
sebagai delimiter:
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.
8.8.8.8 1.1.1.1
We are also using the -L 1
option which instructs xargs to read one line at the time. If this option is omitted xargs will pass all IPs to a single ping command.
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
Menggabungkan 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 -print0
yang akan memberikan perintah pada 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 kosong dari kedua sisi string yang diberikan. Cukup pipe string ke perintah xargs dan perintah akan melakukan pemangkasan:
echo " Long line " | xargs
Long line
Penggunaan metode ini berguna ketika membandingkan string dalam skrip shell.
#!/bin/bash VAR1=" Linuxid" VAR2="Linuxid" if [[ "$VAR1" == "$VAR2" ]]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then echo "Strings are equal." else echo "Strings are not equal." fi
output :
Strings are not equal. Strings are equal.
Kesimpulan
Sekarang Anda telah memiliki pemahaman yang baik tentang bagaimana menggunakan perintah xargs diLinux. Untuk informasi lebih rinci tentang setiap opsi xargs, baca halaman manual xargs.