Eu posso ficar? e .. de. * expansão?


10

Costumo achar irritante (ou pior) quando digito

command .*

no bash e o comando se aplica ao diretório pai e ao diretório atual. Existe alguma opção de shell ou outra configuração que eu possa ajustar para excluir o bash .e ..da expansão .*?

Respostas:


13

No bash, nesta ordem:

GLOBIGNORE=.
shopt -u dotglob

Quando GLOBIGNORE está definido,. e .. são automaticamente ignorados; portanto, você não precisa defini-los em GLOBIGNORE, mas se você não tiver mais nada a ignorar, não terá nada para defini-lo.

Toda vez que você define GLOBIGNORE como um valor não nulo, o bash ativa a opção dotglob; portanto, você precisará desativá-la posteriormente; caso contrário, o bash será expandido *para incluir arquivos que começam com um ponto.


Legal, obrigado! Na verdade, eu preferia ter dotglobligado, então a definição GLOBIGNOREparece perfeita.
David Z

Quando GLOBIGNORE está definido, o Bash ignora .e ..mas não foo/.e foo/... Você pode usar GLOBIGNORE=.:*/.:*/..para fazer isso funcionar também com nomes de caminhos.
user123444555621

3

Em um sistema desconhecido em que tenho pouco tempo para verificar as configurações em uso (como GLOBIGNORE), uso o seguinte padrão infalível:

command .??*
  • Rápido para digitar e com garantia de exclusão .e ..independentemente do ambiente.

11
Eu sempre gostei dessa abordagem, mas estar ciente de que ele não consegue corresponder arquivos 1 char-.a
MestreLion
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.