선호하는 프로그래밍 언어로 매개변수를 확인하세요.

선호하는 프로그래밍 언어로 매개변수를 확인하세요.

상당수의 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실행하려는 명령 사이에 다음 명령 중 하나를 삽입하십시오.

  1. ruby -e 'p ARGV'
  2. node -e 'console.log(process.argv)'
  3. 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"]

보시다시피 분명히 echo2개의 매개변수가 수신되었습니다.

또 다른 사용 예는 다음과 같습니다 -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"]

관련 정보