Почему scp не говорит “Такого файла”?

Можно сказать GNU sed читать сценарий из стандартного входа с -f -, -f значение прочитать сценарий из файла, и - значение стандартного входа, как распространено с большим количеством команд.

sed -f - "$IN" > "$OUT" << SED_SCRIPT
    s/a/1/g
    s/test/full/g
SED_SCRIPT

POSIX sed также поддерживает -f, но использование - поскольку стандартный вход не документируется. В этом случае Вы могли использовать /dev/stdin в системах Linux (и я, кажется, вспоминаю, Солярис имеет это также, но я не могу подтвердить это прямо сейчас),

Используя <<-SED_SCRIPT (с '-' префикс), позволит закрытие SED_SCRIPT тег, который будет расположен с отступом.

2
03.10.2013, 00:42
1 ответ

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

$ 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
3
27.01.2020, 22:06
  • 1
    Нет, место назначения корректно. "foo\ bar" эквивалентно 'foo\ bar', нет 'foo bar' — обратная косая черта между двойными кавычками только стирается, если она сопровождается \"$, одинарная левая кавычка или новая строка. –  Gilles 'SO- stop being evil' 03.10.2013, 02:56

Теги

Похожие вопросы