¿Muestra nombres de archivos ocultos dentro de todos los directorios? ¿O solo el directorio actual (incluido cualquier directorio dentro de él)? No puedo entender por qué ls -ld .*
devuelve resultados diferentes (muestra archivos y directorios ocultos SOLAMENTE en el directorio actual, sin mostrar archivos dentro de ningún otro directorio dentro de él)? También ¿Qué significa -d
? hacer solo (ls -d
)?
Respuesta aceptada:
ls -al .*
muestra el contenido de todos los directorios en el directorio actual cuyos nombres comienzan con .
(es decir, todos aquellos que coincidan con el shell glob .*
)
En Bash, el .*
glob se resuelve en .
y ..
así como. Desde .
representa el directorio actual, y ..
el directorio principal, también se muestran los contenidos de ambos directorios, incluidos los archivos y directorios ocultos.
.*
también captura archivos ocultos en el directorio actual, pero se enumeran de todos modos como contenido de .
Como se explica en ¿Qué significa `ls –directory`? el -d
hace que se muestren los directorios en sí, en lugar de su contenido.
este también es el caso en dash, que es el shell vinculado a sh
en Ubuntu. Sin embargo, otros shells, incluidos zsh y mksh, se comportan de manera más intuitiva y no incluyen .
y ..
al expandir .*
. También vale la pena señalar que, si bien la mayoría de los comandos operarán en ..
y .
cuando se incluyen en un .*
global (incluyendo chmod
y chown
– realmente puedes arruinar tu sistema con eso), el rm
El comando fallará útilmente por diseño para hacerlo.