답변:
bash (1) 내장을 사용할 수 있습니다 compgen
compgen -c
실행할 수있는 모든 명령이 나열됩니다.compgen -a
실행할 수있는 모든 별칭이 나열됩니다.compgen -b
실행할 수있는 모든 내장 기능이 나열됩니다.compgen -k
실행할 수있는 모든 키워드가 표시됩니다.compgen -A function
실행할 수있는 모든 기능이 나열됩니다.compgen -A function -abck
위의 모든 내용을 한 번에 나열합니다.생성 할 수있는 다른 완료 사항에 대해서는 매뉴얼 페이지를 확인하십시오.
질문에 직접 대답하려면 :
compgen -ac | grep searchstr
당신이 원하는 것을해야합니다.
compgen | grep
문자열을 인수로 전달하는 것이 더 효율적일 수 있습니다 compgen
(문제에서 암시 된 것처럼 접두사로 알려진 경우). 이 경우에는입니다 compgen -ac searchstr
.
whatis compgen
없음'과 '수동 입력 없음'을 표시 man compgen
합니다.
bash
자체 매뉴얼 페이지가있는 별도의 명령이 아니라 내장되어 있기 때문입니다 . bash(1)
매뉴얼 페이지 를 읽 거나 명령 줄 help compgen
에서 실행 해야합니다 bash
.
compgen -c | sort | uniq | less
사용하면 중복 행없이 사용 가능한 모든 명령을 인쇄 하고 알파벳순으로 정렬합니다.
.bashrc에 추가
function ListAllCommands
{
echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
-executable -type f -printf '%P\n' | sort -u
}
별명도 원하면 다음을 수행하십시오.
function ListAllCommands
{
COMMANDS=`echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
-executable -type f -printf '%P\n'`
ALIASES=`alias | cut -d '=' -f 1`
echo "$COMMANDS"$'\n'"$ALIASES" | sort -u
}
-L
대상에 대한 심볼릭 링크를 따르려면 on 옵션 을 사용하십시오 . 참고 : -L
옵션이며 일치하는 표현식의 일부가 아니므로 명령 행에서 경로 앞에 배치해야합니다. 이 경우find -L {}
echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 -executable -type f -printf '%P\n' 2> /dev/null | sort -u
(zsh 호환성을 위해 +1)
있다
type -a mycommand
mycommand 가 사용되는 $ PATH의 모든 별명과 명령을 나열하는 명령입니다 . 명령이 여러 변형으로 존재하는지 확인하는 데 사용할 수 있습니다. 그 외에는 ... $ PATH와 모든 별칭을 구문 분석하는 스크립트가 있지만 그러한 스크립트에 대해서는 모릅니다.
기타 명령은 bash 또는보다 완전한 xargs 버전이 필요하기 때문에 임베디드 시스템에서 작동하지 않았습니다 (busybox가 제한적 임).
다음 명령은 모든 유닉스 계열 시스템에서 작동해야합니다.
폴더 별 목록 :
ls $(echo $PATH | tr ':' ' ')
모든 명령을 이름으로 나열
ls $(echo $PATH | tr ':' ' ') | grep -v '/' | grep . | sort
tr
. 왜 간단하지 ls $(echo ${PATH//:/ })
않습니까?
이 스크립트를 사용해보십시오 :
#!/bin/bash
echo $PATH | tr : '\n' |
while read e; do
for i in $e/*; do
if [[ -x "$i" && -f "$i" ]]; then
echo $i
fi
done
done
Mac 사용자의 경우 ( 찾기 에는 실행 파일이없고 xargs 에는 -d가 없음) :
echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'
ALT-를 눌러보십시오? (alt와 물음표가 동시에). 목록을 작성하는 데 1-2 초를 제공하십시오. bash에서 작동해야합니다.
다음은 모든 실행 파일 및 별명 목록을 제공하는 솔루션입니다 . 또한 xargs -d
Mac OS X이 없는 시스템에 이식 가능 하며 공백이있는 경로를 올바르게 처리합니다.
#!/bin/bash
(echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@"
사용법 : myscript.sh [grep-options] pattern
, 예 : ls
대소 문자를 구분하지 않고 시작하는 모든 명령을 찾으려면 다음을 수행하십시오.
myscript -i ^ls
모든 명령을 나열하는 바로 가기 방법입니다. 터미널을 열고 "탭" 버튼을 두 번 누르십시오. 터미널의 모든 명령을 보여줍니다.
grep
정확히 어떻게 그것을 파이프 ?
또는 명령에 매뉴얼 페이지가있는 한 빠른 설명과 함께 편리한 명령 목록을 얻을 수 있습니다.
apropos -s 1 ''
-s 1 returns only "section 1" manpages which are entries for executable programs.
'' is a search for anything. (If you use an asterisk, on my system, bash throws in a search for all the files and folders in your current working directory.)
그럼 당신이 원하는대로 그냥 grep.
apropos -s 1 '' | grep xdg
수율 :
xdg-desktop-icon (1) - command line tool for (un)installing icons to the desktop
xdg-desktop-menu (1) - command line tool for (un)installing desktop menu items
xdg-email (1) - command line tool for sending mail using the user's preferred e-mail composer
xdg-icon-resource (1) - command line tool for (un)installing icon resources
xdg-mime (1) - command line tool for querying information about file type handling and adding descriptions for new file types
xdg-open (1) - opens a file or URL in the user's preferred application
xdg-screensaver (1) - command line tool for controlling the screensaver
xdg-settings (1) - get various settings from the desktop environment
xdg-user-dir (1) - Find an XDG user dir
xdg-user-dirs-update (1) - Update XDG user dir configuration
결과가 정렬되지 않은 것처럼 보이므로 긴 목록을 찾으려면 | 정렬 | 중간에 넣은 다음 더 적거나 더 많거나 가장 많이 같은 호출기로 파이프하십시오. 알라 :
apropos -s 1 '' | sort | grep zip | less
이름이나 간단한 설명에 "zip"이있는 모든 명령의 정렬 된 목록을 반환하고 "less"호출기로 펌핑합니다. ( "less"를 $ PAGER로 바꾸고 기본 호출기를 사용할 수도 있습니다.)
그것은 당신이 사용하는 쉘에 달려 있다는 것을 의미합니다. 여기 내가 보는 제약 조건이 있습니다.
ZSH를 사용하므로 여기에 zsh 답변이 있으며 다음 3 가지 작업을 수행합니다.
여기있어:
feed_me() {
(alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort
}
zsh를 사용한다면 그렇게해야합니다.
bashrc 파일에 넣을 수있는 함수는 다음과 같습니다.
기능 명령 검색 { oldIFS = $ {IFS} IFS = ":" $ {PATH}의 p 하다 ls $ p | grep $ 1 끝난 수출 IFS = $ {oldIFS} }
사용법 예 :
$ 명령 검색 그놈 gnome-audio-profiles-properties * gnome-eject @ 그놈 열쇠 고리 * 그놈 열쇠 고리 데몬 * 그놈 마운트 * 그놈 열기 * 그놈 사운드 레코더 * gnome-text-editor @ gnome-umount @ 그놈 볼륨 컨트롤 * 폴킷 그놈 인증 * vim.gnome * $
참고 : IFS는 bash가 문자열을 분할하는 데 사용하는 변수입니다.
이 작업을 수행하는 더 좋은 방법이있을 수 있습니다.
compgen -c > list.txt && wc list.txt
compgen -c > /tmp/list.txt && /tmp/wc list.txt
왜 입력하지 않습니까?
seachstr
터미널에서.
껍질은 마치
seacrhstr: command not found
편집하다:
좋아, 나는 답답한 바보이기 때문에 downvote를 가져 가라. 나는 단지 알고 싶다 :이 대답의 문제점 !!! 그 질문자는 말했다 :
명령을 사용할 수 있는지 확인하십시오.
명령을 입력하면 사용 가능한지 알려줍니다!.
아마 그 / 그녀는 의미 "명령을 실행 밖으로" 또는 것은 "스크립트에 포함하는" 하지만 난 그의 마음을 읽을 수 없습니다 (I 정기적으로 그냥 그가 입고 있다는 것입니다 수없는없는 마음 읽기 편향 )
formathdd
명령이 있는지 알고 싶습니다 . 아 잠깐만, 나는 그것을 실행하고 참조하십시오. 사람. 감사합니다 :)
데비안 : ls / bin / | grep "whatImSearchingFor"