Почему подстановочный знак без кавычек работает удаленно с scp?


24

Я набираю это в Bash:

scp user@remote:~/dir/*.xml .

и это работает, получая все файлы, которые делают подстановочный знак на удаленном сервере. Но почему это работает? Я думал, что Bash расширяет подстановочные выражения в аргументах, прежде чем аргументы станут видимыми для подобного инструмента scp.

Ответы:


31

Если не найдено подходящего имени файла, то подстановочное выражение в bash расширяется до самого себя. Итак, до тех пор, пока вы не создадите файл локально, имя которого совпадает user@remote:~/dir/*.xml, ваша команда работает без кавычек.


9
А также не включайте, nullglobчтобы это расширилось до пустой строки
Эрик Ренуф

1
nullglobне вызывает расширения шаблона до пустой строки; это заставляет его исчезнуть совсем. Это разница между scp "" .(два аргумента, один из которых является пустой строкой) и scp .(один аргумент и недопустимый вызов scp).
Чепнер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.