Як змусити xargs показати мені командні рядки, які він генерує, не запускаючи їх?


17

Значна кількість команд Linux має опцію сухого запуску, яка покаже вам, що вони збираються робити, не роблячи цього. Я нічого не бачу на сторінці "xargs man", яка б це зробила, і жодного очевидного способу не наслідувати.

(мій конкретний випадок використання - це усунення несправностей з довгими трубопроводами, хоча я впевнений, що є й інші)

Я щось пропускаю?


що саме ти намагаєшся зробити?
Рахул

Відповіді:


16

Поставити echoперед командою для запуску?

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

5
(Це, звичайно, лише просте рішення, яке працює у тривіальних випадках. Вихід буде неоднозначним, якщо параметри містять пробіли або символи управління. Нам знадобиться спеціальний інструмент для однозначного друку отриманих параметрів.)
ilkkachu

А як бути, якщо ви намагаєтеся просушити echo? :)
mbigras

31

Ви можете отримати вигоду від -pабо -tпрапорів.

xargs -pабо xargs --interactiveнадрукує команду, яку потрібно виконати, а потім запросить введення (y / n) для підтвердження перед виконанням команди.

% 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 -tабо xargs --verboseнадрукує кожну команду, а потім негайно виконайте її:

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

% ls
list
one
three
two

1
чудова відповідь і з -pі-t варіантами. відмінні приклади. Дякую!
JCotton
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.