GNU/Linux >> Linux Esercitazione >  >> Linux

10 Esempi di comandi Xargs in Linux / UNIX

Il comando xargs è estremamente utile quando lo combiniamo con altri comandi.

Questo tutorial spiega l'uso del comando xargs usando alcuni semplici esempi.

Questi esempi ti aiuteranno a capire le basi di come funziona il comando xargs. Ma, una volta compresi questi concetti, puoi trovare i tuoi esempi intelligenti di xargs per risolvere vari problemi della riga di comando.

Sintassi di xargs (dalla pagina man):

xargs [-0prtx] [-E eof-str] [-e[eof-str]] [–eof[=eof-str]] [–null] [-d delimitatore] [–delimiter delimitatore] [-io sostituisco- 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. Esempio di base Xargs

Il comando xargs (per impostazione predefinita) si aspetta l'input da stdin ed esegue il comando /bin/echo sull'input. Quello che segue è ciò che accade quando esegui xargs senza alcun argomento o quando lo esegui senza combinarlo con altri comandi.

Quando digiti xargs senza alcun argomento, ti verrà chiesto di inserire l'input tramite stdin:

$ xargs
Hi,
Welcome to TGS.

Dopo aver digitato qualcosa, premi ctrl+d, che ti riporterà la stringa su stdout come mostrato di seguito.

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

2. Specifica il delimitatore usando l'opzione -d

I delimitatori possono essere applicati in modo che ogni carattere nell'input venga preso letteralmente usando l'opzione -d in xargs.

Nell'esempio precedente, anche se l'input conteneva un \n (newline) dopo 'Hi', ma l'output ripetuto non conteneva il newline '\n' . Quindi, l'output nell'esempio precedente è stato combinato in un'unica riga.

Nell'esempio seguente, quando usi -d\n, manterrà il delimitatore di nuova riga nell'output e visualizzerà l'output esattamente come è stato digitato.

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

Dopo aver digitato quanto sopra, premi ctrl+d, che ti riporterà la stringa su stdout come mostrato di seguito. Ma questa volta conserverà la nuova riga.

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

3. Limita l'output per riga utilizzando l'opzione -n

Per impostazione predefinita, come spiegato in precedenza, xargs mostra tutto ciò che arriva al suo stdin come mostrato di seguito.

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

Ma l'output del comando xargs può essere suddiviso in più righe usando l'opzione -n.

Nell'esempio seguente, abbiamo usato -n 3, che visualizzerà solo 3 elementi per riga nell'output di xargs.

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

Allo stesso modo, puoi anche dividere l'output con 2 elementi per riga come mostrato di seguito usando -n 2.

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

4. Richiedi all'utente prima dell'esecuzione usando l'opzione -p

Usando l'opzione -p, puoi confermare l'esecuzione del comando xargs dall'utente.

Considerando l'esempio precedente, se vogliamo confermare ogni esecuzione del comando /bin/echo da parte dell'utente, utilizzare l'opzione -p insieme all'opzione -n ​​come mostrato di seguito.

$ 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

Nell'output seguente, ho detto "n" a tutto l'output dell'eco. Quindi, xargs non ha eseguito nulla.

$ 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

Nota:questo è utile quando stai combinando xargs con comandi dirompenti come rm. In questi casi, potresti voler vedere cosa fa xargs.

5. Evita /bin/echo predefinito per l'input vuoto usando l'opzione -r

Quando c'è un input vuoto (cioè nessun input è stato dato al comando xargs), eseguirà un comando /bin/echo che mostrerà una nuova riga come mostrato di seguito.

$ xargs -p

Premi ctrl-d dopo aver digitato "xargs -p", che indicherà che ha eseguito un /bin/echo come mostrato di seguito.

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

$

6. Stampa il comando insieme all'output usando l'opzione -t

Nell'esempio seguente, digita "abcd" come input per il comando xargs -t.

$ xargs -t
abcd

Premi ctrl-d per completare il comando xargs -t sopra, che visualizzerà il comando che xargs esegue realmente prima di visualizzare l'output. In questo caso, il comando che xargs esegue è “/bin/echo abcd”, che viene visualizzato qui.

$ xargs -t
abcd
/bin/echo abcd
abcd

7. Combina Xargs con il comando Trova

È uno degli usi più importanti del comando xargs. Quando è necessario trovare determinati tipi di file ed eseguire determinate azioni su di essi (la più popolare è l'azione di eliminazione).

Il comando xargs è molto efficace quando lo combiniamo con altri comandi.

Nell'esempio seguente, abbiamo preso l'output del comando find e lo abbiamo passato come input al comando xargs. Ma, invece di eseguire il comando predefinito /bin/echo, stiamo ordinando al comando xargs di eseguire il comando rm -rm sull'input.

Quindi, in questo esempio, l'output del comando find è costituito da tutti i file con estensione *.c, che viene dato come input al comando xargs, che a sua volta esegue il comando “rm -rf” su tutti i file *.c .

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

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

$ ls
one.h  two.h

8. Elimina i file che hanno uno spazio vuoto nel nome del file

Quindi vediamo che nonostante l'esecuzione del comando rm sui file .c in questa directory, il file "The Geek Stuff.c" non è stato eliminato. Questo perché questo file contiene caratteri di spazio vuoto nel suo nome.

Come mostrato nell'esempio seguente, ha eliminato tutti i file con estensione *.c tranne uno. cioè il file che ha uno spazio bianco nel nome del file (cioè "The Geek Stuff.c") non è stato eliminato dal comando 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

In questa situazione, usa l'opzione -print0 con il comando trova e l'opzione -0 con il comando xargs per eliminare i file inclusi quelli che hanno spazio nei nomi dei file, come mostrato di seguito.

$ 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. Visualizza i limiti di sistema su xargs usando l'opzione –show-limits

Guarda l'esempio seguente:
L'esempio seguente mostra tutti i limiti impostati dal sistema operativo che avranno un impatto sul modo in cui funziona il comando 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. Combina Xargs con il comando Grep

Il comando xargs può essere combinato con il comando grep per filtrare file particolari dai risultati della ricerca del comando find.

Nell'esempio seguente, il comando find ha fornito tutti i file .c come input per xargs.

Il comando xargs esegue il comando grep per trovare tutti i file (tra i file forniti dal comando find) che contenevano una stringa '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. sa Esempi di comandi in Linux

  2. w Esempi di comandi in Linux

  3. ac Esempi di comandi in Linux

  4. Esempi di comandi df in Linux

  5. du Esempi di comandi in Linux

Comando wc Linux con esempi

10 esempi di comandi iftop in Linux

Comando Xargs in Linux

Esempi di comandi xargs di Linux

Esempi di comandi id in Linux

Esempi di comandi xargs in Linux