그래서 입력 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