4 Keine_Angst_vor_der_Shell
kraeml edited this page 2023-09-20 17:47:07 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Keine Angst vor der Shell

Lernziele

  • Die Vorteile einer textorientierten Kommandooberfläche bewerten können
  • Gängige Linux-Shells kennen
  • Mit der Bourne-Again-Shell (Bash) arbeiten
  • Struktur von Linux-Kommandos verstehen

Vorkenntnisse

  • Grundlegende Kenntnisse im Umgang mit Computern sind hilfreich

Für den Fall, dass Sie nicht mehr wissen sollten, mit welcher Shell Sie gerade arbeiten, hilft die Eingabe von "echo $0", die so ziemlich überall funktioniert und als Ausgabe die Bezeichnung der Shell liefert.

echo $0
/usr/bin/bash

Warum?

Unter dem Strich bedeutet das nur, dass Sie als angehender Linux-Anwender gut daran tun, sich auch mit der textorientierten Kommandooberfläche, bekannt als Shell, vertraut zu machen. Natürlich will Sie niemand davon abhalten, eine grafische Oberfläche für alles zu benutzen, was Ihnen einfällt. Die Shell ist aber eine Abkürzung zu zahlreichen extrem mächtigen Operationen, die sich grafisch einfach nicht gut ausdrücken lassen.

Die Shell abzulehnen ist äquivalent dazu, sich in der Fahrschule gegen die Verwendung aller Gänge außer des ersten zu sträuben: Sicher, auch im ersten Gang kommt man letztendlich ans Ziel, aber nur vergleichsweise langsam und mit heulendem Motor.

Was ist die Shell?

  • Bourne-Shell
  • C-Shell
  • Korn-Shell
  • Bourne-Again-Shell

Über die genannten Shells hinaus gibt es noch zahlreiche andere. Eine Shell unter Unix ist ein Anwendungsprogramm wie jedes andere auch, und Sie brauchen keine besonderen Privilegien, um eine schreiben zu können Sie müssen sich nur an die Spielregeln halten, die bestimmen, wie eine Shell mit anderen Programmen kommuniziert.

Die Shell übernimmt dabei im Einzelnen folgende Aufgaben:

  1. Ein Kommando von der Tastatur (oder aus einer Datei) einlesen.
  2. Das eingegebene Kommando überprüfen.
  3. Das Kommando direkt ausführen oder das korrespondierende Programm starten.
  4. Das Resultat auf dem Bildschirm (oder anderswohin) ausgeben.
  5. Weiter bei 1.

Übungen

C 3.1 [2] Wie viele verschiedene Shells sind auf Ihrem Rechner installiert und welche? (Tipp: Prüfen Sie die Datei /etc/shells.)

C 3.2 [2] Melden Sie sich ab und wieder an und prüfen Sie die Ausgabe des Kommandos echo $0 in der Loginshell. Starten Sie mit dem Kommando bash eine neue Shell und geben Sie wiederum das Kommando echo $0.

Vergleichen Sie die Ausgabe der beiden Kommandos. Fällt Ihnen etwas auf?

Kommandos

type echo
echo ist eine von der Shell mitgelieferte Funktion.
type date
date ist /usr/bin/date
echo Ha, wackrer Tell! Das gleicht dem Waidgesellen!
Ha, wackrer Tell! Das gleicht dem Waidgesellen!
date
Mi 20. Sep 17:24:15 CEST 2023
help type
type: type [-afptP] Name [Name ...]
    Display information about command type.
    
    For each NAME, indicate how it would be interpreted if used as a
    command name.
    
    Options:
      -a	display all locations containing an executable named NAME;
    		includes aliases, builtins, and functions, if and only if
    		the `-p' option is not also used
      -f	suppress shell function lookup
      -P	force a PATH search for each NAME, even if it is an alias,
    		builtin, or function, and returns the name of the disk file
    		that would be executed
      -p	returns either the name of the disk file that would be executed,
    		or nothing if `type -t NAME' would not return `file'
      -t	output a single word which is one of `alias', `keyword',
    		`function', `builtin', `file' or `', if NAME is an alias,
    		shell reserved word, shell function, shell builtin, disk file,
    		or not found, respectively
    
    Arguments:
      NAME	Command name to be interpreted.
    
    Exit Status:
    Returns success if all of the NAMEs are found; fails if any are not found.

Übungen C 3.3 [2] Welche der folgenden Kommandos sind bei der Bash extern und welche intern realisiert:

  • alias,
  • echo,
  • rm,
  • test
type alias echo rm test
alias ist eine von der Shell mitgelieferte Funktion.
echo ist eine von der Shell mitgelieferte Funktion.
rm ist /usr/bin/rm
test ist eine von der Shell mitgelieferte Funktion.

Noch mehr Spielregeln

touch 'Neue Datei'
ls
'Neue Datei'

Bitte eigenständig durchlesen und durchführen.

Zusatzinfo

Kommandos in diesem Kapitel

bash       Die "Bourne-Again-Shell", ein interaktiver Kommandointerpreter bash (1)
csh        Die "C-Shell", ein interaktiver Kommandointerpreter csh (1)
date       Gibt Datum und Uhrzeit aus date (1)
echo       Gibt alle seine Parameter durch Leerzeichen getrennt auf der Standardausgabe aus bash (1), echo (1)
help       Zeigt Hilfe für bash -Kommandos bash (1)
ksh        Die "Korn-Shell", ein interaktiver Kommandointerpreter ksh (1)
sh         Die "Bourne-Shell", ein interaktiver Kommandointerpreter sh (1)
tcsh       Die "Tenex-C-Shell", ein interaktiver Kommandointerpreter tcsh (1)
type       Bestimmt die Art eines Kommandos (intern, extern, Alias) bash (1)
xterm      Ein "Terminalemulator" für das X-Window-System xterm (1)

Zusammenfassung

  • Die Shell liest Benutzerkommandos und führt sie aus.
  • Die meisten Shells haben die Eigenschaften von Programmiersprachen und erlauben das Erstellen von Shellskripten, also vorgekochten Kommandofolgen, die in Dateien abgelegt werden.
  • Kommandos haben Optionen und Argumente. Die Optionen geben an, wie das Kommando wirkt und die Argumente worauf.
  • Shells unterscheiden zwischen internen Kommandos, die in der Shell selbst implementiert sind, und externen Kommandos, für die andere Programme als Hintergrundprozesse gestartet werden.