bash 파일 이름 완성을 "more"로 재설정하는 방법은 무엇입니까?

bash 파일 이름 완성을 "more"로 재설정하는 방법은 무엇입니까?

TAB 자동 완성 작동 방식을 변경하기 위해 몇 가지 작업을 수행했지만 more 명령에만 적용되었습니다.

다른 모든 명령은 가능한 완성을 나열하지만 이제 더 많은 명령이 작은따옴표 쌍 안에 모든 가능성을 나열합니다.

따라서 /etc에 다음을 입력하면

more pass<TAB>

밝혀지다

$ more 'passwdqc.conf
passwd
passwd-' 

유형

less pass<TAB>

밝혀지다

$ less passwd
passwd         passwd-        passwdqc.conf  

more자동 완성이 이와 같이 작동 하도록 어떻게 재설정할 수 있습니까 less?

편집하다:

$ shopt -u
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
compat31        off
compat32        off
compat40        off
compat41        off
direxpand       off
dirspell        off
dotglob         off
execfail        off
extdebug        off
failglob        off
globstar        off
gnu_errfmt      off
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
lastpipe        off
lithist         off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
restricted_shell    off
shift_verbose   off
xpg_echo        off
$ set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

답변1

나는 재현할 수 있습니다:

_comp_foo() { compopt -o filenames -o nospace; COMPREPLY=("$(compgen -f -- "$2")"); }
complete -F _comp_foo foo
cd /etc

유형 foo pass, Tab. 다음과 같은 내용이 표시됩니다.

foo 'passwd
passwd-'

:)

more에 대한 자동 완성이 less처럼 작동하도록 어떻게 재설정합니까?

NAMEBash 완료를 재설정할 수 있습니다.complete -r NAME

help complete설명하다:

-r - 각 이름에 대한 완성 사양을 제거하거나, 이름이 제공되지 않은 경우 모든 완성 사양을 제거합니다.

기존 완성을 재사용할 수 있습니다.

_completion_loader less 2>/dev/null # for bash-completion >= 1.9, bash >= 4.1
eval $(complete -p less | sed 's/ less$/ more/')

또한보십시오:최근 bash 완성을 통해 기존 완성을 재사용하는 방법

관련 정보