¿Por qué un comodín sin comillas funciona remotamente con scp?

24

Estoy escribiendo esto en Bash:

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

y funciona, obteniendo todos los archivos que forman el comodín en el servidor remoto. ¿Pero por qué funciona esto? Pensé que Bash expande las expresiones comodín en argumentos antes de que los argumentos sean visibles para una herramienta como scp.

dan
fuente

Respuestas:

31

Si no hay un nombre de archivo coincidente, entonces una expresión comodín en bash se expande a sí misma. Por lo tanto, siempre que no cree ningún archivo local cuyo nombre coincida user@remote:~/dir/*.xml, su comando funciona sin citar.

Uwe
fuente
99
Y tampoco habilite nullglobcuál lo haría expandirse a una cadena vacía
Eric Renouf
1
nullglobno hace que el patrón se expanda a la cadena vacía; hace que desaparezca por completo. Es la diferencia entre scp "" .(dos argumentos, uno de los cuales es la cadena vacía) y scp .(un argumento único y una llamada no válida a scp).
chepner