Как я могу заставить xargs показывать мне командные строки, которые он генерирует без их запуска?


17

У большого количества команд linux есть опция пробного запуска, которая покажет вам, что они собираются делать без этого. На странице справочника xargs я не вижу ничего, что могло бы это сделать, и нет очевидного способа подражать этому.

(мой конкретный пример использования - устранение неисправностей на длинных конвейерах, хотя я уверен, что есть и другие)

Я что-то пропустил?


что именно вы пытаетесь сделать?
Рахул

Ответы:


16

Поставить echoперед командой запустить?

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

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

А что, если ты пытаешься пробежать echo? :)
Мбиграс

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опциями. отличные примеры. Спасибо!
Джоттон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.