De acuerdo con la página de manual de bash:
bash escanea cada palabra para los caracteres *,? y [. Si aparece uno de estos caracteres, la palabra se considera un patrón y se reemplaza por una lista ordenada alfabéticamente de nombres de archivos que coinciden con el patrón.
y desde el nodo de información para ls
El programa 'ls' enumera información sobre archivos (de cualquier tipo, incluidos directorios). Las opciones y los argumentos de archivo se pueden mezclar arbitrariamente, como de costumbre.
Para los argumentos de la línea de comandos que no son opciones que son directorios, de forma predeterminada 'ls' enumera el contenido de los directorios, no de forma recursiva, y omite archivos con nombres que comienzan con '.'. Para otros argumentos no opcionales, de forma predeterminada, `ls 'enumera solo el nombre del archivo. Si no se especifican argumentos que no sean opciones, 'ls' enumera el contenido del directorio actual.
así que cuando das ls d*
, d * se expande a la lista ordenada de todos los nombres de archivo / directorio que comienzan con d. Entonces tu comando se convierte
ls dump
y como dump es un nombre de directorio, entonces obtienes la lista de todos los archivos en el directorio "dump" pero cuando das ls D*
, D * se expande a " Dropbox de descargas de documentos de escritorio ", por lo que el comando se convierte en
ls Desktop Documents Downloads Dropbox
y como todos estos son directorios, obtienes la lista de archivos en un directorio individual. Si hubiera un archivo que comenzara con D en el directorio actual, se habría enumerado por separado.
ls p*
y presenté un archivo porque existe y unals P*
muestra de la Imágenes públicas carpeta que no hay ningún archivo empezando por P . Y cuando he creado un directorio llamado caca , que apareció enls p*
ls d * y D * ambos enumeran archivos y carpetas que coinciden con d * y D * respectivamente, el comportamiento es el mismo, debe haber habido un error en su prueba.
Si desea enumerar solo los nombres de carpeta y no el contenido de la carpeta, debe usar "-d":
fuente
Como se sugirió anteriormente, la
-d
opción es el camino a seguir. Agregandoa mi
~/.bashrc
archivo me funciona bien.fuente
ld - The GNU linker
, lo que evitará que el OP compile y vincule programas. Usar en sualias lsd='ls -d'
lugar. Antes de aliasar algo comofoo
siempre lo hacetype foo
para ver sifoo
ya se usa como nombre para algo, y decidir si la conveniencia del alias anula la pérdida de acceso al anteriorfoo