fish shell: análogo “shopt -s dotglob”

7

Estou tentando migrar de bash para fish .

Qual é o análogo de fish para shopt ? Estou tentando imitar essa linha do meu .bashrc :

shopt -s dotglob # for mv * see hidden files
    
por netimen 30.12.2013 / 14:11

1 resposta

5

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 {.,}*
    
por Konrad Borowski 18.05.2014 / 11:44