UnixTools01 03
Files, Directorie, Working Directory
Auf einem Computer gibt es tausende Dateien, die sich in Verzeichnissen befinden, die sich selbst auch wieder in Verzeichnissen befinden können.
Eine Datei info.txt', die sich in einem Verzeichnis b befindet, dass sich selbst in einem Verzeichnis a befindet, wird als /a/b/info.txt geschrieben. Man nennt dies auch den vollständigen Namen der Datei. (dass es sich um einen vollständigen Namen handelt erkennen wir daran, dass er mit einem / beginnt).
Ihre Shell hat zu jedem Zeitpunkt ein einziges Verzeichnis ganz besonders im Augo - das sogenannte Working Directory.Wenn Sie sich frisch angemeldet haben (login), ist dieses "auserwähöte Directory"" (Working Directory) ihr Home Directory. Das ist ein Verzeichnis, das der Systemadminstrator speziell für Sie angelegt hat, für Ihre Daten. Andere Nutzer werden andere Verzeichnisse haben, damit man sofort sieht, welche Dateien zu wem gehören.
pwd
Um den Namen des Working Directories zu erfahren, benutzen Sie das Kommando pwd (Pint Wirking Directory)
gruenau4 jpr 1 ( ~ ) $ pwd /vol/home-vol1/unixsoft/jpr
Wenn Sie dies unmittelbar nach dem Anmelden (login) tun, dann erfahren Sie also den Namen ihres Home Directories.
Der Name des Working Directories ist übrigens immer ein vollständiger Name, was wir daran erkennen, dass er mit / beginnt.
cd my_directory =
Während Sie ihr Home Directory nicht ändern können (es ist einfach dasjenige Verzeichnis, in dem ihre Daten liegen), kann die Shell das Verzeichnis, das sie gerade im Auge hat, also das Working Directory, ändern. Dazu verwenden wir das Kommando cd (Change Directory) und geben gleich danach, als Argument, den Namen des neuen Working Directories an.
gruenau4 jpr 1 ( ~ ) $ cd /vol/home-vol1/unixsoft/medvediu/
gruenau4 jpr 2 ( medvediu ) $ pwd /vol/home-vol1/unixsoft/medvediu
Gleich danach können wir, wie zuvor, mit pwd den Namen des neuen Working Directories ermitteln. Tipp: Achten Sie auf den Prompt der Shell! Dort finden Sie vielleicht einen Hinweis darauf, dass Sie jetzt ein anderes Working Directory haben.
Die Bedeuting von ~
Dieser Hinweis, dass der Promt der Shell uns einen Hinweis auf das aktuelle Working Directory gibt (nur einen Hinweis, nicht den vollständigen Namen), bringt uns zu der Frage, warum am Anfang, gleich nach dem Anmelden (login), dort ~. Das ist kein Fehler. Das Zeichen ~ steht stellvertretend für den vollständigen Namen von Ihrem Home Directory. Es ist also egal, ob Sie ~, oder den vollen Namen von Ihrem Home Directory schreiben, es bedeutet dasselbe, * ist nur einfach kürzer und bequemer. Warum diese Regel? Sie werden sehen, dass Sie den NAmen Ihres Home Directories immerzu eingeben werden, es ist schließlich der Ort, an dem sich Ihre Dan befinden. Da ist es ungemein praktisch, wenn Sie das mit einem Zeichen, ~, abkürzen können.
Alles verstanden? Dann verstehen Sie auch, was das folgende Kommando macht
gruenau4 jpr 3 ( medvediu ) $ cd ~ gruenau4 jpr 4 ( ~ ) $ pwd /vol/home-vol1/unixsoft/jpr
Richtig, es ändert das Working Directory ... das neue Working Directory ist wieder ihr Home Directory (das Verzeichnis, in dem sich ihre persönlichen Daten befinden), so, wie es ganz am Anfang, nach dem login war.
ls
Das Kommando ls (LiSt) zeigt Ihnen, welche Dateinen und vielleicht auch Verzeichnisse sich in ihrem aktuellen Working Directory befinden.
- gehen Sie mit 'cd /vol/home-vol1/unixsoft/jpr' zum Verzeichnis vol/home-vol1/unixsoft/jpr (das ist Jargon dafür, dass sie der Shell sagen, dass das Working Directory ab sofort /vol/home-vol1/unixsoft/jpr sein soll)
- führen Sie das Kommando ls aus
- jetzt werden Ihnen alle Dateien gezeigt, die sich im Verzeichnis /vol/home-vol1/unixsoft/jpr befinden (weil /vol/home-vol1/unixsoft/jpr aktuell das Working Directory ist).
- gehen Sie jetzt mit 'cd /vol/home-vol1/unixsoft/medvediu' zum Verzeichnis /vol/home-vol1/unixsoft/medvediu
- führen Sie das Kommando ls aus
- jetzt werden Ihnen alle Dateien gezeigt, die sich im Verzeichnis /vol/home-vol1/unixsoft/medvediubefinden (weil /vol/home-vol1/unixsoft/medvediuaktuell das Working Directory ist).
gruenau4 jpr 10 ( ~ ) $ ls archive.tar ks-db old-sftp projects sftp sftp-old pass
Falls Sie nicht ständig ihr Working Directory ändern wollen, kännen Sie dem Kommando ls auch gleich (als Argument) sagen, von welchem Verzeichnis Sie sich den Inhalt zeigen lassen wollen
gruenau4 jpr 11 ( ~ ) $ ls /vol/home-vol1/unixsoft/medvediu bin mydata olddata university homeworks
ls -l
Das Kommando ls kennt eine Vielzahl von Optionen. Optionen beginnen mit einem - und sind dadurch von anderen Argumenten (wie zum Beispiel Dateinamen) unterscheidbar. Die Option '-l' (l = long) veranlasst ls, etwas mehr Informationen über den Inhalt eines verzeichnisses auszugeben
gruenau4 jpr 11 ( ~ ) $ cd /vol/home-vol1/unixsoft/jpr gruenau4 jpr 12 ( ~ ) $ ls -l insgesamt 21670 -rw------- 1 jpr unixsoft 22087680 23. Jul 22:09 archive.tar drwx------ 2 jpr unixsoft 3 17. Sep 15:04 ks-db drwx------ 9 jpr unixsoft 9 25. Apr 2024 old-sftp drwx------ 4 jpr unixsoft 4 17. Sep 15:06 projects drwx------ 2 jpr unixsoft 2 4. Okt 05:15 sftp drwx------ 9 jpr unixsoft 9 11. Mai 2024 sftp-old drwx------ 2 jpr unixsoft 36 5. Mai 2024 pass
In diesem Verzeichnis gibt es 7 Dinge, das erste (archive,tar) ist eine Datei, alles andere sind Verzeichnisse. Der Name steht jeweils am Ende. An dem 'd' ganz am Anfang sehen wir, dass essich um ein Verzeichnis handelt (wäre es eine Datei, würde dort '-' stehen, so wie in der ersten Zeile, für die Datei archive,.tar) Unmittelbar vor dem Namen befindet sich eine Zeitangabe,m wann diese Datei (oder dieses Verzeichnis) das letzte mal verändert wurde. Davor befindet sich die Angabe der Länge. Den Rest werden wir uns später genauer ansehen.
Die Veriechnisse .. und .
Möchten Sie im aktuellen Verzeichnis ein Verzeichnis zurück gehen, können Sie 'cd .. eingeben:
gruenau4 jpr 13 ( ~ ) $ pwd /vol/home-vol1/unixsoft/jpr gruenau4 jpr 14 ( ~ ) $ cd .. gruenau4 jpr 15 ( unixsoft ) $ pwd /vol/home-vol1/unixsoft
Nein, das ist keine Magie. In jedem Verzeichnis gibt es nämlich zusätzlich zu dem, was ls ihnen standardmäßig anzeigt, noch weitere Einträge, zum Beispiel
- '..' ist ein Name für das Vorgänger-Verzeichnis
- '.' ist ein Name für das aktuele Verzeichnis
Normalerweise (ohne spezielle Aufforderung) zeigt uns ls keine Einträge, deren Namen mit . anmfangen. Rufen wir ls mit der Option -a (a = all) auf, sehen wir alles, also auch die Einträe, deren NAmen mit . beginnen.
gruenau4 jpr 17 ( ~ ) $ ls -l -a insgesamt 21961 drwx------ 35 jpr unixsoft 58 23. Nov 17:49 . drwxr-xr-x 25 root unixsoft 25 17. Jun 16:59 .. -rw------- 1 jpr unixsoft 0 14. Jun 2012 .addressbook drwx------ 2 jpr unixsoft 2 13. Okt 2020 .android -rw------- 1 jpr unixsoft 22087680 23. Jul 22:09 archive.tar -rw------- 1 jpr unixsoft 228 23. Nov 17:01 .bash_history -rw-r--r-- 1 jpr unixsoft 476 14. Jun 2012 .bash_login -rw-r--r-- 1 jpr unixsoft 8836 14. Jun 2012 .bashrc drwx------ 10 jpr unixsoft 11 13. Okt 2020 .config -rw-r--r-- 1 jpr unixsoft 5471 14. Jun 2012 .cshrc drwx------ 6 jpr unixsoft 6 16. Okt 2019 .eclipse -rw------- 1 jpr unixsoft 71 21. Mai 2019 .gitconfig drwx------ 2 jpr unixsoft 2 19. Aug 2013 .gnome2 -rw------- 1 jpr unixsoft 0 24. Feb 2024 .history drwxr-xr-x 2 jpr unixsoft 5 14. Jun 2012 .inits drwx------ 4 jpr unixsoft 4 13. Okt 2020 .java drwx------ 3 jpr unixsoft 3 19. Aug 2013 .kde drwx------ 3 jpr unixsoft 6 19. Aug 2013 .kde4 drwx------ 2 jpr unixsoft 3 17. Sep 15:04 ks-db -rw-r--r-- 1 jpr unixsoft 4971 14. Jun 2012 .kshrc -rw------- 1 jpr unixsoft 33 30. Jul 05:38 .lesshst drwxr-xr-x 4 jpr unixsoft 4 21. Mai 2024 .local drwx------ 3 jpr unixsoft 3 16. Okt 2019 .m2 drwx------ 9 jpr unixsoft 10 21. Mai 2019 .Mathematica drwx------ 5 jpr unixsoft 5 4. Mär 2021 .mozilla -rw-r--r-- 1 jpr unixsoft 1915 14. Jun 2012 .mutt_certificates -rw-r--r-- 1 jpr unixsoft 103248 14. Jun 2012 .muttrc drwx------ 9 jpr unixsoft 9 25. Apr 2024 old-sftp -rw-r--r-- 1 jpr unixsoft 25774 14. Jun 2012 .pinerc -rw-r--r-- 1 jpr unixsoft 5603 14. Jun 2012 .profile drwx------ 4 jpr unixsoft 4 17. Sep 15:06 projects drwx------ 2 jpr unixsoft 13 4. Mär 2021 .pulse -rw------- 1 jpr unixsoft 256 19. Aug 2013 .pulse-cookie drwxr-xr-x 2 jpr unixsoft 17 12. Dez 2012 .razor drwx------ 2 jpr unixsoft 2 4. Okt 05:15 sftp drwx------ 9 jpr unixsoft 9 11. Mai 2024 sftp-old drwx------ 2 jpr unixsoft 7 27. Feb 2024 .spamassassin drwx------ 2 jpr unixsoft 4 10. Sep 22:23 .ssh -rw-r--r-- 1 jpr unixsoft 10753 14. Jun 2012 .tcshrc drwx------ 3 jpr unixsoft 3 16. Okt 2019 .tooling drwx------ 2 jpr unixsoft 3 5. Mär 2021 .vim -rw------- 1 jpr unixsoft 35662 10. Sep 11:07 .viminfo -rw------- 1 jpr unixsoft 239 28. Dez 2022 .wget-hsts -rw------- 1 jpr unixsoft 622 23. Nov 17:49 .Xauthority drwx------ 2 jpr unixsoft 36 5. Mai 2024 y-pass
Ganz schön viel? Ja, und das meiste davon interessiert uns (zur Zeit) überhaupt icht. Es ist also eine gute Verabredung, dass uns ls mit all den Dingen, deren Namen mit '.' anfämgt, nicht belästigt.
Dass ls diese Namen nicht anzeigt bedeutet nicht, dass wir sie nicht verwenden können, Wir können sie verwenden, wie alle anderen Namen auch. Un ddie Namen . (für das aktuelle Verzeichnis) und .. gibt es tatsächlich. Also können wir Sie verwenden
Wo sind wir gerade?
gruenau4 jpr 18 ( ~ ) $ pwd /vol/home-vol1/unixsoft/jpr
cd . geht is aktuelle Verzeichnis, es ändert sich also nichts
gruenau4 jpr 19 ( ~ ) $ cd . gruenau4 jpr 20 ( ~ ) $ pwd /vol/home-vol1/unixsoft/jpr
cd .. geht ein Verzeichnis zurück
gruenau4 jpr 21 ( ~ ) $ cd .. gruenau4 jpr 22 ( unixsoft ) $ pwd /vol/home-vol1/unixsoft