Почему я получаю другое поведение команды 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
user87005
источник

Ответы:

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}' /
Кит Томпсон,