scp с точкой с запятой не удалось избежать второй точки с запятой

Вы можете попробовать TestDisk , в идеале на копии диска (при условии, что у вас есть другой компьютер, который вы можете скопировать это к ...). TestDisk может восстанавливать разделы, если диск не был перезаписан, а в случае сбоя PhotoRec можно использовать для восстановления некоторых типов данных. Прочтите всю документацию перед использованием любого инструмента!

6
30.04.2017, 14:26
2 ответа

Это сработало для меня:

/tmp $ ls foo*
'foo;2'
/tmp $ scp 'foo;2' 'localhost:/tmp/foo\;3'
Password:
foo;2                                            100%    0    0.0KB/s    0.0KB/s    00:00
/tmp $ ls foo*
'foo;2'  'foo;3'
/tmp $
2
27.01.2020, 20:30

В bash одинарные (') и двойные (") кавычки могут использоваться для цитирования точки с запятой. Чтобы заключить их в кавычки, нет необходимости ставить дополнительный обратный слеш внутри кавычек. Обратная косая черта нужна, чтобы заключить в двойные кавычки некоторые специальные символы, но точка с запятой не входит в их число (например, " и \).

После проверки я пришел к выводу, что сообщение Command not found приходит с удаленной машины! Значит, все вышесказанное верно, по крайней мере, не до тех пор, пока задействован один shell! Но здесь имя файла назначения, похоже, каким-то образом передается оболочке на другой стороне.

Так что если ваш файл называется /home/user/gege/feed.zip;2, а должен быть сохранен как /home/user/gege/feed. zip;3 на другой машине любой из них должен работать

scp 'fx-devel1:/home/user/gege/feed.zip;2' 'fx-devel2:/home/user/gege/feed.zip\;3'
scp "fx-devel1:/home/user/gege/feed.zip;2" "fx-devel2:/home/user/gege/feed.zip\\;3"
scp fx-devel1:/home/user/gege/feed.zip\;2 fx-devel2:/home/user/gege/feed.zip\\\;3

Вы можете сделать несколько тестов, как работает цитирование в оболочке (и, очевидно, прочитать соответствующую часть man-страницы) с помощью этой функции:

test_quoting () {
  printf 'Number of args: %s\n' "$#"
  printf 'First arg: %s\n' "$1"
}
test_quoting abc def
test_quoting "abc def"
test_quoting 'xyz;123'
test_quoting foo\;bar
test_quoting 'foo\;bar'
# and so on
1
27.01.2020, 20:30

Теги

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