¿Cómo consigo que xargs me muestre las líneas de comando que está generando sin ejecutarlas?


17

Una buena cantidad de comandos de Linux tienen una opción de ejecución en seco que le mostrará lo que van a hacer sin hacerlo. No veo nada en la página de manual de xargs que haga eso y no hay forma obvia de emularlo.

(mi caso de uso específico es la solución de problemas de tuberías largas, aunque estoy seguro de que hay otras)

¿Me estoy perdiendo de algo?


¿Qué es exactamente lo que estás tratando de hacer?
Rahul

Respuestas:


16

¿Poner echodelante del comando para ejecutar?

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

55
(Esto, por supuesto, es solo una solución simple que funciona en casos triviales. La salida será ambigua si los parámetros contienen espacios o caracteres de control. Necesitaríamos alguna herramienta dedicada para imprimir inequívocamente los parámetros que recibe.)
ilkkachu

¿Qué pasa si estás tratando de correr en seco echo? :)
mbigras

31

Puede beneficiarse de las banderas -po -t.

xargs -po xargs --interactiveimprimirá el comando que se ejecutará y luego solicitará la entrada (y / n) para confirmar antes de ejecutar el 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 --verboseimprimirá cada comando, luego ejecútelo inmediatamente:

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

% ls
list
one
three
two

1
Excelente respuesta con ambas -py -topciones. Excelentes ejemplos. ¡gracias!
JCotton
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.