Por que um curinga não citado funciona remotamente com o scp?

24

Estou digitando isso no Bash:

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

e funciona, obtendo todos os arquivos que compõem o curinga no servidor remoto. Mas por que isso funciona? Eu pensei que o Bash expande expressões curinga nos argumentos antes que os argumentos se tornem visíveis para uma ferramenta como scp.

dan
fonte

Respostas:

31

Se não houver um nome de arquivo correspondente, uma expressão curinga no bash se expandirá para si mesma. Portanto, desde que você não crie nenhum arquivo localmente cujo nome corresponda user@remote:~/dir/*.xml, seu comando funcionará sem citar.

Uwe
fonte
9
E também não permitir nullglobque ele teria se expandir para esvaziar corda
Eric Renouf
11
nullglobnão faz com que o padrão se expanda para a cadeia vazia; faz com que desapareça completamente. É a diferença entre scp "" .(dois argumentos, um dos quais é a cadeia vazia) e scp .(um único argumento e uma chamada inválida para scp).
chepner