Ich versuche , aus zu wandern bash
zu fish
.
Wofür ist das fish
analog shopt
? Ich versuche diese Zeile aus meinem zu imitieren .bashrc
:
shopt -s dotglob # for mv * see hidden files
Ich versuche , aus zu wandern bash
zu fish
.
Wofür ist das fish
analog shopt
? Ich versuche diese Zeile aus meinem zu imitieren .bashrc
:
shopt -s dotglob # for mv * see hidden files
Antworten:
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 dotglob
wird jedoch nicht benötigt, um versteckte Dateien abzugleichen. In bash shopt -s dotglob
ist 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 {.,}*
{,.}*
manuell glob .