Posso mantenere e ... per. * espansione?


10

Lo trovo spesso fastidioso (o peggio) quando scrivo

command .*

in bash e il comando si applica alla directory principale e alla directory corrente. C'è qualche opzione di shell o altra configurazione che posso modificare per escludere bash .e ..dall'espansione di .*?

Risposte:


13

In bash, in questo ordine:

GLOBIGNORE=.
shopt -u dotglob

Quando è impostato GLOBIGNORE,. e .. vengono automaticamente ignorati, quindi in realtà non è necessario impostarli in GLOBIGNORE, ma se non si ha nient'altro da ignorare non si avrà nulla su cui impostarlo.

Ogni volta che imposti GLOBIGNORE su un valore non nullo, bash attiva l'opzione dotglob, quindi dovrai disattivarla in seguito; altrimenti bash si espanderà *per includere i file che iniziano con un punto.


Figo, grazie! In realtà avrei preferito dotglobaccenderlo, quindi l'impostazione GLOBIGNOREsembra perfetta.
David Z,

Quando GLOBIGNORE è impostato, Bash ignora .e ..ma non foo/.e foo/... Potresti voler usare GLOBIGNORE=.:*/.:*/..per far funzionare anche questo con i nomi dei percorsi.
user123444555621

3

Su un sistema sconosciuto in cui ho troppo poco tempo per controllare le impostazioni in uso (come GLOBIGNORE) uso il seguente schema infallibile:

command .??*
  • Veloce da digitare e garantito per escludere .e ..indipendentemente dall'ambiente.

1
Mi è sempre piaciuto questo approccio, ma .a
tieni
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.