Esto no es en realidad causada por ls
, desde ls
nunca se expande patrones.
La decisión acerca de cómo ampliar glob patrones (patrones que contengan *
y ?
) es hecha por el shell. Su cáscara es más probable bash
.
Por defecto, bash
no realiza la ruta de la expansión en dotfiles. Sin embargo, puede hacerlo, ya sea explícita de la escritura de la .
(como has descubierto ya) o mediante la activación de la dotglob
opción. Desde la página del manual de bash:
dotglob Si se establece, bash incluye los nombres de archivo que comienzan con un". " en los resultados de la ruta de expansión.
Para demostrarlo, vamos a simplemente imprimir la expansión de la con echo
en lugar de ls
:
$ touch .bash_profile.swo
$ echo .*.swo
.bash_profile.swo
$ echo *.swo
*.swo
$ shopt -s dotglob
$ echo *.swo
.bash_profile.swo
Otra discusión se puede encontrar aquí.