탭 완성 가능성을 파일에 저장

탭 완성 가능성을 파일에 저장

다음과 같이 터미널 화면에 모든 가능성을 표시하는 대신:

$ ls /etc/<TAB>
Display all 230 possibilities? (y or n)

모든 가능성을 파일에 저장하고 싶습니다.

ls /etc/ > file.txt항상 작동하는 것은 아닙니다. apt-get은 예입니다.

$ apt-get <TAB>
autoclean        check            install          update
autoremove       clean            purge            upgrade
build-dep        dist-upgrade     remove           
changelog        dselect-upgrade  source           

tabcompletions 'ls /etc/'두 명령의 탭 완성 가능성을 비교하는 다음과 같은 명령을 실행할 수 있도록 모든 가능성을 출력하는 이와 같은 명령을 찾고 있습니다 .

diff <(tabcompletions 'ls ') <(tabcompletions 'cd ')

그게 가능합니까?

답변1

당신의 것에는 ~/.bashrc아마도 다음과 같은 것이 있을 것입니다:

if [ -f /etc/bash_completion ] && ! shopt -oq posix
then
    source /etc/bash_completion
fi

이제 검색이 계속되는 곳이며 제목에는 _quote_readline_by_ref필요한 힌트가 포함되어 있습니다.

compgen -f /etc/

type compgen이를 다시 추적해 보면 compgen이 "쉘 내장"이라는 것이 밝혀졌습니다 . 즉, 다음 위치에 나타나야 한다는 의미입니다 man bash.

compgen [option] [word]
       Generate possible completion matches for word according to the options ...

답변2

이는 대략적인 접근 방식이지만 다음 명령을 사용할 수 있습니다.script

$ script -a lsdiff
Script started, file is lsdiff
$ ls <TAB>
a b c ...
$ <Ctrl-D>
Script done, file is lsdiff

위의 내용을 반복 cd하고 차이점을 비교해 보세요.

답변3

자동 완성을 위해서는 ls /etc/<TAB>다음을 수행하십시오.

# print to screen
compgen -f /etc/ | sort
# store to file
compgen -f /etc/ | sort > output.txt
# print to screen *and* store to file
compgen -f /etc/ | sort | tee output.txt

자세한 내용은 을 참조하세요 help compgen. compgen분명히 "완료 생성기"를 의미합니다.

또한 bash에 내장된 내장 실행 파일이므로 보고 man bash검색하세요 . 하나 있다compgenman bash많은이 명령에 대한 추가 정보 compgen.

예를 들어 compgen -A command <cmd>와 동일하고 compgen -c <cmd>compgen -A file동일합니다 compgen -f. 찾다.man bash-A action

또한보십시오:

  1. 모든 바이너리 나열$PATH
  2. 탭 완성으로 표시되는 명령 목록을 통해 어떻게 파이프할 수 있나요?

관련 정보