xargs
utilitas 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 xargs
perintah.
Cara Menggunakan xargs
Linux Perintah #
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, defaultnya adalah /bin/echo
.
Sintaks untuk xargs
perintahnya adalah sebagai berikut:
xargs [OPTIONS] [COMMAND [initial-arguments]]
Contoh paling dasar menggunakan xargs
akan melewatkan beberapa string yang dipisahkan dengan spasi menggunakan pipa ke xargs
dan jalankan perintah yang akan menggunakan string tersebut sebagai argumen.
echo "file1 file2 file3" | xargs touch
Pada contoh di atas, kita menyalurkan input standar ke xargs
, dan touch
perintah dijalankan untuk setiap argumen, membuat tiga file. Ini sama seperti jika Anda akan menjalankan:
touch file1 file2 file3
Cara Melihat Perintah dan Prompt Pengguna #
Untuk mencetak perintah pada terminal sebelum menjalankannya gunakan -t
(--verbose
) pilihan:
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
Jika Anda ingin mendapatkan konfirmasi apakah akan menjalankan setiap perintah sebelum menjalankannya, gunakan -p
(--interactive
) pilihan:
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.
-n
(--max-args
) opsi menentukan jumlah argumen yang akan diteruskan ke perintah yang diberikan. xargs
menjalankan perintah yang ditentukan sebanyak yang diperlukan sampai 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 Anda lihat dari keluaran verbose di bawah ini, perintah sentuh dijalankan secara terpisah untuk setiap argumen:
touch file1
touch file2
touch file3
Cara Menjalankan Banyak Perintah #
Untuk menjalankan beberapa perintah dengan xargs
, gunakan -I
pilihan. Ia bekerja dengan mendefinisikan replace-str
setelah -I
opsi dan semua kemunculan replace-str
diganti dengan argumen yang diteruskan ke xargs.
Berikut xargs
contoh akan menjalankan dua perintah, pertama akan membuat file menggunakan touch
, dan kemudian akan mencantumkan file dengan ls
perintah:
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 -d
(--delimiter
) opsi untuk menyetel pembatas khusus, yang dapat berupa karakter tunggal atau urutan escape yang dimulai dengan \
.
Contoh berikut kita menggunakan ;
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 -a
(--arg-file
) pilihan diikuti dengan nama file.
Pada contoh berikut, xargs
perintah akan membaca ips.txt
file dan ping setiap Alamat IP.
8.8.8.8
1.1.1.1
Kami juga menggunakan -L 1
opsi, yang menginstruksikan xargs
untuk membaca satu baris pada satu waktu. Jika opsi ini dihilangkan xargs
akan meneruskan semua IP ke satu ping
perintah.
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 find
memerintah. Anda dapat menggunakan find
untuk mencari file tertentu dan kemudian gunakan xargs
untuk melakukan operasi pada file tersebut.
Untuk menghindari masalah dengan nama file yang berisi baris baru atau karakter khusus lainnya, selalu gunakan perintah find -print0
opsi, yang menyebabkan find
untuk mencetak nama file lengkap diikuti dengan karakter null. Output ini dapat diinterpretasikan dengan benar oleh xargs
menggunakan -0
, (--null
) pilihan.
Dalam contoh berikut, find
akan mencetak nama lengkap semua file di dalam /var/www/.cache
direktori dan xargs
akan meneruskan jalur file ke rm
perintah:
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 dari kedua sisi string yang diberikan. Cukup pipa string ke xargs
perintah, dan itu akan melakukan pemangkasan:
echo " Long line " | xargs
Long line
Ini berguna saat membandingkan string dalam skrip shell.
#!/bin/bash
VAR1=" Linuxize "
VAR2="Linuxize"
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
Strings are not equal.
Strings are equal.
Kesimpulan #
xargs
adalah utilitas baris perintah di Linux yang memungkinkan Anda membuat dan menjalankan perintah.
Untuk informasi lebih detail tentang setiap xargs
pilihan, baca halaman manual xargs.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.