Vendo nomes de arquivos no SCP

3

Estou usando scp para copiar arquivos de um servidor remoto para um local. O que é realmente desconfortável é que eu preciso digitar o caminho do arquivo com precisão. Estou acostumado a confiar no autocompletar, porque os nomes de arquivos e as estruturas de pastas podem ser longos. Eu quero ser capaz de ver os nomes dos arquivos em cada diretório e autocomplete como quando navega arquivos localmente.

Agora, eu poderia fazer o SSH separadamente, encontrar os nomes dos arquivos e usá-los no comando SCP. Mas, claro, isso seria um enorme desperdício de esforço. Além disso, eu poderia usar uma GUI, mas eu prefiro evitar isso porque uma linha de comando é mais leve.

Qualquer maneira de usar o SCP sem ter que lembrar exatamente os nomes dos arquivos?

    
por Ram Rachum 13.02.2015 / 11:10

2 respostas

1

bash-completion (que está disponível no Cygwin, Debian, Ubuntu e sem dúvida muitas outras distribuições) suporta scp auto-completion, desde que o shell possa acessar o servidor necessário sem nenhum aviso (ele usa ssh no modo batch, veja o ssh_config(5) página de manual para detalhes).

A maneira mais fácil de ativar isso é usar ssh-agent . Isso provavelmente está ativado por padrão pelo seu ambiente de área de trabalho; simplesmente tente

ssh-add

para adicionar sua chave padrão ao agente atualmente em execução (se houver). Se nenhum agente estiver em execução, você pode iniciar um executando

eval $(ssh-agent)

Quando sua chave for conhecida pelo agente, você poderá concluir automaticamente os comandos scp que envolvem servidores que você pode acessar com a chave.

Tenho certeza de que zsh também suporta scp preenchimento automático com as mesmas advertências; o suporte necessário está no pacote zsh-common no Debian. Ele precisa estar ativado no seu .zshrc com algo como

autoload -U compinit && compinit

(que carrega todas as conclusões suportadas).

    
por 13.02.2015 / 12:54
1

Zsh tem remotas scp conclusão, mas você precisa ter certeza de que você não usa um apelido para alguma função de invólucro como o não oficial glob_scp , ou se você tiver um, é possível adicionar o mesmo mecanismo de conclusão, como:

compdef glob_scp=scp

Você notará que zsh irá citar corretamente caracteres especiais, como * , quando necessário (embora isso possa parecer estranho). Atualmente, bash-completion não faz isso , embora falhas sejam incomuns.

Como alternativa, em especial com shells que não têm conclusão remota em scp , você pode usar sftp ou sshfs :

  • sftp tem seu próprio sistema de conclusão.
  • sshfs permite que você monte um diretório remoto via SSH, de modo que seja suficiente usar cp com o sistema de conclusão normal.
por 13.02.2015 / 11:26