Angenommen, ich hatte einen Ordner mit dem Namen *
unter /
. Ich weiß, dass allgemeine Befehle wie rm -rf * nicht funktionieren. Irgendeine Hilfe?
Angenommen, ich hatte einen Ordner mit dem Namen *
unter /
. Ich weiß, dass allgemeine Befehle wie rm -rf * nicht funktionieren. Irgendeine Hilfe?
Antworten:
Sie können Argumente in einfache Anführungszeichen setzen, um die Verarbeitung durch die Shell zu verhindern.
rm -r '/*'
Testen Sie es sicher mit ls
(in Ordnern, die Dateien enthalten):
$ ls '*'
ls: *: No such file or directory
In diesem Fall würden doppelte Anführungszeichen ebenfalls funktionieren, aber wenn es sich um eine $
beteiligte handelt, würden sie dies nicht tun, da die Shell davon ausgehen würde, dass es sich um eine Variable handelt:
$ ls "foo$bar"
ls: foo: No such file or directory
$ ls 'foo$bar'
ls: foo$bar: No such file or directory
Für GNU rm
können Sie auch --
Argumente vor dem Dateinamen hinzufügen , um zu verhindern, dass sie als Argumente analysiert werden. Auf diese Weise können Sie benannte Dateien -rf
problemlos löschen .
&
), und sie einzeln entkommen, was leicht mehr Aufwand bedeuten kann, als einmal zu zitieren. Ich halte daher die Flucht von Personen für minderwertig und habe diese Alternative veröffentlicht.
bash
Manpage dauert eine Weile, wenn Sie nicht wissen, wonach Sie suchen sollen.
rm *
würde funktionieren, um diesen Ordner zu löschen.