Fischschale: "shopt -s dotglob" analog

9

Ich versuche , aus zu wandern bashzu fish.

Wofür ist das fishanalog shopt? Ich versuche diese Zeile aus meinem zu imitieren .bashrc:

shopt -s dotglob # for mv * see hidden files
netimen
quelle
Ich bin mir ziemlich sicher, dass es keinen gibt. In der Dokumentation wird davon gesprochen, dass Punktedateien nicht enthalten sind, ohne dass ein Konfigurationsmechanismus erwähnt wird. Sie müssen wahrscheinlich {,.}*manuell glob .
Glenn Jackman
1
Beachten Sie, dass Sie möglicherweise auf stackoverflow.com nachfragen möchten, dass einige der Fischpfleger dort rumhängen.
Glenn Jackman

Antworten:

8

Dies ist beabsichtigt. Meistens möchten die Benutzer nicht versehentlich mit den versteckten Dateien übereinstimmen, die für ls(ohne -a) unsichtbar sind . Normalerweise werden Dateien aus einem bestimmten Grund ausgeblendet, nicht nur, um Sie zu trollen. Wenn *versteckte Dateien übereinstimmen würden, wäre es zu schwierig, nicht versteckte Dateien abzugleichen.

Im Gegensatz zu Bash shopt -s dotglobwird jedoch nicht benötigt, um versteckte Dateien abzugleichen. In bash shopt -s dotglobist dies die einzige Möglichkeit, jede Datei im Verzeichnis abzugleichen, ohne versehentlich mit .oder übereinzustimmen ... Fischschalen können jedoch niemals mit .oder ..mit Globs übereinstimmen, daher ist dies kein Problem (wenn Sie ernsthaft übereinstimmen müssen .oder ..aus irgendeinem dummen Grund, sagen Sie sie einfach explizit). Außerdem versucht Fisch zu vermeiden, dass Optionen von Natur aus vorhanden sind, so dass dies nicht der Fall ist dotglob.

Um mit jeder einzelnen Datei im Verzeichnis übereinzustimmen, können Sie die Klammererweiterung verwenden, um Dateien zu erkennen, die mit Punkten beginnen, und solche, die es nicht sind. {.,}ist eine Klammererweiterung, die mit einem Punkt übereinstimmt, der möglicherweise vorhanden ist oder nicht. Der Stern danach passt zu allem. Da Globs in Fischen nicht mit .oder übereinstimmen können .., stimmt der folgende Code mit allen außer diesen beiden Verzeichnissen überein (was leider übereinstimmt, wenn Sie den folgenden Code verwenden).

cat {.,}*
Konrad Borowski
quelle