Intereting Posts
Почему повторное связывание монтирует создание записей для исходного каталога? Прикрепленное изображение отсутствует в почте Unix при прикреплении нескольких файлов OpenVPN успешно соединяется с сервером, но нет доступа в Интернет Что делает дистрибутив GNU и есть ли дистрибутивы Linux, которые не являются GNU? sed: вставьте sth перед последующими строками, которые начинаются одинаково, но не совпадают Интерактивный брандмауэр для ограничения исходящих запросов Как переименовать определенные каталоги, если у родителя есть определенное имя? Разница в выполнении init со встроенными или внешними initramfs? Интерпретировать пробелы в файле Calc: Как преобразовать числовой столбец на место? xbindkeys: процесс не найден Заменить слово «открыть» с различными условиями Как установить LDOM на Solaris 11? gnome-terminal unicode chars не отображается – для локали установлено значение en_US.utf8 Как использовать канал для назначения переменной

Почему scp говорит «Нет такого файла»?

У меня есть сценарий bash, который использует scp для копирования файла с моей машины на другую. Сценарий продолжает выходить после ввода пароля SSH с ошибкой:

 <filename>: No such file or directory 

Тем не менее, в скрипте я проверяю файл, и все в порядке. Вначале я set -o verbose и вот что я получаю в конце скрипта:

 scp /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4 root@rpi.local:"/media/3TB/TV\ Shows/NCIS" root@rpi.local's password: /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4: No such file or directory 

Итак, я попытался выполнить команду scp как вывод, и все было в порядке; он копируется. Что случилось?

Я не совсем уверен, что вы делаете, но когда я пытаюсь выполнить команду, которую вы имеете в своем примере, я получаю следующее:

 $ scp /home/saml/projects/Cooks.com\ -\ Recipe\ -\ Coconut\ Chicken.mht \ root@remotey:"/root/some spaced out file.mht" scp: ambiguous target 

Это связано с тем, что вы указываете целевой путь, а также обратные косые черты, которые выходят из пробелов. Однако, когда текущая оболочка удаляет двойную кавычку, она также удалит одиночную обратную косую черту, оставив целевой путь в виде пустой строки с пробелами. Для того, чтобы пространство было правильно экранировано, необходимо выполнить одно из следующих действий:

Примеры

метод № 1 – двойная кавычка, одинарная кавычка

 $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:"'/home/user/some spaced out file.txt'" 

метод № 2 – одинарная кавычка, двойная кавычка

 $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:'"/home/user/some spaced out file.txt"' 

метод № 3 – одинарная кавычка, обратная косая черта

 $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:'/home/user/some\ spaced\ out\ file.txt' 

метод № 4 – двойная кавычка, обратная косая черта

 $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:"/home/user/some\ spaced\ out\ file.txt" 

метод №5 – тройная обратная косая черта

 $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:/home/user/some\\\ spaced\\\ out\\\ file.txt