Estou tentando migrar de bash
para fish
.
Para que é o fish
analógico shopt
? Estou tentando imitar esta linha do meu .bashrc
:
shopt -s dotglob # for mv * see hidden files
Estou tentando migrar de bash
para fish
.
Para que é o fish
analógico shopt
? Estou tentando imitar esta linha do meu .bashrc
:
shopt -s dotglob # for mv * see hidden files
Respostas:
Isso é intencional. Na maioria das vezes, os usuários não desejam coincidir acidentalmente com os arquivos ocultos que são invisíveis para ls
(sem -a
). Geralmente, os arquivos ficam ocultos por um motivo, não apenas para trollá-lo. Além disso, se *
corresponder a arquivos ocultos, a correspondência de arquivos não ocultos seria muito complicada.
No entanto, ao contrário do 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 .
ou ..
. No entanto, a casca do peixe nunca pode corresponder .
ou ..
com globs, portanto, isso não é um problema (se você realmente precisa corresponder .
ou ..
por algum motivo bobo, diga-os explicitamente). Além disso, o peixe tenta evitar opções por design, para que não haja dotglob
.
Para corresponder a todos os arquivos no diretório, convém usar a expansão de colchetes para detectar arquivos começando com pontos e os que não são. {.,}
é a expansão do suporte que corresponde ao ponto que pode ou não existir. A estrela depois que combina com tudo. Como os globs no peixe não podem corresponder .
ou ..
, o código a seguir corresponde a tudo, exceto para os dois diretórios (que basicamente coincidem, se você usar o código abaixo)
cat {.,}*
{,.}*
manualmente.