HOWTO zu Unix-EntitÀten

(C) 2006-2017 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),
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"       |
  +----------------+-----------------------------------------------------------+