다음과 같이 터미널 화면에 모든 가능성을 표시하는 대신:
$ 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
검색하세요 . 하나 있다compgen
man bash
많은이 명령에 대한 추가 정보 compgen
.
예를 들어 compgen -A command <cmd>
와 동일하고 compgen -c <cmd>
와 compgen -A file
동일합니다 compgen -f
. 찾다.man bash
-A action