GNU/Linux >> Belajar Linux >  >> Linux

10 Contoh Perintah Xargs di Linux / UNIX

Perintah xargs sangat berguna saat kita menggabungkannya dengan perintah lain.

Tutorial ini menjelaskan penggunaan perintah xargs menggunakan beberapa contoh sederhana.

Contoh ini akan membantu Anda memahami dasar-dasar cara kerja perintah xargs. Namun, setelah Anda memahami konsep ini, Anda dapat menemukan contoh cerdas Anda sendiri tentang xargs untuk memecahkan berbagai masalah baris perintah.

Sintaks xargs (dari halaman manual):

xargs [-0prtx] [-E eof-str] [-e[eof-str]] [–eof[=eof-str]] [–null] [-d pembatas] [–pembatas pembatas] [-Saya ganti- str] [-i[replace-str]] [–replace[=replace-str]] [-l[max-lines]] [-L max-lines] [–max-lines[=max-lines]] [ -n max-args] [–max-args=max-args] [-s max-chars] [–max-chars=max-chars] [-P max-procs] [–max-procs=max-procs] [–interactive] [–verbose] [–exit] [–no-run-if-empty] [–arg-file=file] [–show-limits] [–version] [–help] [command [initial-arguments ]]

1. Contoh Dasar Xargs

Perintah xargs (secara default) mengharapkan input dari stdin, dan mengeksekusi perintah /bin/echo melalui input. Berikut ini yang terjadi ketika Anda menjalankan xargs tanpa argumen apa pun, atau saat Anda menjalankannya tanpa menggabungkan dengan perintah lain.

Saat Anda mengetik xargs tanpa argumen apa pun, Anda akan diminta memasukkan input melalui stdin:

$ xargs
Hi,
Welcome to TGS.

Setelah Anda mengetik sesuatu, tekan ctrl+d, yang akan menggemakan string kembali kepada Anda di stdout seperti yang ditunjukkan di bawah ini.

$ xargs
Hi,
Welcome to TGS.Hi, Welcome to TGS.

2. Tentukan Pembatas Menggunakan opsi -d

Pembatas dapat diterapkan sehingga setiap karakter dalam input diambil secara harfiah menggunakan opsi -d di xargs.

Pada contoh sebelumnya, meskipun input berisi \n (baris baru) setelah 'Hai,' tetapi output yang digaungkan tidak berisi baris baru '\n' . Jadi, output pada contoh sebelumnya digabungkan menjadi satu baris.

Dalam contoh berikut, saat Anda menggunakan -d\n, itu akan mempertahankan pembatas baris baru di output, dan menampilkan output persis seperti yang diketik.

$ xargs -d\n
Hi,
Welcome to TGS.

Setelah Anda mengetik di atas, tekan ctrl+d, yang akan menggemakan string kembali kepada Anda di stdout seperti yang ditunjukkan di bawah ini. Tapi, kali ini akan mempertahankan baris baru.

$ xargs -d\n
Hi,
Welcome to TGS.Hi, 
Welcome to TGS.

3. Batasi Output Per Baris Menggunakan -n Option

Secara default seperti yang dijelaskan sebelumnya, xargs menampilkan apa pun yang datang ke stdinnya seperti yang ditunjukkan di bawah ini.

$ echo a b c d e f| xargs
a b c d e f

Tapi, output dari perintah xargs dapat dipecah menjadi beberapa baris menggunakan opsi -n.

Dalam contoh berikut, kami menggunakan -n 3, yang hanya akan menampilkan 3 item per baris dalam output xargs.

$ echo a b c d e f| xargs -n 3
a b c
d e f

Dengan cara yang sama, Anda juga dapat membagi output dengan 2 item per baris seperti yang ditunjukkan di bawah ini menggunakan -n 2.

$ echo a b c d e f| xargs -n 2
a b
c d
e f

4. Konfirmasi Pengguna Sebelum Eksekusi menggunakan opsi -p

Menggunakan opsi -p, Anda dapat mengonfirmasi eksekusi perintah xargs dari pengguna.

Mempertimbangkan contoh sebelumnya, jika kita ingin mengkonfirmasi setiap eksekusi perintah /bin/echo oleh pengguna, gunakan opsi -p bersama dengan opsi -n seperti yang ditunjukkan di bawah ini.

$ echo a b c d e f| xargs -p -n 3
/bin/echo a b c ?...y
/bin/echo d e f ?...a b c
y
d e f

Dalam output berikut, saya mengatakan "n" untuk semua output gema. Jadi, xargs tidak mengeksekusi apapun.

$ echo a b c d e f| xargs -p -n 3
/bin/echo a b c ?...n
/bin/echo d e f ?...n
/bin/echo ?...n

Catatan:Ini berguna saat Anda menggabungkan xargs dengan perintah yang mengganggu seperti rm. Dalam kasus tersebut, Anda mungkin ingin melihat apa yang dilakukan xargs.

5. Hindari Default /bin/echo untuk Input Kosong Menggunakan Opsi -r

Ketika ada input kosong (yaitu tidak ada input yang diberikan ke perintah xargs), itu akan menjalankan perintah /bin/echo yang akan menampilkan baris baru seperti yang ditunjukkan di bawah ini.

$ xargs -p

Tekan ctrl-d setelah mengetik “xargs -p”, yang akan menunjukkan bahwa itu mengeksekusi /bin/echo seperti yang ditunjukkan di bawah ini.

$ xargs -p
                      /bin/echo ?...y

$

6. Cetak Perintah Bersama dengan Output Menggunakan -t Option

Pada contoh berikut, ketik “abcd” sebagai input untuk perintah xargs -t.

$ xargs -t
abcd

Tekan ctrl-d untuk menyelesaikan perintah xargs -t di atas, yang akan menampilkan perintah yang benar-benar dijalankan xargs sebelum menampilkan output. Dalam hal ini, perintah yang dijalankan xargs adalah “/bin/echo abcd”, yang ditampilkan di sini.

$ xargs -t
abcd
/bin/echo abcd
abcd

7. Gabungkan Xargs dengan Perintah Temukan

Ini adalah salah satu penggunaan paling penting dari perintah xargs. Saat Anda perlu menemukan jenis file tertentu dan melakukan tindakan tertentu pada file tersebut (paling populer adalah tindakan hapus).

Perintah xargs sangat efektif jika kita gabungkan dengan perintah lain.

Dalam contoh berikut, kami mengambil output dari perintah find, dan meneruskannya sebagai input ke perintah xargs. Namun, alih-alih mengeksekusi perintah default /bin/echo, kita menginstruksikan perintah xargs untuk mengeksekusi perintah rm -rm pada input.

Jadi, dalam contoh ini, output dari perintah find adalah semua file dengan ekstensi *.c, yang diberikan sebagai input ke perintah xargs, yang kemudian menjalankan perintah "rm -rf" pada semua file *.c .

$ ls
one.c  one.h  two.c  two.h

$ find . -name "*.c" | xargs rm -rf

$ ls
one.h  two.h

8. Hapus File yang memiliki spasi di Nama File

Jadi kita melihat bahwa meskipun menjalankan perintah rm pada file .c di direktori ini, file 'The Geek Stuff.c' tidak dihapus. Ini karena file ini berisi karakter spasi putih di namanya.

Seperti yang ditunjukkan pada contoh berikut, itu menghapus semua file dengan ekstensi *.c kecuali satu. yaitu file yang memiliki spasi putih di nama file (yaitu "The Geek Stuff.c") tidak dihapus oleh perintah rm.

$ touch "The Geek Stuff.c"

$ ls
one.c  one.h  two.c  two.h The Geek Stuff.c

$ find . -name "*.c" | xargs rm -rf

$ ls
one.h  two.h  The Geek Stuff.c

Dalam situasi ini, gunakan opsi -print0 dengan perintah find dan opsi -0 dengan perintah xargs untuk menghapus file termasuk yang memiliki spasi di nama file seperti yang ditunjukkan di bawah ini.

$ ls
one.c  one.h  two.c  two.h The Geek Stuff.c

$ find . -name "*.c" -print0 | xargs -0 rm -rf

$ ls
one.h  two.h

9. Tampilkan Batas Sistem pada xargs menggunakan opsi –show-limits

Lihat contoh di bawah ini:
Contoh berikut menampilkan semua batasan yang ditetapkan oleh OS yang akan berdampak pada cara kerja perintah xargs.

$ xargs --show-limits
Your environment variables take up 1203 bytes
POSIX upper limit on argument length (this system): 2093901
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2092698
Size of command buffer we are actually using: 131072

Execution of xargs will continue now, and it will try to read its input and 
run commands; if this is not what you wanted to happen, please type the 
end-of-file keystroke.

Warning: /bin/echo will be run at least once.  If you do not want that to happen, 
then press the interrupt keystroke

10. Gabungkan Xargs dengan perintah Grep

Perintah xargs dapat dikombinasikan dengan perintah grep untuk memfilter file tertentu dari hasil pencarian perintah find.

Dalam contoh berikut, perintah find menyediakan semua file .c sebagai input ke xargs.

Perintah xargs mengeksekusi perintah grep untuk menemukan semua file (di antara file yang disediakan oleh perintah find) yang berisi string 'stdlib.h'.

$ find . -name '*.c' | xargs grep 'stdlib.h'
./tgsthreads.c:#include
./valgrind.c:#include
./direntry.c:#include
./xvirus.c:#include
./temp.c:#include
...
...
...

Linux
  1. 8 Contoh Perintah Linux TR

  2. Contoh Perintah rm di Linux

  3. Contoh Perintah ps di Linux

  1. UNIX / Linux:10 Contoh Perintah Netstat

  2. 7 Contoh Perintah Linux df

  3. contoh perintah tail di UNIX/Linux

  1. 5 Contoh Perintah Traceroute UNIX / Linux

  2. sa Contoh Perintah di Linux

  3. w Contoh Perintah di Linux