HOWTO zu Unix-Entitäten

(C) 2006-2023 T.Birnthaler/H.Gottschalk <howtos(at)ostc.de>
              OSTC Open Source Training and Consulting GmbH
              www.ostc.de

$Id: unix-entities-HOWTO.txt,v 1.11 2019/11/26 19:37:07 tsbirn Exp $

Dieses Dokument beschreibt die Entitäten des Betriebssystems UNIX.

Inhaltsverzeichnis

1) Namen unter UNIX
2) Anmerkungen
3) Beispiele für Namen

1) Namen unter UNIX   (Toc)

UNIX ist nicht grafisch orientiert, sondern kommando-orientiert. D.h. man
benötigt ständig "Namen" für irgendwelche "Dinge", die man verwenden möchte.

Ein Problem unter UNIX ist dabei, herauszubekommen, wofür ein Name (z.B. "xyz")
steht. Da Namen fast immer klein geschrieben werden (außer bei Variablen),
Dateinamen-Extensions analog Windows (z.B. ".exe", ".com", ".txt") kaum
verwendet werden und die UNIX-Namen anfangs noch recht ungewohnt sind, dauert
es eine Weile, bis man zurecht kommt (und vor allem eine gewisse "Intuition"
entwickelt).

Ein NAME kann im Prinzip für eine der folgenden Entitäten stehen:

  +----------+----------------------------------------------------------------+
  | Entität  | Bedeutung                                                      |
  +----------+----------------------------------------------------------------+
  | DATEI    | Zusammenfassung beliebiger Daten/Informationen                 |
  |          | (z.B. "gedicht", Text, Skript, Programm, Datenliste, ...)      |
  | VERZ     | Liste von Datei- und Verzeichnis-Namen (z.B. "/tmp")           |
  | VAR      | Variable (Parameter), enthält einen "Wert" (z.B. $PATH, $HOME) |
  | BUILTIN  | In Shell direkt eingebautes Kommando (z.B. "cd", "pwd", "set") |
  | ALIAS    | Kommando-Abkürzung, Miniskript (z.B. c=clear, ll="ls -l")      |
  | FUNKTION | Analog Alias, aber leistungsfähiger (Parameter möglich)        |
  | KMDO     | Ausführbares Binär-Programm (z.B. "ls", "ps")                  |
  | SKRIPT   | Meist eine Zusammenfassung von Shell-Kommandos                 |
  | GERÄT    | DATEI für Hardware, Zugriff meist eingeschränkt (device)       |
  +----------+----------------------------------------------------------------+

Je nach Entitäts-Typ sind UNTERSCHIEDLICHE Kommandos notwendig, um die
entsprechende Entität zu verwenden bzw. zu bearbeiten:

  +------------+----------------+---------------+-------------+---------------+
  | Operation  |     Datei      |  Verzeichnis  |  Variable   |   Alias       |
  +------------+----------------+---------------+-------------+---------------+
  | Anlegen    | touch DATEI    | mkdir VERZ    | VAR="Text"  | alias \       |
  |            | vi DATEI... :wq|               |             | NAME="ERSATZ" |
  +------------+----------------+---------------+-------------+---------------+
  | Löschen    | rm DATEI       | rmdir VERZ    | unset VAR   | unalias NAME  |
  |            |                | rm -r VERZ    | VAR=        |               |
  +------------+----------------+---------------+-------------+---------------+
  | Anzeigen   | more DATEI     | ls VERZ       | echo $VAR   | alias NAME    |
  |            | less DATEI     | ll VERZ       | env (TEIL!) | alias (ALLE!) |
  |            | cat DATEI      | ls -R VERZ    | set (ALLE!) |               |
  |            | vi DATEI       | ls -ld VERZ   |             |               |
  +------------+----------------+---------------+-------------+---------------+
  | Öffnen     | KMDO DATEI     | ---           | ---         | ---           |
  |            | vi DATEI       |               |             |               |
  +------------+----------------+---------------+-------------+---------------+
  | Ausführen  | chmod a+x DATEI| cd VERZ       | $VAR        | NAME          |
  |            | PATH=$PATH:... |               |             |               |
  |            | DATEI          |               |             |               |
  |            | ./DATEI        |               |             |               |
  |            | /PFAD/ZU/DATEI |               |             |               |
  +------------+----------------+---------------+-------------+---------------+
  | Kopieren   | cp DATEI NEU   | cp -r VERZ NEU| NEU=$VAR    | alias NEU=NAME|
  +------------+----------------+---------------+-------------+---------------+
  | Verschieben| mv DATEI VERZ  | mv VERZ VERZ2 | ---         | ---           |
  +------------+----------------+---------------+-------------+---------------+
  | Umbenennen | mv DATEI NEU   | mv VERZ NEU   | Kop.+Löschen| Kop.+Löschen  |
  +------------+----------------+---------------+-------------+---------------+
  | 2. Namen   | ln DATEI NEU   | (geht nicht!) | ---         | alias NEU=NAME|
  | erzeugen   | ln -s DATEI NEU| ln -s VERZ NEU|             |               |
  +------------+----------------+---------------+-------------+---------------+

2) Anmerkungen   (Toc)

* "rmdir" funktioniert nur bei LEEREM Verzeichnis.

* "-r/-R" bedeutet "recursive/rekursiv", d.h. ganzen Dateibaum bearbeiten.

* Von Benutzern können keine Hardlinks auf Verzeichnisse angelegt werden (UNIX
  selbst legt aber die Hardlinks "." + ".." für jedes Verzeichnis autom. an).

* Variablen werden meist GROSS geschrieben, damit sie leicht erkennbar sind
  (nur eine Konvention, kein Muss!).

* "type KMDO" (bzw. "which KMDO", "whence KMDO" oder "whereis KMDO" ) liefert
  den Typ (Builtin, Alias, Funktion, Binärprogramm) und den Ort (Pfad) bzw.
  die Definition von "KMDO".

* "ls -l DATEI" liefert Informationen über eine DATEI (Zugriffsrechte, Anzahl
  Hardlinks, Besitzer, Besitzer-Gruppe, Grösse, Datum der letzten Änderung).

* "ls -ld VERZ" liefert Informationen über ein VERZEICHNIS (Zugriffsrechte,
  Anzahl Hardlinks, Besitzer, Besitzer-Gruppe, Grösse, Datum letzte Änderung).
  (ohne "-d" (directory) wird der INHALT des Verzeichnisses angezeigt!)

3) Beispiele für Namen   (Toc)

  +----------------+-----------------------------------------------------------+
  | Name           | Beschreibung                                              |
  +----------------+-----------------------------------------------------------+
  | RANDOM $RANDOM | Variable (Gross)                                          |
  | /tmp /tmp/     | Verzeichnis (evtl. am Suffix "/" erkennbar, d.h. "/tmp/") |
  | .alias         | (Versteckte) Datei (kommen fast nur in Heimat-Verz. vor)  |
  +----------------+-----------------------------------------------------------+
  | /              | Wurzel-Verz. des Dateisystems (ohne Laufwerk-Buchstabe!)  |
  | ~              | Heimat-Verz. des aktuellen Benutzers ("/home/USERNAME")   |
  | .              | Aktuelles Verz. (von "pwd" oder "echo $PWD" angezeigt)    |
  | ..             | Übergeordnetes Verz., Eltern-Verz., Stamm-Ordner          |
  +----------------+-----------------------------------------------------------+
  | ls             | Kommando (Programm-Datei, über Suchpfad PATH gefunden)    |
  | /bin/ls        | Programm-Datei (in "/bin" liegen nur Programme)           |
  | /sbin/dump     | Programm-Datei (in "/sbin" liegen nur Programme)          |
  | /usr/bin/vi    | Programm-Datei (in "/usr/bin" liegen nur Programme)       |
  | /usr/sbin/vipw | Programm-Datei (in "/usr/sbin" liegen nur Programme)      |
  | /etc/profile   | System-Konfigurations-Datei ("/etc" enthält nur solche)   |
  | ll             | Alias für "ls -l"                                         |
  | dir            | Alias für "ls -l" oder Binärprogramm "/usr/bin/dir"       |
  +----------------+-----------------------------------------------------------+