Isso é intencional. Na maioria das vezes, os usuários não querem corresponder acidentalmente os arquivos ocultos que são invisíveis para ls
(sem -a
). Normalmente, os arquivos ficam ocultos por um motivo, não apenas para enganar você. Além disso, se *
corresponder aos arquivos ocultos, a correspondência de arquivos não ocultos seria muito complicada.
No entanto, ao contrário de bash shopt -s dotglob
não é necessário para corresponder aos arquivos ocultos. No bash, shopt -s dotglob
é a única maneira de corresponder todos os arquivos no diretório sem coincidir acidentalmente com .
ou ..
. No entanto, fish shell nunca pode corresponder a .
ou ..
com globs, portanto, isso não é um problema (se você realmente precisar corresponder .
ou ..
por algum motivo bobo, diga-os explicitamente). Além disso, o fish tenta evitar as opções de design, por isso não tem dotglob
.
Para corresponder a cada arquivo no diretório, convém usar a expansão de colchetes para detectar os arquivos que começam com pontos e os que não são. {.,}
é a expansão de colchetes que corresponde ao ponto que pode ou não existir. A estrela depois combina com tudo. Como globs in fish não podem corresponder a .
ou ..
, o código a seguir corresponde a tudo, exceto àqueles dois diretórios (que bash infelizmente combina, se você usar o código abaixo)
cat {.,}*