Bash에서 명령을 사용할 때 나는 좋아합니다.더블-Tab사용 가능한 명령에 대한 옵션을 표시합니다. 일부 명령은 다른 명령보다 일치 가능성이 더 높습니다. 예: 다음은 git
입력하고 누른 후의 일부 출력 입니다 Tab Tab.
$ git
git git-effort git-quick-stats
git-alias git-extras git-reauthor
git-archive-file git-feature git-rebase-patch
git-authors git-filechange-search git-receive-pack
git-back git-force-clone git-refactor
git-blametool git-fork git-release
git-branch_ git-fresh-branch git-rename-branch
git-branchz git-graft git-rename-tag
git-bug git-gs_blametool git-repl
git-bulk git-gs_branch_ git-reset-file
git-changelog git-gs_changes git-root
git-changes git-gs_diffc git-rscp
git-chore git-guilt git-scp
git-clang-format git-ignore git-sed
git-clang-format-6.0 git-ignore-io git-setup
git-clear git-info git-shell
git-clear-soft gitk git-show-merged-branches
git_commit_r git-lfs git-show-tree
git-commits-since git-line-summary git-show-unmerged-branches
git-contrib git-local-commits git-squash
git-count git-lock git-stamp
예를 들어 double의 출력을 Tab어딘가에 파이프할 수 있는 방법이 있습니까 grep
? 관련 게시물을 찾았습니다(TAB 자동 완성은 완료할 옵션을 어떻게 찾나요?), 하지만 출력을 grep
.
답변1
명령의 경우 를 사용하십시오 compgen -c
. 이 단어는 compgen
분명히 "완성 생성기"를 나타냅니다. 출처 help compgen
(강조 추가):
compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
옵션에 따라 가능한 완료를 표시합니다.
가능한 생성을 수행하는 쉘 함수 내에서 사용하기 위한 것입니다. 완성. 선택적 WORD 매개변수가 제공되면 일치합니다. WORD가 생성되었습니다.
종료 상태: 잘못된 옵션이 제공되거나 오류가 발생하지 않는 한 성공을 반환합니다.
자세한 내용은 내장된 bash 쉘 명령이므로 man bash
페이지에서 검색해 보세요.compgen
사용 예:
$ compgen -c bas
basename
base64
bashbug
bash
해당 출력을 간단히 grep
.
$ compgen -c bas | grep bug
bashbug
답변2
@salutis의 답변을 바탕으로 ', 및 ,(옵션 플래그 참조) 를 검색하는 호출 comp
하고 저장하는 스크립트를 만들었습니다.~/bin/comp
commands
aliases
builtins
-cab
배쉬 맨 항목), 선택적인 두 번째 인수가 있는 경우 출력을 파이프 grep
하고 두 번째 인수를 검색합니다.
Usage: comp string [keyword-for-grep]
암호:
#!/bin/bash
if [ -z "$1" ]; then
echo usage: comp string [keyword-for-grep]
echo
exit
fi
if [ -z "$2" ]; then
compgen -cab -- $1
exit
fi
compgen -cab -- $1 | grep -i $2
개인적으로 나는 기록을 검색할 때 해당 항목을 찾지 않도록 history -d
스크립트의 쉘 기록에서 마지막 명령(관련된 것)을 제거하는 방법을 찾는 데에도 관심이 있습니다 . 나도 이것을 할 수 있다는 것을 알고 있지만 Linux는 매우 강력하므로 스크립트 파일에서도 이를 수행할 수 있는 방법이 있어야 합니다. 그렇죠?bash
comp
HISTIGNORE
답변3
왜 원하는 것을 찾을 수 없나요?
예:
find / -name ec2* -executable -type f -perm -og+rx -print
사용 사례를 알면 더 자세한 명령 예제를 만들 수 있습니다.