¿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.