Почему я получаю другое поведение команды scp в csh и bash?


0

Почему я получаю другое поведение команды scp в csh и bash?

Та же команда работает в оболочке csh, но не работает в оболочке bash.

Пожалуйста, кто-нибудь может помочь?


bash-3.2$  csh
Linux-007% scp root@1.2.3.4:/{/root/install.log} /
install.log 100% 98KB 97.6KB/s 00:00
Linux-007%  which scp
/usr/bin/scp

Linux-007% bash
bash-3.2$  scp root@1.2.3.4:/{/root/install.log} /
scp: /{/root/install.log}: No such file or directory
bash-3.2$ which scp
/usr/bin/scp

Ответы:


2

scpне проблема. Проблема в том, как две оболочки обрабатывают фигурные скобки.

csh% echo root@1.2.3.4:/{/root/install.log}
root@1.2.3.4://root/install.log

bash$ echo root@1.2.3.4:/{/root/install.log}
root@1.2.3.4:/{/root/install.log}

Почему вы хотите фигурные скобки в любом случае?


да, я хочу скопировать несколько файлов.
user87005

1
Команда, которую вы показали нам, копирует только один файл. Но если вы хотите , фигурные скобки должны интерпретироваться на удаленной системе, поставить одиночные кавычки вокруг аргумента: scp 'root@1.2.3.4:/{/root/install.log}' /.
Кит Томпсон

та же проблема bash-3.2 $ scp root@1.2.3.4: / '{/ root / install.log}' / пароль root@12.3.4: scp: / average/root/install.log}: нет такого файла или каталога
user87005

Затем сбросьте скобки. Если вы копируете один файл, как вы, похоже, пытаетесь это сделать в своем примере, не используйте фигурные скобки. Если вам действительно нужно скопировать несколько файлов, используйте фигурные скобки и запятые и процитируйте их:scp root@1.2.3.4:{this_file,that_file}' /
Кит Томпсон,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.