Pourquoi un caractère générique non cité fonctionne-t-il à distance avec scp?

24

Je tape ceci dans Bash:

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

et cela fonctionne, en obtenant tous les fichiers qui font le caractère générique sur le serveur distant. Mais pourquoi ça marche? Je pensais que Bash étend les expressions génériques dans les arguments avant que les arguments ne deviennent visibles pour un outil comme scp.

dan
la source

Réponses:

31

S'il n'y a pas de nom de fichier correspondant, une expression générique dans bash se développe à elle-même. Donc, tant que vous ne créez pas de fichier localement dont le nom correspond user@remote:~/dir/*.xml, votre commande fonctionne sans guillemet.

Uwe
la source
9
Et aussi ne pas activer nullglobce qui le ferait s'étendre à une chaîne vide
Eric Renouf
1
nullglobne provoque pas le développement du modèle dans la chaîne vide; il la fait disparaître complètement. C'est la différence entre scp "" .(deux arguments, dont l'un est la chaîne vide) et scp .(un seul argument et un appel non valide à scp).
chepner