我想从远程复制一个文件到本地系统。现在我在linux系统中使用scp命令。我有一些文件夹或文件名有空格,当我试图复制该文件时,它显示错误消息:“没有这样的文件或目录”。
我试着:
scp ael5105@192.168.0.200:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
我在网上看到了一些参考资料,但我不太明白,有人能帮我吗?
我如何在复制过程中转义文件名或目录名中的空格…
我想从远程复制一个文件到本地系统。现在我在linux系统中使用scp命令。我有一些文件夹或文件名有空格,当我试图复制该文件时,它显示错误消息:“没有这样的文件或目录”。
我试着:
scp ael5105@192.168.0.200:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
我在网上看到了一些参考资料,但我不太明白,有人能帮我吗?
我如何在复制过程中转义文件名或目录名中的空格…
当前回答
对不起,我用这个Linux问题把这个技巧放在Windows 10的Powershell上:用反斜杠转义的空格字符或用引号括起来的空格字符在这种情况下不适合我。效率不高,但我用“?”char来解决它:
“tasks.txt”文件6月22日。我用"tasks.txt?Jun-22.bkp"下载的
其他回答
作品
scp localhost:"f/a\ b\ c" .
scp localhost:'f/a\ b\ c' .
不起作用
scp localhost:'f/a b c' .
原因是在将路径传递给scp命令之前,shell会对字符串进行解释。因此,当它到达远程时,远程正在寻找一个带未转义引号的字符串,它失败了
要查看这一操作,使用-vx选项启动shell,即bash -vx,它将在运行时显示该命令的插值版本。
只需要在空格的位置插入通配符:'foo/bar*bar.txt'
基本上你需要转义它两次,因为它在本地转义然后在远端转义。
有几个选项你可以做(在bash中):
scp user@example.com:"'web/tmp/Master File 18 10 13.xls'" .
scp user@example.com:"web/tmp/Master\ File\ 18\ 10\ 13.xls" .
scp user@example.com:web/tmp/Master\\\ File\\\ 18\\\ 10\\\ 13.xls .
我是Linux的新手,我使用Kali xD,这里是我的工作原理:如果你想用单个或多个空格传输文件,从你的系统到远程服务器:
$ scp this\ is\ my\ file tryhackme@1.1.1.1:/home/tryhackme
请注意,IP地址只是示例,最后一个I类型是目录,美元符号是提示符,代码以scp开头。
你也可以在文件传输时指定文件名,例如:/home/tryhackme/file1或单个或多个空格,如/home/tryhackme/"this\ is\ new\ file"。
从远程服务器到您的系统,与上面的单个或多个空间相同:
$ scp tryhackme@1.1.1.1:/home/tryhackme/"remote\ server\ file" "this is mine now"
请注意,您只对想要复制的文件使用反斜杠\\,因为您可以看到字符串“this is mine now”没有\\,因为这是我们想要传输到系统时的文件名,而不是我们想要安全复制的文件(scp)。抱歉我的解释,希望有人能理解,我希望这对需要另一种解决方案的人有帮助。
在linux-terminal或cmd中,如果字与字之间有空格,必须使用引号(")("")标记。
你应该这样做:
$ '/home/tryhackme'
not
$ /home/tryhackme