
:~
Ich erstelle versehentlich einen Dateinamen in der Bash-Shell
scp foo :~
Wie lösche ich es?
Antwort1
versuchen rm ':?'
oder rm ":?"
oderrm :\?
Hauptsächlich müssen Sie den Dateinamen entweder in einfache oder doppelte Anführungszeichen setzen. Oder maskieren Sie alle Sonderzeichen im Dateinamen.
einige Sonderzeichen, die ich zählen kann, sind:
*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc
Ich schlage vor, einfache Anführungszeichen zu verwenden, um das Löschen einer Datei mit falschem Namen zu verhindern, my_file
anstatt $file
mit rm $file
oder rm "$file"
wenn file='my_file'
. Das einfache Anführungszeichen ist das einzige Zeichen, das Sie in Bourne-ähnlichen Shells nicht mit einfachen Anführungszeichen anführen können, aber Sie können den Rest des Dateinamens immer mit '...'
und '
sich selbst anführen, wie \'
:
rm -- '-$#~<>'\''"*?[]{}'`
Beachten Sie, dass dies -
nicht speziell für die Shell ist, aber für ist es rm
insofern speziell, als dass es als Option behandelt wird, wenn es am Anfang eines Arguments steht. Hier --
gibt das an rm
, dass die folgenden Argumente nicht als Optionen behandelt werden sollen, selbst wenn sie mit einem beginnen -
.
Antwort2
Wenn Sie eine Datei mit einem seltsamen Namen entfernen möchten, können Sie grundsätzlich versuchen, den Marker zu verwenden --
, der das Ende der Optionen kennzeichnet. Alles nach diesem Flag wird als Positionsparameter behandelt. (Siehe auch:Was bedeutet „--“ (Doppelstrich)?)
Das wäre also
rm -i -- :?
(Wie von @Doug O'Neal vorgeschlagen, -i
werden Sie vor dem Löschen durch die Option gefragt, ob Sie die richtige Datei entfernen.)
In diesem Fall wird es jedoch ?
von der Shell als Glob-Zeichen erweitert. Daher funktioniert das oben genannte nicht.
In diesem Fall können Sie die Autovervollständigungsfunktion der Shell verwenden. Gehen Sie in das Verzeichnis, in dem sich die seltsam benannte Datei befindet, geben Sie rm :
(ohne zu drücken Enter) ein und drücken Sie dann, Tabum durch alle Dateien im aktuellen Verzeichnis zu blättern. Die seltsam benannte Datei wird in korrekten Anführungszeichen angezeigt.