시스템에서 사용 가능한 모든 Unix 명령을 표시하는 방법은 무엇입니까?

시스템에서 사용 가능한 모든 Unix 명령을 표시하는 방법은 무엇입니까?

나는 책을 읽고 있습니다, Learning Unix for OS X by Dave Taylor. 그것은 말한다:

시스템에 있는 모든 바이너리 실행 파일(Unix 프로그램)을 빠르게 보려면,

터미널을 열고 Shift키를 누른 상태에서 을 누르 Esc-?거나 을 누른 Control-X다음 Shift-1( Shift-1느낌표를 얻으려면)을 누릅니다.

그러나 명령이 터미널에 표시되기 전에 먼저 선택하라는 메시지가 표시됩니다.

$ 
Display all 1453 possibilities? (y or n)

키보드의 키를 누르면 n명령 프롬프트로 돌아가고 아무 일도 일어나지 않습니다. 그러나 이 키를 누르면 y터미널 창에 Unix 명령 흐름의 여러 열 목록이 표시됩니다.

그런데 문제는 Shift키를 누른 상태에서 눌러도 Esc-?아무 일도 일어나지 않는다는 것입니다. 발뒤꿈치를 누르는 경우에도 Control-X마찬가지입니다 Shift-1. 내가 뭘 잘못했나요? 이 기능을 사용하기 전에 활성화해야 하는 설정이 있습니까? Mac El Capitan에서 iTerm2를 사용하고 있습니다. 또한 기본 터미널에서는 작동하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사해요.

답변1

책의 지침은 bash에 적용됩니다. Zsh는 키 바인딩이 다른 다른 프로그램입니다.

zsh에서는 다음을 사용하여 모든 명령(외부, 내장, 함수, 별칭 및 키워드...) 목록을 볼 수 있습니다.

type -m '*'

그들의 이름을 예로 들어보세요.

whence -wm '*' | sed 's/:[^:]*$//'

또는 외부 명령 이름의 경우:

print -rlo -- $commands:t | less

$commands모든 외부 명령을 포함하는 배열입니다. 이것기록 수정자 :t명령 경로의 디렉터리 부분을 자릅니다.알). print -rlo인쇄해 보세요아르 자형아 알파벳순으로1개당 1개 주문이네.

더 길지만 덜 신비스럽습니다.

for p in "$path[@]"; do (cd ${p:-.} && ls); done | sort -u | less

모든 sh 스타일 쉘에서 작동하도록 조정할 수 있습니다.

(IFS=:; for p in $PATH; do (cd ${p:-.} && ls); done) | sort -u | less

(여기에 나열한 모든 명령은 명령 경로에 "특이한" 문자가 없다고 가정합니다.)

답변2

두 번 누르면 TABThomas가 언급한 효과를 얻을 수 있습니다.

하지만 그래도 문제가 해결되지 않으면 간단하지만 지저분한 다음 해킹을 시도해 보세요.

for i in `echo $PATH | sed 's:\:: :g'`
do
       echo $i
done

나중에 필요/편의에 따라 보기를 변경할 수 있습니다.

답변3

@Gilles의 답변 덕분에 질문에 설명된 명령이 bash셸에서 작동한다는 것을 알았습니다.

배시 사용자의 경우

따라서 향후 방문자를 위해 쉘을 사용하는 경우 bash위의 질문 설명에 설명된 명령을 참조하여 시스템에서 사용 가능한 모든 Unix 명령을 표시하십시오.

zsh 사용자의 경우

쉘을 사용하는 경우 zsh모든 명령을 표시하는 올바른 방법은 다음과 같습니다.

!(느낌표 문자) Tab를 입력 하고 키를 두 번 누릅니다.

즉, Shift+ 키를 누른 1Tab키를 두 번 누르십시오 .

이것이 효과가 없다면 Gilles와 SHW가 다른 답변에서 설명한 트릭을 참조하십시오.

관련 정보