Conclusão da aba quebrada no SCP com OpenSSH 1: 6.2p2-6ubuntu0.1

0

Aqui está o meu cenário:

Desejo transferir ~/foo.txt para um servidor aoneill@bar .

Eu começo a digitar na minha linha de comando:

aoneill@aoneill-Laptop:~$ scp fo

Neste ponto, eu atingi <tab> para completar o nome do arquivo, e meu terminal apenas congela. Ele não será alterado com base em qualquer pressionamento de tecla, e o cursor ficará preso ao lado do fo , a menos que eu <ctrl-C> out.

Estou executando o Ubuntu 13.10 e incluo . /etc/bash_completion no meu .bashrc .

Este é o único programa com o qual eu realmente me deparo com esse problema, e não parece ser um problema comum.

Obrigado pela ajuda!

    
por AlexO'Neill 11.02.2014 / 20:13

2 respostas

0

At this point I hit tab to complete the file name, …

... e o computador, totalmente incapaz de ler sua mente , fez o que realmente faz quando a aba é atingida nesse ponto, o que é tentar completar um hostname , possivelmente consultando todo tipo de coisa, desde a saída de avahi-browse até a saída de ruptime . Esse processo pode levar algum tempo.

(O corajoso pode ir e olhar para a função _known_hosts_real em /usr/share/bash-completion/bash-completion .)

Para concluir um nome de arquivo nesse ponto, a palavra que você digitou deve conter um caractere de barra ( / ) ou começar com um ponto ( . ) ou um caractere til ( ~ ).

(Os bravos também podem ver porque isso é da função _scp em /usr/share/bash-completion/completions/scp .)

    
por 11.02.2014 / 21:31
0

Eu corri para isso com o Ubuntu 14.04. Usar set -x mostra que o autocomplete estava pendurado no intervalo. Quando eu tentei executar o breaktime eu descobri que não foi instalado. Depois de instalar o pacote rwho, o problema foi corrigido.

sudo apt-get instala o rwho

COMPREPLY+=($( compgen -W         "$( ruptime 2>/dev/null | awk '!/^ruptime:/ { print $1 }' )"         -- "$cur" ))
+++ ruptime
+++ awk '!/^ruptime:/ { print $1 }'

A linha COMPRELY chama o ruptime sem verificado para ver se existe. E como eu tenho 'COMMAND_NOT_FOUND_INSTALL_PROMPT = 1' habilitado, o comando tenta me perguntar se eu quero instalá-lo, mas o pipe captura a saída e trava.

Portanto, o erro pode ser que COMMAND_NOT_FOUND_INSTALL_PROMPT não verifique se está sendo usado em um pipe. Ou que COMPREPLY não verifique se o comando é instalado primeiro.

Erro registrado no grupo de comando não encontrado. link

    
por 14.01.2016 / 14:50