이렇게 하면 /usr/bin/which --all git
내가 겪은 모든 일이 표시됩니다.git
$PATH
첫 번째 줄은 유효한 줄을 보여줍니다.
아래 그림에서 의 git
버전이 /home/kmodi/stowed/bin/git
유효한 버전입니다.
이제 결과의 실제 파일 이름을 알고 싶습니다.
따라서 /home/kmodi/stowed/bin/git
심볼릭 링크의 경우 그것이 무엇을 가리키는지 알고 싶습니다.
실행하면 /usr/bin/which --all git | xargs \ls -Fpl
기호 링크 참조가 표시됩니다. 하지만 출력 결과가 혼란스럽습니다. 나열된 파일의 원래 순서가 유지되지 않습니다! 이제 이 출력(아래)을 보면 해당 버전이 /cad/..
유효한 git
바이너리 경로라고 가정할 수 있습니다.
xargs
이 순서를 유지할 수 있는 방법이 있나요 ?
중요한 경우 tcsh
쉘을 사용하고 있습니다.
John의 팁 덕분에 -n 1
마침내 마음에 드는 솔루션을 갖게 되었습니다. 매우 지저분하다..그 인용문!(감사합니다 tcsh
) 하지만 작동합니다.
alias whichall '/usr/bin/which --all \!* \\
| xargs -n 1 \ls -Fpl --color=always \\
| awk -v OFS="" '"'"'{$1=$2=$3=$4=$5=$6=$7=$8=""; print $0}'"'"' \\
| \sed '"'"'/^$/d'"'"'; \\
'
답변1
이 xargs
명령은 인수의 순서를 유지하지만 모든 인수를 의 인스턴스에 전달하므로 ls
기본적으로 알파벳 순서로 출력이 제공됩니다. 원하는 동작을 얻으려면 한 번에 한 줄의 출력만 전달 -n 1
하도록 명령에 인수를 추가하거나 xargs
, GNU 구현을 사용하는 경우 파일 목록을 정렬하지 않도록 지시하는 옵션을 추가하세요.ls
ls
-U
행동 ls
:
$ ls -lad /usr/bin /etc
drwxr-xr-x. 146 root root 12288 May 18 09:46 /etc
dr-xr-xr-x. 2 root root 57344 Dec 12 15:30 /usr/bin