Ich habe diesen Befehl gestern ausgeführt, dachte ich auf einem Testcomputer, aber es war ein Dateiserver, der über SSH verbunden war.
sudo rm -rf /tmp/* !(lost+found)
Mein Terminalemulator ist Konsole. Mein System ist Debian 7.
Frage:
Hat dieser Befehl andere Dateien als die Dateien in / tmp gelöscht?
files
filesystems
rm
tmp
etwas etwas
quelle
quelle
dsgsadfsf
einzugeben , und drücken Sie die Eingabetaste. Sehen Sie das Ergebnis. Wenn jabash: dsgsadfsf: command not found
, dann ist Ihre Muschelbash
.Antworten:
Die korrekte Syntax in der Bash lautet wie folgt:
Wie @goldilocks in den Kommentaren schrieb , erweitert der ursprüngliche Befehl die Abfrage (er löscht alle Dateien im
/tmp
Ordner, fährt dann fort und löscht alle Dateien im aktuellen Arbeitsordner, in Ihrem Fall imhome
Ordner).Sie können versuchen zu überprüfen, ob Sie einige Ihrer Daten wiederherstellen können. Es ist eine Frage , über Linux Data Recovery hier .
quelle
rm -rf / tmp
^^sudo
, daher hätte ein normaler Ordner, der nur für root beschreibbar ist, nicht unbedingt geholfen.Das
!(lost+found)
in Ihremrm
Befehl war wahrscheinlich der fatale Fehler:Ich weiß nicht genau, was damit gemacht
bash
wird, aber dieser Befehl unten gibt alles in meinem/tmp/
und auch in meinem aktuellen Verzeichnis aus (welches sich aktuell befindet~
):quelle
!(folder)
ist Teil eines Befehls, den ich mal ausgeführt habe, der alle außer löschtefolder
.!lost+found: event not found
as!
, um Befehle aus dem Verlauf abzurufen.cd /; echo !(lost+found)
> _ <!(foo)
bash nur dann als "all except foo" funktioniert, wenn dieextglob
Option gesetzt ist. Außerdem hat OP nicht angegeben, welche Shell er verwendet, und es ist sehr schwer zu erraten, was genau derrm !(lost+found)
Befehl in seinem Fall getan hat.bash
als Standard-Shell hat. Er hat das höchstwahrscheinlich nicht geändert. Außerdem ist in Debian 7 dieextglob
Optiontrue
standardmäßig auf gesetzt (ich habe dies gerade angekreuzt).