ls -al .* mostra o conteúdo de todos os diretórios no diretório atual cujos nomes começam com . (isto é, todos aqueles que correspondem ao shell glob .* )
No Bash, o .* glob resolve também para . e .. . Como . representa o diretório atual e .. o diretório pai, o conteúdo de ambos os diretórios, incluindo todos os arquivos e diretórios ocultos, também é mostrado. 1
.* também captura arquivos ocultos no diretório atual, mas eles são listados como conteúdo de .
Como explicado em O que significa 'ls --directory'? -d flag faz com que os próprios diretórios sejam exibidos, em vez de seu conteúdo.
1 este também é o caso em dash, que é o shell vinculado a sh no Ubuntu. No entanto, outros shells, incluindo zsh e mksh, se comportam de maneira mais intuitiva e não incluem . e .. ao expandir .* . Também vale a pena notar que, enquanto a maioria dos comandos irá operar em .. e . quando eles estão incluídos em um .* glob (incluindo chmod e chown - você pode realmente atrapalhar seu sistema com eles) , o comando rm falhará por design para fazer isso.