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.

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.