Linux und Ich

Blog über Ubuntu, Linux, Android und IT

Vorsicht bei gut gemeinten Tipps und Ratschlägen für die Shell

Vorsicht bei gut gemeinten Tipps und Ratschlägen für die Shell

| 16 Kommentare

Gerade bin ich bei commandlinefu.com über folgenden kleinen kurzen Code-Schnipsel gestolpert. Ich möchte dem Autor nicht unterstellen, dass er da mit Absicht sämtliche Dateien im aktuellen Verzeichnis löschen möchte (sonst stünde dort vielleicht gleich ein

rm -rf !(logo.png);

). Doch so ein Fall zeigt mal wieder, dass man beim Übernehmen von gut gemeinten Ratschlägen immer Vorsicht walten lassen sollte. Gerade wenn der entsprechende Beitrag nicht durch ein Peer-Review gegangen ist sollte man immer ein bisschen Skepsis beibehalten…

commandlinefu.com

Autor: Christoph

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

16 Kommentare

  1. Das ist eines der größten Nachteile von Kommandozeilen-Anleitungen. Solange alles funktioniert, gut. Aber vor allem Neulinge handeln fahrlässig und wissen meist gar nicht, was sie wirklich tun … und durch einen Fehler oder durch eine mutwillig böse Anleitung ist – schwups – das System weg.

    Gruß Valentin

    • Das Dramatische hier ist, dass der Nutzer beim Öffnen des Terminals meist im eigenen Homeverzeichnis ist und dieses durch den Befehl geleert wird. Betriebssysteme kann man neuinstallieren. Bei Homeverzeichnissen wird es eher schwierig.

      • Immerhin hat das Peer-Review schnell geklappt. Fehler erkannt, gewarnt, entfernt und gegen den korrekten Ansatz ausgetauscht. Genauso soll es funktioniert, nur so kann es funktionieren. Irgendwelche Helden wird es immer geben, die meinen sowas veröffentlichen zu müssen.

  2. Wofür steht denn das ! ?

    Weiß ja nicht jeder.

    • Genau das ist ja das Problem! Nicht jeder weiß, dass das Ausrufezeichen hier für Negation steht („alle außer“) und kann sich so die Gefahr des Befehls denken.

      • In welcher Shell steht das „!“ denn für Negation? Ich kenne das nur um den letzten Shellbefehl wieder herzustellen ‚!-1‘. Oder um mit „history“ die Nummer eines Befehls herauszubekommen, welcher dann mit „!200“ zum Beispiel wieder ausgeführt wird.
        Sowohl mit der zsh als auch mit der bash konnte ich nicht nachvollziehen, dass bei dem angesprochenen Befehl irgendeine Datei gelöscht wurde.

        • In der Bash steht das wirklich für Negation. Du musst hier differieren zwischen einem Bashinternen Befehl und einem Arithmetischen Operator wie dem !. Auszug aus der Doku:

          !, ~ Logical negation, bitwise negation

          In diesem Fall ist es richtig das rm -rf !(expression) alles ausser dem Ausdruck, also dem Bild, löscht, da Ausdrücke in Runden Klammern stehen. Genauso richtig müsste eigentlich rm -rf (test[0-9].jpg) sein (kann das gerade nicht prüfen), das sollte die Dateien test0.jpg bis test9.jpg löschen. Negiere ich das mit dem !, löscht rm alles bis auf die test0.jpg-test9.jpg.

          Kleine Fehler können ein System schon ganz schön kaputtmachen ;)
          Und früher haben scherzbolde einfach ein sudo rm -rf / getarnt und den Leuten untergeschoben. Wer eben kein Hobby hat… :)

  3. Kenne die meisten Befehle unter Linux gar nicht und arbeite deswegen nicht wirklich gerne mit der Konsole…Vllt. machst Du mal eine Anleitung wie man sich das Homer Verzeichnis am einfachsten sichert?
    Aber eine einfache Kopie des Verzeichnis auf einen externen Datenträger sollte doch genügen, oder?

    • Da viele externe Datenträger FAT32-formatiert sind und daher nicht das Rechtesystem von Linux abbilden können, empfiehlt es sich das Home-Verzeichnis .tar.gz-komprimiert zu speichern. So bleiben die Rechte erhalten und man spart auch etwas Speicherplatz. Pro-Tipp: Immer mindestens zwei Backups herstellen, auf unterschiedlichen Datenträgern und an unterschiedlichen Orten. Wenn ein Datenträger entweder Fehlerhaft ist oder zerstört wird, ist der andere dann nicht betroffen.

    • Hm, also ich verwendet das Programm “back in time”, liegt mittlerweile jeder Linux Distribution bei.

      Kauf dir eine externe Festplatte, formatiere Sie auf ein Linuxformat wie ext3 oder ext4, und binde die Platte ins Programm als Sicherungslaufwerk ein. Dauert dich 5 min. und du hast ein ähnliches Programm wie Timemachine unter Mac OS X.

      @Funatiker
      Du weißt wie unsicher deine Methode ist? Sobald ein Bit auf dem Datenträger defekt ist, ist alles verloren. Zwei Sicherungen in Ehren, aber unkomprimierte Sicherungen sind sicherer. Mir ist schon mehr als ein Band gerissen, ein Glück das ich nicht nur auf Bandsicherung setze.

      • OK. bei mir ist es aber so, das ich wirklich bis jetzt noch kein festen Platz für meinen Rechner habe, also mal hier mal hier abstellen& Surfen/Usen.
        Auf Fedora15 ist DejaDup drauf..werde mir mal BackInTime suchen/installieren-sollte nämlich unbedingt nochmal ein BackUp machen. Thanks

  4. Hi

    Denke, es wäre am Sinnigsten gewesen, wenn man am Anfang des Snippet ein Unterverzeichnis erstellt und in Dieses gewechselt hätte. Dann hätte der rm-Befehl auch den Sinn, den der Maches des Script sich dabei dachte: Temp-Files entfernen, daß nur noch das erstellte Bild über bleibt.

    Man sollte zumindest VORHER versuchen zu ergründen, was der Befehl macht – zur Not hilft ‘man’ und Nachfragen.

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.