Bash에서 명령 옵션 이름을 자동 완성하는 방법이 있습니까?

Bash에서 명령 옵션 이름을 자동 완성하는 방법이 있습니까?

배쉬 4.4를 사용하고 있습니다.

[root@192 ~]# bash --version
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@192 ~]#

옵션 이름을 자동 완성할 수 있는 방법이 있는지 궁금합니다. 예를 들어, realpath --re뒤에 a를 입력하면 Tab옵션 이름에서 누락된 부분을 채우는 데 도움이 되고 을 얻습니다 realpath --relative-to=.

답변1

bash-completion을 활성화한 경우 명령 완료를 위한 명령 옵션이 이미 있습니다. 비슷한 장소에서 이 목적을 위한 많은 스크립트와 함수를 볼 수 있습니다 /usr/share/bash-completion. 설치된 패키지는 git스크립트를 /etc/bash_completion.d/.

완료가 제한된 일부 스크립트(예: realpath또는 ) 가 여전히 있을 수 있습니다. 를 사용해야 하는 echo긴 옵션에 대한 완성을 추가하려면 이는 완성을 생성하는 bash 함수이며 를 사용하여 볼 수 있습니다 .realpath_longopttype -a

complete -F _longopt realpath

이 작업을 수행하기 전에 다음을 통해 변경하려는 내용이 완료되었는지 테스트해야 합니다.

complete -p realpath

no completion specification이는 기존 규칙이라고 할 수 있습니다 complete -F _minimal realpath. 예를 들어 새 규칙이 이를 재정의합니다. 따라서 많은 명령에 어떤 기능(기존 또는 사용자 정의)도 맹목적으로 할당해서는 안 됩니다. 명령 완성 규칙이 이미 존재합니다.

이 변경 사항은 현재 셸에 적용됩니다. 영구적으로 만들려면 source예를 들어 를 전달하여 이 작업을 수행 해야 합니다 bashrc.

관련 정보