Domanda conchiglia di pesce: analogico "shopt -s dotglob"


Sto provando a migrare da bash a fish.

Qual 'é fishè analogo a shopt? Sto cercando di imitare questa battuta dal mio .bashrc:

shopt -s dotglob # for mv * see hidden files

8
2017-12-30 13:11


origine


Abbastanza sicuro che non ce n'è uno. la documentazione parla di file dot non inclusi senza menzione di alcun meccanismo di configurazione. Probabilmente dovrai farlo con {,.}* manualmente. - glenn jackman
Nota, potresti chiedere su stackoverflow.com, alcuni dei manutentori del pesce sono là fuori. - glenn jackman


risposte:


Questo è intenzionale. La maggior parte delle volte gli utenti non vogliono accidentalmente abbinare i file nascosti per cui sono invisibili ls (senza -a). Di solito, i file sono nascosti per un motivo, non solo per troll. Inoltre, se * corrisponderebbe ai file nascosti, l'abbinamento di file non nascosti sarebbe troppo complicato.

Tuttavia, a differenza di bash shopt -s dotglob non è necessario per abbinare i file nascosti. In bash, shopt -s dotglob è l'unico modo per abbinare ogni file nella directory senza corrispondenze accidentali . o ... Tuttavia, la conchiglia non può mai eguagliare . o .. con i glob, quindi non è un problema (se devi seriamente abbinare . o .. per qualche sciocco motivo, basta dirlo esplicitamente). Inoltre, il pesce cerca di evitare di avere opzioni di progettazione, quindi non ha dotglob.

Per abbinare ogni singolo file nella directory, è possibile utilizzare l'espansione parentesi per rilevare i file che iniziano con i punti e quelli che non lo sono. {.,} è l'espansione della parentesi che corrisponde al punto che può o non può esistere. La stella dopo che corrisponde a tutto. Perché i glob nel pesce non possono eguagliare . o .., il codice seguente corrisponde a tutto tranne che a quelle due directory (che bash combacia tristemente, se usi il codice sotto)

cat {.,}*

5
2018-05-18 09:44