2013-10-03 3 views
0

xargs에서 EOF를 delimeter로 사용하여 전체 파일을 읽는 방법은 무엇입니까?xargs - delimeter로 EOF 사용

예.

cat foo.py | xargs -d EOF -I % python -c %

나는 일할 수있는 위의 예를 얻을 수있는 다른 방법이 있습니다 알지만, xargs를 사용하여 동일한 작업을 수행하는 방법을 학습에 관심이 있어요.

+0

달성하고자하는 것이 무엇인지 자세히 설명해 주시겠습니까? – devnull

답변

3

명령 줄 인수에는 null 바이트가 포함될 수 없으므로 기본적으로 입력에 null 바이트가 포함되지 않는다고 가정합니다. 따라서 가장 간단한 방법은 null 바이트를 구분 기호로 사용하여 전체 입력을 단일 항목으로 처리하는 것입니다.

cat foo.py | xargs --null -I % python -c % 

또는 더 간결 :, 나는이 유용 무엇 사진 수 없다고

xargs -0 python -c < foo.py 

그렇게

--null 또는 -0 옵션을 사용합니다. 입력 항목이 하나만 있다는 것을 알고 있다면 xargs을 사용해야하는 이유는 무엇입니까? 왜 쓰지 않는가?

python -c "$(< foo.py)" 

?

+0

예, 저는 대안을 알고 있습니다 - xargs를 사용하여 동일한 결과를 얻을 수 있는지 궁금합니다. 감사! – jeffreyveon

1

xargs 전체 파일을 읽고이를 하나의 인수로 바꾸는 것은 쓸모없는 행동입니다.

# replace % with the contents of foo.py and pass as an argument 
cat foo.py | xargs -d EOF -I % python -c % 

은 다음과 같이 수행 할 수 있습니다 : 당신이 뭘 하려는지

# pass contents of foo.py as a single argument 
python -c "$(cat foo.py)" 

하지만 당신이 할 수 있기 때문에 점은 무엇 :

python foo.py