casca de peixe: analógico “shopt -s dotglob”

9

Estou tentando migrar de bashpara fish.

Para que é o fishanalógico shopt? Estou tentando imitar esta linha do meu .bashrc:

shopt -s dotglob # for mv * see hidden files
netimen
fonte
Certeza que não há um. a documentação fala sobre arquivos de ponto não serem incluídos, sem menção a nenhum mecanismo de configuração. Você provavelmente terá que fazer isso {,.}*manualmente.
Glenn Jackman
11
Observe que você pode perguntar no stackoverflow.com, alguns dos mantenedores de peixes estão lá.
Glenn Jackman

Respostas:

8

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 dotglobnã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 {.,}*
Konrad Borowski
fonte