Como faço para scp um nome de arquivo com espaços?

Como faço para scp um nome de arquivo com espaços?

Estou tendo um pouco de dificuldade scppara transferir arquivos de um computador remoto. O problema aparentemente tem a ver com o nome do diretório em que os arquivos estão contidos. Eles estão em uma unidade de CD chamada photos 4(com um espaço entre photose 4). Quando tentei a transferência, usei o seguinte comando:

scp [remote username]@192.168.1.X:/media/[remote username]/photos\ 4/file.jpg /home/[username]/Pictures

No entanto, recebo uma mensagem de erro dizendo No directory: /media/[remote username]/photos. Achei que a barra invertida escaparia do espaço para que o diretório fosse lido como photos 4.

Alguém pode me informar sobre o que estou fazendo de errado aqui?

(Além disso, fiz uma cópia file.jpgpara a área de trabalho do computador remoto e executei o comando:

scp [remote username]@192.168.1.X:/home/[remote username]/Desktop/file.jpg /home/[username]/Pictures

e funcionou, então essa sequência de escape parece ser a culpada. Eu simplesmente não consigo descobrir o que há de errado com isso.)

Responder1

Espaços em diretórios ou nomes de arquivos são inimigos naturais de um sistema Linux, mas podem, é claro, serescapoucom a devida diligência. Existem 3 possibilidades que você pode tentar:

  1. scp [remote username]@192.168.1.X:"'/media/remote_username/photos 4/file.jpg'" .
  2. scp [remote username]@192.168.1.X:"/media/remote_username/photos\ 4/file.jpg" .
  3. scp [remote username]@192.168.1.X:/media/remote_username/photos\\\ 4/file.jpg .

Todos deveriam funcionar, mas alguns são sintaticamente mais fáceis de entender do que outros...

Referências:

Responder2

Aqui está a correção para usuários ZSH,

  1. scp '[e-mail protegido]:/media/"fotos 4"/file.jpg' /home/nomedeusuário/Imagens
  2. scp '[e-mail protegido]:/media/"fotos 4"/"arquivo com espaço.jpg"' /home/nomedeusuário/Imagens

informação relacionada