
Hier ist mein ls
Befehl, der die Liste der Dateien in meinem aktuellen Verzeichnis anzeigt:
rper: ls -l
$commandoutput[0]
file.txt
Ich habe versucht, $commandoutput[0]
die Zeile mithilfe von zu entfernen rm -rf $commandoutput[0]
, aber es wird der folgende Fehler angezeigt. Wie kann ich ihn entfernen?
rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.
Antwort1
Alternativ zur Antwort von @RomanPerekhrest funktioniert auch Folgendes:
rm '$commandoutput[0]'
da die einfachen Anführungszeichen eine Variablenerweiterung vermeiden.
Eine andere Möglichkeit besteht darin, mit der Eingabe zu beginnen rm $
und dann die Taste zu drücken Tab. Die Shell vervollständigt den Dateinamen automatisch und maskiert Zeichen nach Bedarf.
Antwort2
Escapen Sie $
(und wünschenswerterweise [
, ]
) das Signieren in Ihrem Dateinamen mit einem Backslash \
:
rm -rf \$commandoutput\[0\]
Antwort3
Diese Frage wurde zwar schon von anderen beantwortet, eine andere Möglichkeit besteht jedoch darin, den Inode der Datei zu suchen und die Datei mit „find“ und „exec delete“ zu entfernen.
ls -il
Beispielausgabe:
781956 drwx------ 3 viv viv 4096 2017-07-7 15:05 $commandoutput[0]
Die erste Spalte sollte der Inode sein. Führen Sie im obigen Beispiel Folgendes aus:
find . -inum 781956 -exec rm -i {} \;
Antwort4
Eine andere einfache Möglichkeit besteht darin, ein Platzhalterzeichen und rm -i zu verwenden:
rm -i *command*
Bei allen Dateinamen, die das Wort „command“ enthalten, werden Sie gefragt, ob Sie die Datei entfernen möchten. Sie können dies dann vor dem Löschen überprüfen.