xargs에서 위치 인수 선택

xargs에서 위치 인수 선택

Python이 설치된 위치를 열고 싶습니다. 내가 사용한 위치를 확인하려면.

whereis python | xargs -n 1 echo

출력 :


/usr/bin/python3.8

/usr/bin/python3.8-config

/usr/bin/python

/usr/lib/python2.7

/usr/lib/python3.8

/usr/lib/python3.9

/etc/python3.8

/usr/local/lib/python3.8

/usr/include/python3.8

xdg의 위치를 ​​지나 복사할 수 있지만 그렇게 하고 싶지는 않습니다. 파이프 연산자를 사용하고 xdg-open. 그러나 한 가지 문제가 있습니다. 위 목록에서 인수를 어떻게 선택합니까? 세 번째 위치를 선택한다고 가정해 보겠습니다. 그것을 할 수 있는 방법이 있습니까?

따라갈까도 생각했지만 잘 안 됐어요.

whereis python | xargs $3 xdg-open

답변1

xargs에 전달하기 전에 출력을 필터링하십시오.

whereis python | awk '{print $3}' | xargs xdg-open

해당 awk명령은 세 번째 단어만 인쇄하므로 이것이 에 전달할 전부입니다 xargs. 물론 xargs인수가 하나만 있는 경우에는 사용하는 것이 의미가 없습니다. 아마도 당신은 이것을 대신하고 싶습니까?

xdg-open $(whereis python | awk '{print $3}')

또는 단순히 which다음을 반환하는 것을 사용하십시오.첫 번째다음에서 검색 문자열이 발생합니다 $PATH.

xdg-open $(which python)

스크립트 언어인 바이너리는 물론이고 바이너리를 유용하게 열 수 있는 그래픽 프로그램도 없기 때문에 python로 열 수 없다는 점에 유의하세요 . 이는 말도 안되는 일입니다.xdg-open

답변2

내 생각엔 네가 할 수 없을 것 같아xargs에서- 하지만 쉘로 할 수는 있습니다:

whereis python | xargs sh -c 'echo "$3"' sh

그러나 특정 사용 사례는 실제로 의미가 없습니다.바나듐으로 지적

답변3

xargs의 목적은 모든 입력 항목을 명령에 반복적으로 제공하는 것입니다. 입력에서 "선택"하지 않습니다. 그렇게 하려면 head, tail, grep과 같은 다른 도구를 사용해야 합니다. 예를 들어:

whereis python | fmt -1 | tail -n +3 | head -1

관련 정보