Eu posso manter. e .. fora de. * expansão?

9

Muitas vezes eu acho 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 fazer o bash excluir . e .. da expansão de .* ?

    
por David Z 21.08.2010 / 08:52

2 respostas

12

No bash, nesta ordem:

GLOBIGNORE=.
shopt -u dotglob

Quando o GLOBIGNORE está definido,. e .. são automaticamente ignorados, então você realmente não precisa configurá-los em GLOBIGNORE, mas se você não tem mais nada para ignorar você não terá nada para configurá-lo.

Toda vez que você definir GLOBIGNORE para um valor não nulo, o bash ativará a opção dotglob , então você precisará desativá-la posteriormente; caso contrário, o bash expandirá * para incluir arquivos que começam com um ponto.

    
por 21.08.2010 / 11:24
3

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

command .??*
  • Rápido para digitar e garantir a exclusão de . e .. , independentemente do ambiente.
por 19.02.2013 / 01:45