Bash에서 사용 가능한 명령을 검색하는 방법

Bash에서 사용 가능한 명령을 검색하는 방법

그래서 입력 systemc하고 눌러서 Tab얻을 수 있습니다 systemctl.

하지만 로 끝나는 모든 명령을 나열하려면 어떻게 해야 할까요 ctl?

어떻게 해야 하나요?

답변1

별칭, 함수, bash 내장 및 bash 키워드를 포함하여 사용 가능한 모든 명령을 나열하려면 다음과 같이 임의의 패턴을 사용하여 결과 목록을 생성 compgen -c할 수 있습니다 .grep

compgen -c | grep 'ctl$'

답변2

를 사용하면 apropos ctl | less매뉴얼 페이지를 포함하여 ctl 문자열이 포함된 모든 명령이 표시됩니다. 또한 해당 문자열을 포함하는 몇 가지 다른 결과도 표시하지만 놀랍게도 이러한 예상치 못한 결과는 거의 없으므로 유용할 수 있습니다.

답변3

$PATH일치하는 파일을 검색하는 것을 막을 수 있는 것은 없습니다

( IFS=:; for p in $PATH; do ls -d "$p"/*ctl; done ) 2>/dev/null

( ... )쉘 변수를 변경하고 있기 때문에 서브 쉘을 사용하고 있습니다 IFS. 또 다른 방법은 처음에 저장하고( OIFS="$IFS" IFS=:) 나중에 복원하는 것( IFS="$OIFS")이지만 나에게는 이것이 약간 덜 견고하게 느껴집니다.

답변4

이를 위해 다음 방법을 사용합니다 find.

( IFS=:; for dir in $PATH; do find $dir/ -type f -executable -iregex ".*ctl"; done )

cmd만 표시:

( IFS=:; for dir in $PATH; do find $dir/ -type f -executable -iregex ".*ctl" -printf '%f\n'; done ) 2>/dev/null

관련 정보