방금 내 시스템 관리자가 다음에 대한 전역 별칭을 만들었다는 것을 깨달았습니다 which
.
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
맨 which
페이지에는 다음과 같이 나와 있습니다.
tty가 아닌 경우 오른쪽에서 옵션 처리를 중지합니다.
이것은 무엇을 의미 하는가?
답변1
설정:
$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a
.
대화형으로 실행될 때의 버전을 원하지만 리디렉션될 때의 버전을 원할 경우 ~
이를 별칭으로 사용할 수 있습니다.
/usr/bin/which --show-tilde --tty-only --show-dot
데모:
# interactive / on a tty
$ /usr/bin/which --show-tilde --tty-only --show-dot a
./a
# not interactive / redirected to a file
$ /usr/bin/which --show-tilde --tty-only --show-dot a > output
$ cat output
~/a
이후에 지정하는 모든 옵션은 --tty-only
출력이 tty인 경우에만 고려됩니다.
답변2
이는 출력이 다음을 which
수행 하는 경우를 의미합니다.~ 아니다터미널을 참조한 다음 수행하십시오.~ 아니다프로세스 --read-alias
및 .--show-dot
--show-tilde
일반적으로 파이프, 일반 파일 등의 경우
which watch | foo # not a tty
which watch > foo # not a tty
which watch # tty
which watch >&2 # tty
예를 들어 옵션이 인식되지 않습니다.데비안: