Android

Perintah Xargs di linux

Linux команда xargs.

Linux команда xargs.

Isi kandungan:

Anonim

Utiliti xargs membolehkan anda membina dan melaksanakan perintah dari input standard. Ia biasanya digunakan dalam gabungan dengan perintah-perintah lain melalui paip.

Dengan xargs , anda boleh memberikan input standard sebagai hujah kepada utiliti baris perintah seperti mkdir dan rm .

Dalam tutorial ini, kami akan merangkumi asas-asas menggunakan perintah xargs .

Bagaimana Menggunakan Perintah Linux xargs

xargs membaca argumen dari input standard, dipisahkan oleh ruang kosong atau baris baru, dan melaksanakan perintah yang ditentukan menggunakan masukan sebagai hujah perintah. Jika tiada perintah disediakan, lalai adalah /bin/echo .

Sintaks bagi arahan xargs adalah seperti berikut:

xargs]

Contoh yang paling asas menggunakan xargs adalah untuk melewati beberapa rentetan yang dipisahkan dengan ruang kosong menggunakan paip ke xargs dan menjalankan perintah yang akan menggunakan rentetan tersebut sebagai argumen.

echo "file1 file2 file3" | xargs touch

Dalam contoh di atas, kita xargs input standard untuk xargs , dan arahan touch dijalankan untuk setiap hujah, mewujudkan tiga fail. Ini adalah sama seperti jika anda akan lari:

touch file1 file2 file3

Bagaimana untuk Lihat Perintah dan Prompt Pengguna

Untuk mencetak arahan pada terminal sebelum melaksanakannya menggunakan pilihan -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Taipkan y atau Y untuk mengesahkan dan jalankan arahan itu:

touch file1 file2 file3 ?…y

Pilihan ini berguna semasa melaksanakan arahan yang merosakkan.

Bagaimana Mengehadkan Bilangan Argumen

Secara lalai, bilangan hujah yang dihantar kepada perintah ditentukan oleh had sistem.

Pilihan -n ( --max-args ) menentukan bilangan hujah yang akan dihantar kepada arahan yang diberikan. xargs menjalankan arahan yang ditentukan sebanyak yang diperlukan sehingga semua hujah habis.

Dalam contoh berikut, bilangan hujah yang dibaca dari input standard adalah terhad kepada 1.

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

Seperti yang anda dapat lihat dari output verbose di bawah, arahan sentuhan dijalankan secara berasingan untuk setiap hujah:

touch file1 touch file2 touch file3

Bagaimana Melaksanakan Perintah Pelbagai

Untuk menjalankan beberapa perintah dengan xargs , gunakan pilihan -I . Ia berfungsi dengan mendefinisikan replace-str selepas pilihan -I dan semua replace-str digantikan dengan argumen yang diluluskan kepada xargs.

Contoh xargs berikut akan menjalankan dua arahan, pertama ia akan membuat fail menggunakan touch , dan kemudian ia akan menyenaraikan fail 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 ialah % . Walau bagaimanapun, anda boleh menggunakan pemegang tempat lain, sebagai contoh, ARGS :

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

Bagaimana Tentukan Delimiter

Gunakan pilihan -d ( --delimiter ) untuk menetapkan pemisah tersuai, yang boleh sama ada aksara tunggal atau urutan melarikan diri bermula dengan \ .

Contoh berikut yang kami gunakan ; sebagai pembatas:

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

touch file1 file2 file3

Bagaimana Membaca Item dari Fail

Perintah xargs juga boleh membaca item dari fail dan bukan input standard. Untuk berbuat demikian, gunakan pilihan -a ( --arg-file ) diikuti dengan nama fail.

Dalam contoh berikut, arahan xargs akan membaca fail ips.txt dan ping setiap Alamat IP.

ips.txt

8.8.8.8 1.1.1.1

Kami juga menggunakan opsyen -L 1 , yang mengarahkan xargs untuk membaca satu baris pada masa itu. Jika pilihan ini diabaikan, xargs akan lulus semua IP kepada satu arahan ping tunggal.

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 arahan find . Anda boleh menggunakan find untuk mencari fail tertentu dan kemudian menggunakan xargs untuk menjalankan operasi pada fail tersebut.

Untuk mengelakkan masalah dengan nama fail yang mengandungi baris baharu atau aksara khas lain, sentiasa gunakan pilihan cari- -print0 , yang menyebabkan find untuk mencetak nama fail penuh diikuti oleh aksara null. Output ini boleh ditafsirkan dengan betul oleh xargs menggunakan pilihan -0 , ( --null ).

Dalam contoh berikut, find akan mencetak nama penuh semua fail di dalam xargs direktori dan xargs akan lulus laluan fail ke perintah rm :

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

Menggunakan xargs untuk Memotong Watak Whitespace

xargs juga boleh digunakan sebagai alat untuk menghapus ruang kosong dari kedua-dua belah rentetan yang diberikan. Hanya paip rentetan kepada perintah xargs , dan ia akan melakukan pemangkasan:

echo " Long line " | xargs

Long line

Ini berguna apabila membandingkan strings 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.

Kesimpulannya

xargs adalah utiliti baris perintah di Linux yang membolehkan anda membina dan melaksanakan perintah.

Untuk maklumat lebih terperinci tentang setiap pilihan xargs , baca halaman lelaki xargs.

terminal xargs