Я новичок в Linux, я хочу скопировать файл с удаленной в локальную систему ... теперь я использую команду scp в системе Linux .. У меня есть некоторые папки или имена файлов с пробелами, когда я пытаюсь скопировать это файл, он показывает сообщение об ошибке: «Нет такого файла или каталога»
Я попытался:
scp ael5105@192.168.0.200:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
Я видел некоторые ссылки в Интернете, но я не совсем понимаю, кто-нибудь может помочь в этом?
как я могу избежать пробелов в именах файлов или каталогов во время копирования ...
Ответы:
По сути, вам нужно дважды его избежать, потому что он сбежал локально, а затем на удаленном конце.
Есть несколько вариантов, которые вы можете сделать (в bash):
источник
scp user@example.com:'$(ls -t | head -1)' .
получение самого последнего созданного файла на сервере илиscp user@example.com:'dir/*.{xml,pdf}' .
получение всех файлов xml и pdf из удаленного каталога. В общем, я предпочитаю это удобству с файлами с пробелами. Файлы с пробелами всегда надоедают.работает
не работает
Причина в том, что строка интерпретируется оболочкой до того, как путь передается команде scp. Поэтому, когда он добирается до удаленного, удаленный ищет строку с неэкранированными кавычками, и это терпит неудачу
Чтобы увидеть это в действии, запустите оболочку с опциями -vx, т.е.
bash -vx
она отобразит интерполированную версию команды при запуске .источник
"
или одиночные'
работы одинаковыТакже вы можете сделать что-то вроде:
Первый уровень цитат будет интерпретирован scp, а затем второй уровень цитат сохранит пробелы.
источник
Используйте 3 обратной косой черты, чтобы избежать пробелов в именах каталогов:
scp user@host:/path/to/directory\\\ with\\\ spaces/file ~/Downloads
следует скопировать в ваш
Downloads
каталогfile
из удаленного каталога с именемdirectory with spaces
.источник
Мне было очень трудно заставить это работать для переменной оболочки, содержащей имя файла с пробелами. По какой-то причине используя
как в @ Адриан ответ, кажется, не удается.
Оказывается, что лучше всего использовать расширение параметра для добавления обратной косой черты в пробел , как показано ниже.
источник
file="${file//\ /\\\ }"
Извините за использование этого вопроса Linux, чтобы поставить этот совет для Powershell в Windows 10: пробел, экранирующий обратную косую черту или заключенный в кавычки, в этом случае не сработал. Не эффективно, но я решил это с помощью "?" символ вместо:
для файла "tasks.txt Jun-22.bkp" я скачал его, используя "tasks.txt? Jun-22.bkp"
источник