A instalação Debian (e Ubuntu) fornece uma série de funções de conclusão do shell (no pacote bash-completion
); as funções são armazenadas no diretório /etc/bash_completion.d
e a que você está interessado é /etc/bash_completion.d/ssh
.
Tanto quanto eu posso ver, a maneira que o script obtém a lista de possíveis conclusões é emitir o comando ls -aFld ${path}*
, onde ${path}
é a palavra que precisa ser concluída, seja na máquina remota - usando ssh - - ou diretamente na máquina local.
Para que isso funcione de maneira que não diferencia maiúsculas de minúsculas, é necessário organizar o glob nesse comando ls
em execução no sistema remoto para ser expandido sem distinção entre maiúsculas e minúsculas, o que significa que você deseja shopt -s nocaseglob
antes o comando ls
é executado.
Eu acho que seu ubuntu / debian é mais recente do que o meu, mas é possível que o seguinte patch funcione em seu sistema. Caso contrário, você provavelmente poderá descobrir a edição necessária:
--- ssh.old 2013-09-17 16:07:38.000000000 -0500
+++ ssh 2013-09-17 16:06:25.000000000 -0500
@@ -275,3 +275,3 @@
files=$( ssh -o 'Batchmode yes' $userhost \
- command ls -aF1d "$path*" 2>/dev/null | \
+ builtin shopt -s nocaseglob ';' command ls -aF1d "$path*" 2>/dev/null | \
sed -e 's/'$_scp_path_esc'/\\\&/g' -e '/[^\/]$/d' )
@@ -281,3 +281,3 @@
files=$( ssh -o 'Batchmode yes' $userhost \
- command ls -aF1d "$path*" 2>/dev/null | \
+ builtin shopt -s nocaseglob ';' command ls -aF1d "$path*" 2>/dev/null | \
sed -e 's/'$_scp_path_esc'/\\\&/g' -e 's/[*@|=]$//g' \
@@ -303,6 +303,6 @@
if $dirsonly ; then
- COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
+ COMPREPLY=( "${COMPREPLY[@]}" $( shopt -s nocaseglob; command ls -aF1d $cur* 2>/dev/null | \
sed -e "s/$_scp_path_esc/\\&/g" -e '/[^\/]$/d' -e "s/^/$1/") )
else
- COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
+ COMPREPLY=( "${COMPREPLY[@]}" $( shopt -s nocaseglob; command ls -aF1d $cur* 2>/dev/null | \
sed -e "s/$_scp_path_esc/\\&/g" -e 's/[*@|=]$//g' \