Come posso ottenere xargs per mostrarmi le righe di comando che sta generando senza eseguirle?


17

Un discreto numero di comandi di Linux ha un'opzione dry-run che ti mostrerà cosa faranno senza farlo. Non vedo nulla nella pagina man di xargs che lo faccia e nessun modo ovvio per emularlo.

(il mio caso d'uso specifico è la risoluzione dei problemi di condutture lunghe, anche se sono sicuro che ce ne sono altre)

Mi sto perdendo qualcosa?


cosa stai esattamente cercando di fare?
Rahul

Risposte:


16

Metti un echodavanti al comando per eseguire?

$ echo a b c d e | xargs -n2 echo rm
rm a b
rm c d
rm e

5
(Questa, ovviamente, è solo una soluzione semplice che funziona in casi banali. L'output sarà ambiguo se i parametri contengono spazi o caratteri di controllo. Avremmo bisogno di uno strumento dedicato per stampare in modo inequivocabile i parametri che riceve.)
ilkkachu

E se stai cercando di eseguire la corsa a secco echo? :)
mbigras,

31

È possibile beneficiare dei flag -po -t.

xargs -po xargs --interactivestamperà il comando da eseguire e quindi richiederà l'inserimento (y / n) per confermare prima di eseguire il comando.

% cat list
one
two
three

% ls
list

% cat list | xargs -p -I {} touch {}
touch one ?...y
touch two ?...n
touch three ?...y

% ls
list
one
three

xargs -to xargs --verbosestamperà ogni comando, quindi eseguirlo immediatamente:

% cat list | xargs -t -I {} touch {}
touch one 
touch two 
touch three 

% ls
list
one
three
two

1
risposta superba con entrambe -pe -topzioni. esempi eccellenti. grazie!
JCotton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.