글자를 입력하는 것보다 탭 완성을 사용합니다. 나는 타이핑하는 데 사용 했고 다음 단계를 계속할 수 있도록 rm ~/De<TAB>완성되었습니다 rm ~/Desktop/.
최근에 그 행동이 바뀌었다. 완료 rm ~/Desktop<SPACE>는 이제을 산출 합니다. 즉, 계속하려면 백 스페이스를 입력하고 슬래시를 입력해야합니다. 이것은 나를 울게한다.
변경 사항은 기능에있는 것 같다 _longopt()에서 /etc/bash_completion그러나 그것은 지금까지 내가 따를 수있다. 이 변경은 의도적 인 것이며, 그렇다면 어떤 것이 좋습니까? 다른 시스템에서 이전 코드를 복사하는 대신 구성 옵션을 사용하여 이전 동작을 되돌릴 수 있습니까?
편집 : 참조 기능.
_longopt()
{
local cur prev split=false
_get_comp_words_by_ref -n = cur prev
_split_longopt && split=true
case "$prev" in
--*[Dd][Ii][Rr]*)
_filedir -d
return 0
;;
--*[Ff][Ii][Ll][Ee]*|--*[Pp][Aa][Tt][Hh]*)
_filedir
return 0
;;
esac
$split && return 0
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" \
-- "$cur" ) )
elif [[ "$1" == @(mk|rm)dir ]]; then
_filedir -d
else
_filedir
fi
}
_longopt()함수 본문을 게시 할 수 있습니까?
readline설정 ( ~/inputrc파일이 있습니까?)과 항목이 실제 디렉토리이거나 디렉토리에 대한 심볼릭 링크라는 사실에 따라 달라질 수 있습니다 .
.inputrc이 시스템에 더 이상 없다. (이것은 백 스페이스와 커서 키를 수정 한 시절이었습니다 ...) 그리고 모든 요소, 디렉토리 또는 파일, symlink에 대해 발생합니다.
rmdir하지 않는,mkdir또는touch.