ls -al .functions*
-rw-r--r-- 1 root root 471040 Mar 2 10:01 .functions.php.swo
-rw-r--r-- 1 root root 438272 Mar 2 09:57 .functions.php.swp
*
kann übereinstimmen .php.swo
und .php.swp
warum *
kann nicht übereinstimmen .functions.php
?
ls -al *.swo
ls: cannot access '*.swo': No such file or directory
ls -al *swo
ls: cannot access '*swo': No such file or directory
Antwort1
Dateien, die mit einem Punkt beginnen, werden standardmäßig aus der Dateiliste ausgeblendet. Der einfachste Weg, diese Art von Dateien abzugleichen, besteht darin, am Anfang des Ausdrucks einen Punkt einzufügen. Dies trifft jedoch nur auf Dateien zu, die mit beginnen .
.
ls -al .*.swo
dotglob
Die Alternative besteht darin , vor dem Ausführen des Befehls festzulegen . Dann .
werden Dateien eingeschlossen, die mit beginnen.
shopt -s dotglob
Fügen Sie es hinzu, um ~/.bashrc
es als Standard festzulegen.
Beachten Sie, dassEinstellung dotglob
kann zu unbeabsichtigten Ergebnissen führenbei Verwendung der Bash-Shell, da bei Verwendung sowohl .
(aktuelles Verzeichnis) als auch ..
(übergeordnetes Verzeichnis) angezeigt werden *
. Mit dotglob
set,niemalsversuchen zu benutzen rm -R *
.
Antwort2
AlsVerlängerungZu Shaidos Antwort möchte ich einige Erklärungen geben, warum die -a
Option hier nicht funktioniert:
Der ls
BefehlnichtPlatzhalter verarbeiten. Der Kommandozeileninterpreter führt dazu folgende Schritte aus:
Wenn Sie die Befehlszeile " mycommand *.c
" eingeben, ersetzt der Befehlszeileninterpreter zuerst die Platzhalterzeichenfolge " *.c
" durch die Liste der übereinstimmenden Dateien und führt dann die resultierende Befehlszeile aus:
mycommand a.c file.c test.c
Der Kommandozeileninterpreter arbeitet für alle Befehle gleich und kann daher nicht wissen, was -a
bei dem ls
Befehl „versteckte Dateien einschließen“ bedeutet (während es -a
bei anderen Befehlen eine völlig andere Bedeutung hat)...