상당수의 Linux 명령에는 실행하지 않고도 수행할 작업을 보여주는 시험 실행 옵션이 있습니다. xargs 매뉴얼 페이지에는 이 작업을 수행하는 항목이 없으며 이를 에뮬레이트하는 확실한 방법도 없습니다.
(나의 구체적인 사용 사례는 긴 파이프라인의 문제를 해결하는 것입니다. 물론 다른 사례도 있을 것입니다.)
내가 뭐 놓친 거 없니?
답변1
-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
답변2
echo
실행할 명령 앞에 하나를 추가하시겠습니까?
$ echo a b c d e | xargs -n2 echo rm
rm a b
rm c d
rm e
답변3
선호하는 프로그래밍 언어로 매개변수를 확인하세요.
xargs
실행하려는 명령 사이에 다음 명령 중 하나를 삽입하십시오.
ruby -e 'p ARGV'
node -e 'console.log(process.argv)'
python -c 'import sys; print sys.argv'
이 답변에서는 각 예를 사용하겠습니다 ruby -e 'p ARGV'
.
용법
스크립트를 디버그하고 싶다고 가정해 보겠습니다.
echo 1 2 3 4 | xargs echo
디버깅하려면 ruby -e 'p ARGV'
앞에 다음 을 입력하세요 echo
.
echo 1 2 3 4 | xargs ruby -e 'p ARGV' echo
["echo", "1", "2", "3", "4"]
보시다시피 분명히 echo
2개의 매개변수가 수신되었습니다.
또 다른 사용 예는 다음과 같습니다 -I
.
echo 1 2 3 4 | xargs -I@ ruby -e 'p ARGV' echo @
["echo", "1 2 3 4"]
이제 우리는 echo
하나의 매개변수만 받는다는 것을 알고 있습니다.
왜 안 돼 xargs -t -p
?
명령 인수에 공백이 있으면 -t
합계가 실제로 모호해지기 때문입니다. 예를 들면 다음과 같습니다.-p
printf 'hello world\0goodbye world' | xargs -0 -t echo
echo hello world goodbye world
hello world goodbye world
을 보면 매개변수가 2개인지 4개인 echo hello world goodbye world
지 알기 어렵습니다 .echo
이 솔루션을 사용하면 각 매개변수를 처리하는 방법을 쉽게 이해할 수 있습니다 xargs
.
printf 'hello world\0goodbye world' | xargs -0 ruby -e 'p ARGV' echo
["echo", "hello world", "goodbye world"]