Eu uso a conclusão de tabulação mais do que digitar letras. Eu costumava digitar rm ~/De<TAB>e isso seria concluído para rm ~/Desktop/que eu pudesse continuar no próximo nível.
Recentemente, esse comportamento mudou. A conclusão agora produz rm ~/Desktop<SPACE>, o que significa que eu devo retroceder e digitar a barra se quiser continuar. Isso me faz chorar.
As mudanças parecem estar localizados na função _longopt()em /etc/bash_completion, no entanto, que é, tanto quanto eu posso seguir. Essa mudança é intencional e, em caso afirmativo, para que serve? Posso ter o comportamento antigo de volta, preferencialmente por uma opção de configuração, em vez de apenas copiar o código antigo de outro sistema?
Edit: A função para referência.
_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()função?
readlineconfigurações (você possui um ~/inputrcarquivo?) E do fato de o item ser um diretório real ou um link simbólico para um diretório.
.inputrcesse sistema. (Aqueles eram os dias, corrigindo backspace e teclas do cursor ...) E isso acontece para todos os elementos, diretório ou arquivo, link simbólico ou não.
rmdir, não paramkdiroutouch.