UnixTools01 03

From
Revision as of 17:40, 23 November 2024 by Jpr (talk | contribs)
Jump to navigation Jump to search

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