fish shell: analogo “shopt -s dotglob”


9

Sto provando a migrare da basha fish.

A cosa serve l' fishanalogo shopt? Sto cercando di imitare questa riga dal mio .bashrc:

shopt -s dotglob # for mv * see hidden files

Abbastanza sicuro che non ce n'è uno. la documentazione parla di file dot non inclusi in alcun meccanismo di configurazione. Probabilmente dovrai glob con {,.}*manualmente.
Glenn Jackman,

1
Nota, potresti voler chiedere su stackoverflow.com, alcuni dei manutentori del pesce si trovano lì.
Glenn Jackman,

Risposte:


8

Questo è intenzionale. Il più delle volte gli utenti non vogliono abbinare accidentalmente i file nascosti per i quali sono invisibili ls(senza -a). Di solito, i file sono nascosti per un motivo, non solo per trollare te. Inoltre, se *corrispondesse a file nascosti, la corrispondenza di file non nascosti sarebbe troppo complicata.

Tuttavia, a differenza di bash, shopt -s dotglobnon è necessario abbinare i file nascosti. In bash, shopt -s dotglobè l'unico modo per abbinare ogni file nella directory senza corrispondere accidentalmente .o ... Tuttavia, la conchiglia non può mai abbinarsi .o ..con i globs, quindi questo non è un problema (se hai seriamente bisogno di abbinare .o ..per qualche motivo sciocco, dillo esplicitamente). Inoltre, il pesce cerca di evitare di avere opzioni in base alla progettazione, quindi non ha dotglob.

Per abbinare ogni singolo file nella directory, è possibile utilizzare l'espansione parentesi per rilevare i file che iniziano con punti e quelli che non lo sono. {.,}è l'espansione della parentesi che corrisponde al punto che può o non può esistere. La stella dopo corrisponde a tutto. Poiché i globs in fish non possono corrispondere .o .., il codice seguente corrisponde a tutto tranne che a quelle due directory (che bash corrisponde tristemente, se si utilizza il codice seguente)

cat {.,}*
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.