Comment puis-je obtenir des xargs pour me montrer les lignes de commande qu'il génère sans les exécuter?


17

Un bon nombre de commandes Linux ont une option de dry-run qui vous montrera ce qu'elles vont faire sans le faire. Je ne vois rien dans la page de manuel de xargs qui fait cela et aucun moyen évident de l'imiter.

(mon cas d'utilisation spécifique est le dépannage de longs pipelines, même si je suis sûr qu'il y en a d'autres)

Suis-je en train de manquer quelque chose?


qu'essayez-vous exactement de faire?
Rahul

Réponses:


16

Mettre un echodevant la commande à exécuter?

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

5
(Ceci, bien sûr, n'est qu'une solution simple qui fonctionne dans des cas triviaux. La sortie sera ambiguë si les paramètres contiennent des espaces ou des caractères de contrôle. Nous aurions besoin d'un outil dédié pour imprimer sans ambiguïté les paramètres qu'il reçoit.)
ilkkachu

Et si vous essayiez de courir à sec echo? :)
mbigras

31

Vous pouvez bénéficier des drapeaux -pou -t.

xargs -pou xargs --interactiveaffichera la commande à exécuter, puis vous demandera de saisir (o / n) pour confirmer avant d'exécuter la commande.

% 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 -tou xargs --verboseaffichera chaque commande, puis l'exécutera immédiatement:

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

% ls
list
one
three
two

1
superbe réponse à la fois -pet les -toptions. d'excellents exemples. Merci!
JCotton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.