탭 완성으로 표시되는 명령 목록을 통해 어떻게 파이프할 수 있나요?

탭 완성으로 표시되는 명령 목록을 통해 어떻게 파이프할 수 있나요?

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/compcommandsaliasesbuiltins-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는 매우 강력하므로 스크립트 파일에서도 이를 수행할 수 있는 방법이 있어야 합니다. 그렇죠?bashcompHISTIGNORE

답변3

왜 원하는 것을 찾을 수 없나요?

예:

find / -name ec2* -executable -type f -perm -og+rx -print

사용 사례를 알면 더 자세한 명령 예제를 만들 수 있습니다.

관련 정보