Basics 1 Man kann in Persönlicher Ordner recht gut mit Dateien umgehen. Aber wenn es den Systembereich betrifft funktioniert das alles auf einmal nicht mehr so einfach. Es kann nicht schaden sich einmal anzuschauen wie man mit dem Terminal arbeiten kann.Es ist in Debian entscheidend ob in einem Namen ein Buchstabe klein oder groß geschrieben wird - home oder Home oder hoMe sind verschiedene Namen. Da in der Regel Systemdateien mit Kleinbuchstaben geschrieben werden ist es vorteilhaft bei Dateien in Persönlicher Ordner auch Großbuchstaben zu verwenden. Zunächst sollen in Persönlicher Ordner einige Beispiel-Files angelegt werden. Ordner können mit mkdir erstellt werden. Man ruft das Terminal auf. |
mkdir ~/Bla |
Man fügt die
Zeichenfolge aus dem weißen Feld bei dem
blinkenden Cursor des Terminals ein (natürlich kann man diese
Zeichenfolge auch eintippen - im Terminal kann man durch Drücken der
Taste "Bild nach unten" das Zeichen ~ schreiben) - dann drückt man die
Eingabetaste. Dann drückt man die Taste "Pfeil nach oben" (und ruft damit den zuvor eingegebenen Befehl auf) und ergänzt den Text durch /Nur |
mkdir ~/Bla/Nur |
und drückt die Eingabetaste. Dann drückt man die Taste "Pfeil nach oben" (und ruft damit den zuvor eingegebenen Befehl auf) und ergänzt den Text durch /BlaBla |
mkdir ~/Bla/Nur/BlaBla |
und drückt die Eingabetaste. Damit hat man in ~/ (also der Persönlicher Ordner) einen Ordner Bla erzeugt, in diesem einen Unterordner Nur und in diesem wiederum einen Unterordner BlaBla. Man hätte diese 3 Ordner auch gleichzeitig mit einem Befehl erzeugen können mkdir -p ~/Bla/Nur/BlaBla Nun kann man Text-Dateien erzeugen, z.B. mit dem Editor nano |
nano ~/Bla/Nur/BlaBla/Tor.txt |
Man fügt die
Zeichenfolge aus dem weißen Feld bei dem
blinkenden Cursor des Terminals ein - dann drückt man die
Eingabetaste. Der Editor nano öffnet sich und es steht in der
Titelzeile der Pfad und Name der neuen Datei GNU nano 2.2.6 Datei: /home/abc/Bla/Nur/BlaBla/Tor.txt |
Diese Datei wurde mit dem Editor nano erstellt. |
Man fügt die
Zeichenfolge aus dem weißen Feld bei dem
blinkenden Cursor des Editors ein. Dann drückt man zum Abspeichern gleichzeitig Strg und O dann drückt man die Eingabetaste um den Dateinamen zu bestätigen dann drückt man zum Verlassen des Editors gleichzeitig Strg und X. Oder man nimmt den Editor gedit |
gedit ~/Bla/Nur/BlaBla/Zaun.txt |
Man fügt die
Zeichenfolge aus dem weißen Feld bei dem
blinkenden Cursor des Terminals ein - dann drückt man die
Eingabetaste. Eine Info-Ausgabe kann man ignorieren - jedenfalls öffnet
sich der Editor gedit und im Titelfeld wird der Pfad und der Name der
neuen Datei angezeigt Zaun.txt ~/Bla/Nur/BlaBla Hier kann man hineinschreiben oder hineinkopieren |
Diese Datei wurde mit gedit erstellt. |
Das speichert man ab und
schließt gedit. Damit wurden in dem Ordner ~/Bla/Nur/BlaBla zwei Textdateien erzeugt die man im Dateisystem mit Doppelklick öffnen kann. |
Man kann Dateien kopieren mit cp. |
cp ~/Bla/Nur/BlaBla/Zaun.txt ~/Bla |
Im Terminal eingeben und
Eingabetaste drücken. Am Anfang steht die Datei die kopiert werden soll,
danach steht der Ordner in den diese kopiert werden soll.
Damit existiert im Ordner ~/Bla jetzt auch eine Datei Zaun.txt neben dem Ordner Nur Die Erweiterung cp -i bewirkt daß vor dem Überschreiben einer vorhandenen Datei nachgefragt wird. Man kann es ausprobieren indem man im Terminal die Taste "Pfeil nach oben" drückt (um den vorherigen Befehl aufzurufen), dann mit der Taste "Pfeil nach links" bis hinter cp springt und -i ergänzt, dann mit der Taste "Pfeil nach rechts" zum Ende des Textes springt und die Eingabetaste drückt (durch gleichzeitiges Drücken der Tasten Strg und A oder Strg und E kann man schnell an den Anfang oder das Ende einer Eingabe springen). Es erscheint im Terminal eine Nachfrage cp: "/home/abc/Bla/Zaun.txt" überschreiben? Jetzt kann man Taste j drücken und Eingabetaste um das Überschreiben zu veranlassen, oder Taste n drücken und Eingabetaste um den Vorgang abzubrechen. Man kann eine Datei kopieren und mit einem anderen Namen abspeichern |
cp ~/Bla/Nur/BlaBla/Zaun.txt ~/Bla/Nur/BlaBla/Wiese.txt |
Im Terminal eingeben und
Eingabetaste drücken. Man kann mit dem Zusatz -s eine Verknüpfung anlegen. |
cp -s ~/Bla/Nur/BlaBla/Tor.txt ~/Bla |
Im Terminal eingeben und
Eingabetaste drücken. Man kann mit dem Zusatz -s eine Verknüpfung anlegen unter anderem Namen |
cp -s ~/Bla/Nur/BlaBla/Tor.txt ~/Bla/Gras.txt |
Im Terminal eingeben und
Eingabetaste drücken. Man kann einen Hardlink erzeugen |
ln ~/Bla/Nur/BlaBla/Wiese.txt ~/Bla |
Im Terminal eingeben und
Eingabetaste drücken. Man kann einen Hardlink erzeugen unter anderem Namen |
ln ~/Bla/Nur/BlaBla/Wiese.txt ~/Bla/Blume.txt |
Im Terminal eingeben und
Eingabetaste drücken. Nun kann man sich im Dateisystem anschauen was passiert ist. |
Eigentlich kennt man die Situation, die beiden Dateien ~/Bla/Nur/BlaBla/Zaun.txt ~/Bla/Zaun.txt haben zwar den gleichen Namen, aber sie liegen in verschiedenen Ordnern und sind voneinander unabhängige Dateien. Die Änderung einer dieser Dateien wirkt sich nicht auf die andere Datei gleichen Namens aus. Die beiden Dateien ~/Bla/Gras.txt ~/Bla/Tor.txt sind Verknüpfungen (das Symbol zeigt dies auffällig) die auf die Originaldatei ~/Bla/Nur/BlaBla/Tor.txt verweisen und diese beim Doppelklicken auf die Verknüpfung öffnen. Wird diese Original-Datei gelöscht so laufen diese Verknüpfungen ins Leere. Löschen im Terminal erfolgt mit rm (hier mit Zusatz -i um eine Nachfrage zu erhalten) |
rm -i ~/Bla/Nur/BlaBla/Tor.txt |
Im Terminal eingeben und
Eingabetaste drücken. Es erscheint eine Nachfrage rm: reguläre Datei "/home/abc/Bla/Nur/BlaBla/Tor.txt" entfernen? Jetzt kann man Taste j drücken und Eingabetaste um das Entfernen zu veranlassen, oder Taste n drücken und Eingabetaste um den Vorgang abzubrechen. Hier soll die Datei entfernt werden und wir tippen j und Eingabetaste. Ein Doppelklick auf die Verknüpfungen im Dateisystem öffnet ein leeres Fenster das nicht beschrieben werden kann - dies liegt an der Endung .txt die dem System vorgaukelt daß es eine Textdatei gibt. Eine Umbenennung von Gras.txt zu Gras und ein Doppelklick würde zu folgender Ausgabe führen. |
Die Verknüpfungen sind wertlos geworden. Wie sieht es aber jetzt mit der Datei ~/Bla/Nur/BlaBla/Wiese.txt aus. Man kann im angegebenen Ordner einen Doppelklick auf diese Datei machen und weiteren Text hinzufügen. |
Nach dem Abspeichern schließt man diese Datei. Wenn man jetzt die Dateien ~/Bla/Blume.txt ~/Bla/Wiese.txt öffnet so sieht man daß diese Dateien ebenfalls geändert wurden (obwohl sie nicht als Verknüpfung gekennzeichnet sind und in einem anderen Ordner liegen). Erzeugt wurden diese beiden Dateien ursprünglich von ~/Bla/Nur/BlaBla/Wiese.txt die jetzt gelöscht werden soll |
rm ~/Bla/Nur/BlaBla/Wiese.txt |
Im Terminal eingeben und
Eingabetaste drücken. Diesmal das Löschen ohne Sicherheitsabfrage. Ruft man jetzt ~/Bla/Blume.txt auf so ist der Inhalt der "Originaldatei" immer noch vorhanden. Es wird jetzt weiterer Text dazugeschrieben. |
Nach dem Abspeichern
schließt man die Datei. Der Aufruf von ~/Bla/Wiese.txt
zeigt ebenfalls den (in Blume.txt) geänderten Text. Wie ist das möglich? Für jede Datei gibt es eine Inode-Nummer die genau angibt wo auf der Festplatte in welchen Speicherbereichen die Daten abgelegt werden. Diese Inode enthält auch noch Informationen über Zugriffsrechte, Dateigröße, Datum. Man kann sich vorstellen, daß die Inode auf der Festplatte eine Grenze zieht innerhalb der die Daten gespeichert werden und die die Daten von anderen Dateien fernhält. Man kann sich die Inode-Nummer anzeigen lassen, z.B. für die Dateien aus dem Ordner ~/Bla |
Am Anfang jeder Zeile steht die Inode-Nummer der am Ende der Zeile benannten Datei. Man kann vielleicht sagen, daß die Inode-Nummer der eigentliche Name einer Datei ist. Wenn die Inode Nummer gleich ist dann ist es eben die gleiche Datei. Hier hat Blume.txt und Wiese.txt die gleiche Inode-Nummer. Eine anschauliche Darstellung: |
Die Abbildung zeigt auch was
passiert wenn man jetzt zwei neue Dateien mit den früheren Namen
erzeugt: ~/Bla/Nur/BlaBla/Wiese.txt ~/Bla/Nur/BlaBla/Tor.txt Da die neue ~/Bla/Nur/BlaBla/Wiese.txt eine andere Inode-Nummer besitzt ist diese völlig unabhängig von den Dateien im Ordner ~/Bla. Aber die Verknüpfungen auf die gelöschte alte ~/Bla/Nur/BlaBla/Tor.txt funktionieren jetzt wieder und öffnen die neue Datei mit dem Namen der alten Datei - der Verweis der Verknüpfungen geht auf den Namen und nicht auf die Inode-Nummer. Auch wenn die Inode-Nummer der eigentliche Name einer Datei ist, fehlt einem Menschen der Nummern-Durchblick und schon gar die Übersicht über die Nummern-Zuordnungen. Daher gibt es auf dem Computer ein Inhaltsverzeichnis das einer Inode-Nummer einen verständlichen (oder auch nicht) Namen zuordnet und einen Pfad, der ähnlich wie ein Straßenverzeichnis Ordnung in die Lage der Häuser einer Stadt gibt. Name und Pfad sind nicht in der Inode hinterlegt und das hat ganz entscheidende Vorteile. Bei Namensänderung einer Datei oder der Verschiebung einer Datei in einen anderen Ordner oder dem Kopieren einer Datei in einen anderen Ordner werden nur die Einträge im Inhaltsverzeichnis geändert - die Daten auf der Festplatte werden nicht geändert. Damit gehen diese Änderungen sehr schnell - wird die Datei aber z.B. auf einen USB-Stick übertragen so müssen alle Daten umziehen und es dauert viel länger. Bei einem Hardlink wird im Inhaltsverzeichnis nur ein weiterer Eintrag für die bestehende Inode-Nummer vergeben. Man kann sich anschauen welche Namen und Pfade für eine Inode-Nummer in dem Inhaltsverzeichnis hinterlegt sind, z.B. innerhalb von ~/ also dem Persönlicher Ordner |
find ~/ -xdev -inum 261524 |
Im Terminal eingeben und
Eingabetaste drücken. Dies ergibt abc@777:~$ find ~/ -xdev -inum 261524 /home/abc/Bla/Blume.txt /home/abc/Bla/Wiese.txt Man kann Dateien über die Inode-Nummer löschen |
find ~/ -xdev -inum 261524 | xargs rm |
Im Terminal eingeben und
Eingabetaste drücken. Die Dateien ~/Bla/Blume.txt und ~/Bla/Wiese.txt wurden damit gleichzeitig gelöscht. Was ist bei dieser Löschung passiert. Es wurden im Inhaltsverzeichnis die entsprechenden Einträge entfernt - also die Zuordnung von Inode zu Dateiname und Pfad. Alle auf dem Bildschirm sichtbaren Dateien sind dort nur sichtbar weil es die Zuordnung von Inode zu dem Namen und Pfad im Inhaltsverzeichnis gibt. Die Daten der "gelöschten" Datei liegen aber weiterhin auf der Festplatte und sind lediglich zum Überschreiben freigegeben worden. Könnte man nicht durch Kenntnis der Inode-Nummer diese Daten wieder in einer Datei mit neuem Namen hervorholen? Bei dem früher verwendeten Dateisystem ext2 war dies möglich. Aber bei dem heutigen Dateisystemen ext4 werden beim Löschvorgang auch die Hinweise auf die Speicherblöcke der Inode entfernt und damit ist die Nummer der Inode wertlos geworden. Aber da die Daten immer noch auf der Festplatte liegen (sofern diese nicht überschrieben wurden) kann man andere Möglichkeiten der Datenrettung versuchen - extundelete ist ein solches Programm das gelöschte Dateien unter ext3 und ext4 wiederherzustellen versucht. Trotzdem ist die Datenrettung nicht unbedingt von Erfolg gekrönt und da es keine Namen mehr gibt kann die Suche in den Speicherblöcken sehr lange dauern. Als Fazit kann man sagen daß mit dem Löschen von Dateien durch rm sehr bedacht umgegangen werden sollte - man kann die gelöschten Dateien nicht mehr aus dem Papierkorb hervorholen (wenn man einen Baum fällt kann man diesen auch nicht wieder einfach erscheinen lassen). Und es ist wertvoll die persönlichen Daten immer wieder einmal zu sichern, z.B. durch Kopieren auf einen USB-Stick. Das Löschen mit rm kann auch sehr hilfreich sein. So legt Debian in dem versteckten Ordner ~/.cache/thumbnails/ von jedem auf dem Bildschirm gezeigten Bild ein Vorschaubild im png-Format an. Mit der Zeit wächst die Anzahl dieser Vorschaubilder auf mehrere Tausend an, bei mir besonders in dem Unterordner large. Diese Vorschaubilder beschleunigen die Anzeige von Dateien, aber es häufen sich mit der Zeit viele unnötige Vorschaubilder an. Wenn man diese png-Bilder löscht wird Debian wieder von vorne anfangen diese anzulegen, was die Anzeige der Dateien zunächst etwas verlangsamt. Aber man hat auch viel Müll von Vorschaubildern entfernt die nie mehr gebraucht werden. Öffnet man jetzt den Ordner ~/.cache/thumbnails/large/ und markiert etwa Hundert dieser Vorschaubilder und verschiebt diese in den Papierkorb, so braucht das System für diese Aufgabe schon etwas Zeit. Auch das anschließende Löschen des Papierkorbes braucht wieder Zeit. Und schließlich sind es Tausende. Mit rm geht dieses Löschen ganz schnell rm -v -f ~/.cache/thumbnails/large/*.png Und es gibt weitere Stellen an denen man über ein Löschen nachdenken kann. So gibt es in den Systemeinstellungen unter Datenschutz den Eintrag "Papierkorb und temporäre Dateien leeren" Man kann auf diesen Text klicken und es öffnet sich ein Zusatzfenster. Alles sollte abgespeichert sein und Anwendungen sollten geschlossen sein - dann kann man "Temporäre Dateien löschen". Die Verwendung der Chronik ist eine tolle Sache - bei Persönlicher Ordner unter "Zuletzt verwendet" oder in LibreOffice wenn man das Dateifenster schließt ohne LibreOffice zu beenden. Aber vielleicht hat man doch an Dateien gearbeitet die nicht unbedingt sofort in der Chronik ins Auge springen sollten. Da gibt es den Eintrag "Verwendung und Chronik" Man kann auf diesen Text klicken und es öffnet sich ein Zusatzfenster. |