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.

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.