Teil 3: Shell und einige...

58
13.04.20 1 WIS – SS 2020 - Teil 3/Shell-Kommandos Informationssicherheit Teil 3: Shell und einige Kommandos

Transcript of Teil 3: Shell und einige...

  • 13.04.20 1WIS – SS 2020 - Teil 3/Shell-Kommandos

    Informationssicherheit

    Teil 3: Shell und einige Kommandos

  • 2WIS – SS 2020 - Teil 3/Shell-Kommandos

    Literatur I

    [3-1] Taylor, Dave: Raffinierte Shell Scripts. mitp, 2004

    [3-2] Robbins, Arnold: sed&awk. kurz&gut, O'Reilly, 2. Auflage, 2002

    [3-3] Barrett, Daniel: Linux. kurz&gut, O'Reilly, 2004

    [3-4] Kofler, Michael: Linux. Addison-Wesley, 15. Auflage, 2017https://kofler.info/buecher/linux/

    [3-5] Günther, Karsten: bash - kurz & gut. O'Reilly, 2008

    [3-6] Wolf, Jürgen: Shell-Programmierung: Das umfassende Handbuch. Rheinwerk, 2016

    [3-7] https://de.wikipedia.org/wiki/Bash_(Shell)

    [3-8] http://kirste.userpage.fu-berlin.de/chemnet/general/topics/scripts_sh.html http://kirste.userpage.fu-berlin.de/chemnet/general/topics/scripts_csh.html

    [3-9] http://selflinux.org/selflinux/html/bash_basic06.html

  • 3WIS – SS 2020 - Teil 3/Shell-Kommandos

    Literatur II

    [3-10] http://www.informatik.uni-hamburg.de/RZ/lehre/ERB/Old/intern/Unix/unix-tthse3.html

    [3-11] http://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger

    [3-12] http://openbook.galileocomputing.de/shell_programmierung/

    [3-13] https://de.wikibooks.org/wiki/Linux-Praxisbuch:_Shellprogrammierung

  • 4WIS – SS 2020 - Teil 3/Shell-Kommandos

    Überblick

    � Globales Prinzip der Skriptsprache

    � Inline Kommandos

    � Einführung in das Unix Programmers Manual (UPM)

    � Wichtige Kommandos

  • 5WIS – SS 2020 - Teil 3/Shell-Kommandos

    Prozesse

    � Ein Prozess ist ein laufendes sequentielles Programm. Alle Prozesse laufen parallel zueinander.

    � Die Kommandoebene wird durch einen Prozess namens Shell realisiert.

    � Prozessnummer = Eindeutige Nummer eines Prozesses

    Der Kernel ist der speicherresidente Teil des Betriebssystems, derdurch Systemaufrufe aktiviert wird, bei deren Ausführung der aufrufendeProzess inaktiv ist. Außerhalb des Kernels gibt es nur Prozesse.

  • 6WIS – SS 2020 - Teil 3/Shell-Kommandos

    Zum Begriff des Shells I

    � Shell = Programm zur Ausführung von Kommandos durch Benutzung von Tastatur-Zeichen

    � Shells erlauben die vollständige Kontrolle über ein Computer, während Fenstersysteme nur einen Teil der Möglichkeiten von Shells besitzen.

    � Es ist aber viel mehr Wissen zur Benutzung erforderlich.

    � Die Fenstersysteme haben den Nachteil nur einen kleinen Bereich der Probleme zu verdecken, was bedeutet, dass Shells in Fehlerfällen und zur Administration zwingend erforderlich sind.

  • 7WIS – SS 2020 - Teil 3/Shell-Kommandos

    Zum Begriff des Shells II

    � Ein Shell ist ein Kommando-Interpreter.

    � Ein paar Kommandos werden vom Shell selbst ausgeführt; dies sind die Inline-Kommandos.

    � Alle anderen Kommandos werden durch Kind-Prozesse realisiert. In einem Kind-Prozess wird das Programm des Kommandos geladen und ausgeführt.

    � Dies hat den Vorteil, dass Kommandos parallel ausgeführt werden können. Wenn der Shell nicht auf das Ende seines Kind-Prozesses wartet, kann parallel weiter gearbeitet werden.

    � Kind-Prozess = Child process = Prozess, der von einem anderen (Elternprozess) erzeugt und gestartet wird

  • 8WIS – SS 2020 - Teil 3/Shell-Kommandos

    Kommandointerpreter I

    repeat read_line(L) if End-of-File { exit } substitute_Variables(L) execute(L) if not "&" specified { wait_for_process_Termination }for ever

    � Es wird eine Zeile L gelesen, überarbeitet und ausgeführt. Beim Überarbeiten werden die Shellvariablen, die mit einem $ beginnen, durch ihre Werte ersetzt.

    � Wird am Kommandoende ein "&" gefunden, so wartet der Shell nicht auf die Beendigung der Kind-Prozesse, d.h. es kann parallel zu diesen Prozessen weiter gearbeitet werden.

    � Ein Programm, das mit "&" als parallel laufend zum Shell gekennzeichnet ist, wird Hintergrund-Prozess genannt.

  • 9WIS – SS 2020 - Teil 3/Shell-Kommandos

    Parallelität zwischen Shell und Programmen I

  • 10WIS – SS 2020 - Teil 3/Shell-Kommandos

    Parallelität zwischen Shell und Programmen II

    � date &date gibt das Datum parallel zum Shell aus

    � date & lsdate gibt das Datum parallel zum Listen der Dateinamen aus, der Shell wartet anschließend auf beide

    � date & ls &wie oben, nur dass der Shell auf keinen der Prozesse wartet (volle Parallelität)

    Wird am Ende eines Kommandos das "&" benutzt, so bedeutet dies,dass der Shell auf die Beendigung des davor stehenden Kommandosnicht wartet.Werden zwei Kommandos mit "&" verknüpft, so laufen sie parallel.

    Beispiele (Prinzip):

  • 11WIS – SS 2020 - Teil 3/Shell-Kommandos

    Parallelität zwischen Shell und Programmen III

    � Damit nicht allzu viel Chaos auf dem Bildschirm entsteht, gibt es folgende Regelung:

    – Wenn ein Hintergrund-Prozess etwas von der Konsole lesen oder auf die Konsole schreiben will, wird er gestoppt bis er in den Vordergrund geholt wird.

    – Dann erst erfolgt der I/O-Vorgang.

    Die Beispiele von eben geben nicht parallel ihren Output aus;dies wird koordiniert.

  • 12WIS – SS 2020 - Teil 3/Shell-Kommandos

    Kommandointerpreter II

    repeat read_line(L) if End-of-File { exit } substitute_Variables(L) case analyse_line(L) { if cmd_1 { excecute (cmd_1) } // Inline command if cmd_2 { excecute (cmd_2) } // Inline command ..... otherwise { Search_in_Directories } } if not "&" specified { wait_for_process_Termination }for ever

    Eingebaute Kommandos

    Durchsuchen von Ordnern

  • 13WIS – SS 2020 - Teil 3/Shell-Kommandos

    Verbreitete Shells

    � Bourne-Shell (sh) – der Klassiker

    � Korn-Shell (ksh)

    � C-Shell (csh) und TC-Shell (tcsh)

    � Bourne again Shell (bash)

    � zsh

    � Die Manual-Einträge für die Shells orientieren sich an dem Namen des Shells.

    � Die internen Shell-Kommandos werden innerhalb dieser Einträge beschrieben und lassen sich daher nicht (immer) mit "man Kommando" ansehen.

  • 14WIS – SS 2020 - Teil 3/Shell-Kommandos

    Starten von Programmen

    � Unter LINUX/UNIX ist ein Programm nur dann ausführbar, wenn es für den das Programm startenden Prozess die Erlaubnis zur Ausführung gibt.

    � Setzen der Erlaubnisse mit dem Kommando chmod(1).

    � Die Environmentvariable PATH definiert die Reihenfolge von Ordnern, die durchsucht werden:

    "PATH=AAA:BBB:CCC:DDD:…"� Es wird zuerst der Ordner AAA, dann BBB, dann CCC…

    durchsucht.

    � Ist ein Binärfile gefunden, wird ein Kindprozess mit den eigenen Enivironment-Variablen, jedoch ohne die Shell-Variablen erzeugt.

    � Ist es kein Binärfile, so wird die 1.Zeile analysiert und das dort angegebene Programm gestartet, wobei der ursprüngliche Filename zum 1. Parameter wird.

  • 15WIS – SS 2020 - Teil 3/Shell-Kommandos

    Inline-Shell-Kommandos (Auszug) I

    Kommando Erläuterung

    cd Dir Change Directory nach Dir

    echo String Ausgabe einer ZeichenketteFlag -n: keinen Zeilenwechsel am Ende

    exit Nr Beendigung des Shells mit Returncode Nr

    wait Auf ein Kind-Prozess warten

    exec Prog Bash durch Programm Prog ersetzen

    shift Verschieben der Parameter nach links

    source File Einlesen von Kommandos aus Datei File

    Inline-Shell-Kommando = Kommando, das vom Shell ohneGenerieren eines Prozesses, also direkt ausgeführt wird

  • 16WIS – SS 2020 - Teil 3/Shell-Kommandos

    Inline-Shell-Kommandos (Auszug) II

    Kommando Erläuterung

    pushd Dir Wechsel nach Dir wie cd, Aktueller Ordner auf Stack

    popd Ordner vom Stack holen und dort hingehen

    kill -x PID Senden des Signals x an Prozess mit der ID PID

    read Var1 Var2... Einlesen einer Zeile von Standard-Input und Schreiben in die Variablen Var1 etc., wobei das Eingegebene aufgeteilt wird

    Signale werden zur Interprozesskommunikation benutzt:Dazu wird ein Byte einem Prozess mitgeteilt. Alle Signale habeneine Nummer, die deren Bedeutung definiert,z.B. bedeutet das Signal 9: sofortiges Terminieren.

  • 17WIS – SS 2020 - Teil 3/Shell-Kommandos

    Destruktives Abbrechen von Kommandos

    � Im Vordergrund laufendes Programm: CNTRL_c

    � Im Hintergrund laufendes Programm:– Mit fg in den Vordergrund holen und dann CNTRL_c

    – Mit ps/top die PID heraus finden und mit kill -9 PID bearbeiten

    Kommando Erläuterung

    fg (foreground) Hintergrundprozess zum Vordergrundprozess machen

    bg (background) Nach Stoppen mit CTRL_Z: Vordergrundprozess zum Hintergrundprozess machen

  • 18WIS – SS 2020 - Teil 3/Shell-Kommandos

    Beispiele für ps-Output

    Das ps-Kommando listet die aktuell laufenden Prozesse auf:

    panda:94% ps

    PID TT STAT TIME COMMAND 9078 p1 S 0:02 -tcsh (tcsh)12181 p1 R 0:00 ps 9081 p3 IW 0:00 -tcsh (tcsh) 9088 p4 IW 0:00 -csh (tcsh)11856 pc S 0:00 -csh (tcsh)

    panda:95%

    � PID: Process ID (Nummer)

    � TT: Terminal Type

    � STAT: Status des Prozesses:w für wait, r für running, s für sleep

    � COMMAND: Name des Kommandos samt Parametern

  • 19WIS – SS 2020 - Teil 3/Shell-Kommandos

    Pipelines (Pipes)

  • 20WIS – SS 2020 - Teil 3/Shell-Kommandos

    Standard Input/Output/Error I

    Programme werden als Bausteine mit standardisiertenI/O aufgefasst:

  • 21WIS – SS 2020 - Teil 3/Shell-Kommandos

    Standard Input/Output/Error II

    � Programme werden als Bausteine mit standardisierten I/O aufgefasst.

    � Die Shells kombinieren die Bausteine mit dem Pipesymbol: |

    � Die I/O-Ströme werden mit den folgenden Symbolen umgelenkt.

    | Pipe

    > Output

    2> Error-Output

    >& Error- und Programm-Output werden zusammengefasst

    >> Output wird angefügt

    < Input

  • 22WIS – SS 2020 - Teil 3/Shell-Kommandos

    Beispiele für Input/Output-Umlenkungen

    � ls >file

    – ls listet Dateinamen in Datei file

    � ls >>file

    – ls listet Dateinamen ans Ende von Datei file

    � sort file2

    – Inhalt von Datei file1 wird sortiert und das Ergebnis nach file2 geschrieben

    � ls | sort >file3

    – sort sortiert Output von ls

    – und schreibt nach file3

    – Drei Prozesse laufen parallel

  • 23WIS – SS 2020 - Teil 3/Shell-Kommandos

    Wild-Zeichen (Shell) - Auszug

    Beispiele– abc*– a*abc*– a?.*– *.*– *– *.[co]– *.txt

    Zeichen Bedeutung

    * leerer oder beliebig langer String

    ? ein beliebiges Zeichen, aber genau eins

    [XYZ] ein Zeichen X oder Y oder Z

    [!X] ein beliebiges Zeichen ungleich X

    [X-Z] ein Zeichen aus der Menge X bis Z

  • 24WIS – SS 2020 - Teil 3/Shell-Kommandos

    Syntax der Skriptsprache: Flags (Konvention)

    � Beginnt der 1. Parameter mit "-" oder "--", so ist damit ein Flag oder Schalter gemeint.

    � Hinter einem – bedeutet jedes Zeichen ein Flag, z.B. -abc sind drei Flags a, b und c.

    � Hinter einem -- bedeutet der Rest der Name eines Flags: --abc ist ein Flag mit dem Namen abc.

    � Flag = Schalter = Option = Angabe, auf welche Weise das Kommando ausgeführt werden soll (Steuerparameter)

    � Beispiele

    ls -l

    ls -la

    ls -l abc

  • 25WIS – SS 2020 - Teil 3/Shell-Kommandos

    Aufbau der Manualeinträge I

    � Das UNIX-Programmers Manual (UPM) hat folgende Kapitel:– 1: Kommandos (Shell-Ebene)

    – 2: Systemaufrufe (Syscalls in C)

    – 3: Bibliotheksfunktionen (C)

    – 4: Geräte und Special Files

    – ...

    � Aufruf: man [Kapitel] Name

    – Beispiel "man 1 csh"

    – Beispiel "man 2 open"

    – Beispiel "man 3 printf"

    � Ist der Name eindeutig, braucht keine Kapitelnummer angegeben zu werden - was in den meisten Fällen zutrifft.

    � Eine Zahl in runden Klammern hinter einem Namen gibt die Kapitelnummer an, z. B. man(1) -> Kapitel 1

  • 26WIS – SS 2020 - Teil 3/Shell-Kommandos

    Aufbau der Manualeinträge II

    � Da die meisten Informationen zu den Kommandos länger als eine Bildschirmseite bzw. Fenster sind, müssen die Informationen stückweise angezeigt werden.

    � Das erfolgt mit dem Kommando more, das mit einem senkrechten Strich | mit dem ersten Kommando verbunden wird: man ls | more

    � Das Kommando more erwartet Eingaben, z. B.– Blank (1 Seite weiter)

    – q (quit: beenden)

    – b (1 Seite zurück)

    � In vielen Implementierungen ist dieses more in das Kommando man eingebaut und braucht daher nicht angegeben zu werden.

  • 27WIS – SS 2020 - Teil 3/Shell-Kommandos

    Aufbau der Manualeinträge III

    Es gibt noch eine "Suchmaschine" über die Manualeinträge:

    apropos String

    Es werden dann alle Zeilen aller Manualeinträge angezeigt, diedie Zeichenkette String enthalten.

  • 28WIS – SS 2020 - Teil 3/Shell-Kommandos

    Notation I

    � Um etwas zu kennzeichnen, das beim Aufruf ersetzt werden muss, wird es kursiv dargestellt. Das Kursive ist ein Platzhalter.

    Beispiel:cp File1 File2

    wird z. B. zucp Intro.txt Readme.txt

    � Etwas, was optional ist, wird in eckige Klammern [] gesetzt.

    Beispiel:ls [-l]

    erlaubtls

    oderls -l

  • 29WIS – SS 2020 - Teil 3/Shell-Kommandos

    Notation II

    � Etwas, was beliebig wiederholt werden kann, wird durch anschließende Punkte ... gekennzeichnet.

    Beispiel:rm File1...

    Führt z. B. zurm readme Readme readme.txt

    oderrm a*

    � Alles andere ist für das Kommando erforderlich und muss so wie angegeben geschrieben werden.

  • 30WIS – SS 2020 - Teil 3/Shell-Kommandos

    Bedeutung von Sondereingaben

    ^d Simulation des End-of-File bei der Eingabe

    ^c Abbruch des aktuellen Vordergrundprozesses

    ^z Vordergrundprozess in den Hintergrund schicken

    ^s (Stop) Anhalten der Ausgabe

    ^q (Quid) Weitere Ausgabe

    ^x bedeutet das gleichzeitige Drücken von strg (Steuerung)bzw. ctrl (Control) und x.

  • 31WIS – SS 2020 - Teil 3/Shell-Kommandos

    Kopieren von Dateien (Copy, cp)

    Aufruf

    cp [-i] file1 file2

    cp [-i] file1 [file2 ... fileN] Directory

    In der ersten Form wird die 1. Datei auf die zweite kopiert, wobei diese angelegt wird, wenn sie vorher nicht existierte. Die zweite Form kopiert alle Dateien in den zuletzt angegebenen Ordner.

    Das Flag -i bewirkt eine Nachfrage, ob eine bestehende Datei überschrieben werden soll.

  • 32WIS – SS 2020 - Teil 3/Shell-Kommandos

    Umbenennen von Dateien (Move, mv)

    Aufruf

    mv [-i] file1 file2

    mv [-i] file1 [file2 ... fileN] Directory

    In der ersten Form wird die 1. Datei auf den Namen File2 umbenannt; die zweite Form entfernt die angegebenen Dateien und fügt sie in den angegebenen Ordner ein. Wird die Grenze eines Dateisystems überschritten, werden die Dateien kopiert.

    Das Flag -i bewirkt eine Nachfrage, ob eine bestehende Datei überschrieben werden soll.

  • 33WIS – SS 2020 - Teil 3/Shell-Kommandos

    Erzeugen von Verknüpfungen (Link, ln)

    Aufruf

    ln [-s] file1 file2

    Ausgehend von der Datei file1 wird eine neuer Link (Verknüpfung, Alias) auf diese Datei unter dem Namen file2 angelegt. Anschließend verweisen file1 und file2 auf dieselbe Datei.

    Das Flag -s bewirkt einen symbolischen Link, der zur Abspeicherung einer Zeichenkette mit Angabe des Pfades führt (Soft Link). Derartige Links sind beim Überschreiten der Dateisystemgrenzen erforderlich.

  • 34WIS – SS 2020 - Teil 3/Shell-Kommandos

    Vergleichen von Dateien (Compare, cmp)

    Aufruf

    cmp [-l] file1 file2

    Die beiden angegebenen Dateien werden Byte für Byte verglichen. Besteht kein Unterschied, wird nichts ausgegeben; besteht jedoch einer, wird dies gemeldet.

    Wenn das Flag -l gesetzt ist, wird dann die Position sowie der Inhalt der sich unterscheidenden Bytes ausgegeben.

    Es wird auch ein Return-Code zurückgeliefert: 0 bei Gleich, 1 bei Ungleich

  • 35WIS – SS 2020 - Teil 3/Shell-Kommandos

    Löschen von Dateien (Remove, rm)

    Aufruf

    rm [-ir] file1 [file2 ... fileN]

    Die Einträge in den Ordnern der angegebenen Dateien werden gelöscht. Die Dateien erst dann, wenn diese Einträge die letzten sind, die auf die betroffenen Dateien verweisen.

    Das Flag -i bewirkt eine Nachfrage, wenn eine bestehende Datei gelöscht werden soll. Das Flag -r erlaubt das rekursive Löschen von Dateibäumen und wirkt nur dann, wenn Namen von Ordnern übergeben werden. Die Flags können auch einzeln benutzt werden.

    Es gibt keinen Mülleimer – gelöscht ist wirklich gelöscht.

  • 36WIS – SS 2020 - Teil 3/Shell-Kommandos

    Ansehen von Ordnern (List File Names, ls)

    Aufruf

    ls [-la] [file1 file2 ... fileN]

    Ohne Angabe von Dateien werden die Einträge des aktuellen Ordners angezeigt, mit Angabe nur die angegebenen Einträge. Ist eine angegeben Datei ein Ordner, so wird dessen Inhalt angezeigt. Es werden keine Einträge angezeigt, die mit einem "." beginnen.

    Das Flag -l bewirkt eine lange Ausgabe mit Angabe der Rechte, der Anzahl der Links, des Besitzers, der Gruppe, der Größe, des Erstellungsdatums sowie den Dateinamens.

    Das Flag -a bewirkt, dass alle Einträge der Ordner angezeigt werden.

  • 37WIS – SS 2020 - Teil 3/Shell-Kommandos

    Beispiel für cp/rm/ln I

    panda:38% date >Datei1

    panda:39% cat Datei1

    Thu Apr 11 15:18:37 MET DST 1996

    panda:40% ls -li

    total 1

    119303 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei1

    panda:41% cp Datei1 Datei2

    panda:42% ln Datei1 Datei3

    panda:43% ls -li

    total 3

    119303 -rw------- 2 bmesser isst 33 Apr 11 15:18 Datei1

    119396 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei2

    119303 -rw------- 2 bmesser isst 33 Apr 11 15:18 Datei3

    panda:44% rm Datei3

    rm: remove Datei3? y

    panda:45% ls -li

    total 2

    119303 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei1

    119396 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei2

    panda:46%

  • 38WIS – SS 2020 - Teil 3/Shell-Kommandos

    Beispiel für cp/rm/ln II

    panda:46% ln -s Datei1 Datei4

    panda:47% ls -li

    total 3

    119303 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei1

    119396 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei2

    119397 lrwxrwxrwx 1 bmesser isst 6 Apr 11 15:19 Datei4 -> Datei1

    panda:48% rm Datei1

    rm: remove Datei1? y

    panda:49% ls -li

    total 2

    119396 -rw------- 1 bmesser isst 33 Apr 11 15:18 Datei2

    119397 lrwxrwxrwx 1 bmesser isst 6 Apr 11 15:19 Datei4 -> Datei1

    panda:50% ln Datei4 Datei5

    ln: Datei4: No such file or directory

    panda:51%

  • 39WIS – SS 2020 - Teil 3/Shell-Kommandos

    Bemerkungen

    Durch das Flag -i bei ls (Kommando ls -li) wird die Inode-Nummer - das ist die interne Nummer der Datei im Dateisystem - aufgelistet. Anhand dieser Nummer lässt sich erkennen, ob Einträge in Ordnern auf dieselben Dateienzeigen: Das ist immer dann der Fall, wenn die Nummern gleich sind.

  • 40WIS – SS 2020 - Teil 3/Shell-Kommandos

    Ändern von Rechten (Change Mode, chmod)

    Aufruf

    chmod Perm file1 [file2 ... fileN]

    Die Rechte der Dateien file1 bis fileN, die auch Ordner sein können, werden übereinstimmend mit dem oktalen Wert von Perm gesetzt. Die erste Oktalziffer von Perm bezieht sich auf die Rechte Read, Write und Execute des Besitzers, die zweite auf die der Gruppe sowie die dritte auf die vom Rest (World). Das jeweils erste (höchste) Bit einer Ziffer legt das Leserecht, das mittlere Bit das Schreibrecht und das dritte (niederwertigste) das Recht zur Ausführung fest.

    Neben der Oktalangabe gibt es noch symbolische Angaben, die der Man-Seite zu entnehmen sind.

    Beispiele

    chmod 755 bla1chmod 644 bla2chmod 600 bla3

    Die Datei bla1 erlaubt für den Owner alle Rechte, während für Gruppe und Welt nur Execute und Read; bla2 Owner: RW, Gruppe R, World R; bla3Owner RW alle anderen keine Rechte

  • 41WIS – SS 2020 - Teil 3/Shell-Kommandos

    Erzeugen von Ordnern (Make Directory, mkdir)

    Aufruf

    mkdir Dir1 [Dir2 ... DirN]

    Die angegebenen Verzeichnisse werden angelegt.

  • 42WIS – SS 2020 - Teil 3/Shell-Kommandos

    Löschen von Ordnern (Remove Directory, rmdir)

    Aufruf

    rmdir Dir1 [Dir2 ... DirN]

    Die angegebenen Ordner werden gelöscht, wenn sie leer sind. Leer heißt, dass keine Dateien und Unterverzeichnisse vorhanden sind.

  • 43WIS – SS 2020 - Teil 3/Shell-Kommandos

    Arbeitsordner (Change Directory, cd)

    Aufruf

    cd [Directory]

    Das aktuelle Arbeitsverzeichnis (working directory) wird auf den angegebenen Ordner gesetzt. Fehlt die Angabe eines Ordners, wird auf das Heimatverzeichnis (home directory) gewechselt.

  • 44WIS – SS 2020 - Teil 3/Shell-Kommandos

    Arbeitsordner (Print Working Directory, pwd)

    Aufruf

    pwd

    Es wird der Name des aktuellen Arbeitsverzeichnisses ausgegeben.

  • 45WIS – SS 2020 - Teil 3/Shell-Kommandos

    Aufruf des Shells bash

    Aufruf

    bash [-x] [File [Param1 ... ParamN]]

    Es wird der Shell bash aufgerufen.

    Das Flag -x bewirkt, dass die jeweils ausgeführten Zeilen ausgegeben werden, um Fehler zu suchen. Dies hat dieselbe Wirkung wie set -x als Kommando.

    Der Parameter File ist eine Shell-Datei, die mit den Parametern Param1 bis ParamN ausgeführt wird. Wird kein File angegeben, wird von Standard-Input interaktiv gearbeitet.

    Die Parameterliste wird entsprechend den Regeln der Wild-Character-Expansion ersetzt, so dass sehr viele Parameter entstehen können. Nach der Expansion sind alle Wild-Character entfernt, es sei denn, sie wurden in " " geklammert.

    Die Regeln der Wild-Character-Behandlung unterscheiden sich von den Regeln zur Musterdefinition in Editoren und für grep(1).

  • 46WIS – SS 2020 - Teil 3/Shell-Kommandos

    Wo befinden sich die Kommandos (which)

    Aufruf

    which command

    Es wird für das Kommando command der Pfadname, an dem das Programm liegt, ausgegeben.

  • 47WIS – SS 2020 - Teil 3/Shell-Kommandos

    Abschneiden des Pfades

    Aufruf

    basename Dateinamen

    Der Pfadanteil des Dateinamen wird abgeschnitten und das Ergebnis ausgegeben.Beispiel:

    basename /bin/ls

    gibt ls aus.

  • 48WIS – SS 2020 - Teil 3/Shell-Kommandos

    Ausgabe der Umgebung (Environment, env)

    Aufruf

    env [Variable1=Wert1 ... VariableN=WertN] [command [Params]]

    Abfrage oder kurzzeitiges Setzen der Environment-Variablen. Ohne einen Parameter wird ausgegeben, mit einer Variablenangabe wird diese nur für das Kommando command gesetzt und so ausgegeben.

    Wenn ein Kommando command mit optionalen Parametern angegeben ist, wird dieses Kommandos mit den (vorher) geänderter Environment-Variablen ausgeführt.Dies wird häufig bei Skriptsprachen gemacht.

  • 49WIS – SS 2020 - Teil 3/Shell-Kommandos

    Zusammensetzen von Dateien (Concatenate Files, cat)

    Aufruf

    cat [file1 file2 ... fileN]

    Alle angegebenen Dateien werden nacheinander von links nach rechts auf Standard-Output kopiert. Werden keine Dateien angegeben, so wird von Standard-Input kopiert.

    Bei der Ausgabe auf das Terminal wird automatisch keine Flusskontrolle durchgeführt. Von Hand muss mit ^s (Stop) die Ausgabe angehalten und mit ^q (quit) wieder fortgeführt werden (oder mit einer Pipe verbunden das more-Kommando).

  • 50WIS – SS 2020 - Teil 3/Shell-Kommandos

    Anzeigen von Dateiinhalten (more, less)

    Aufruf

    more file1 [file2 ... fileN]

    less file1 [file2 ... fileN]

    Es werden die Dateien von links nach rechts gehend angezeigt, wobei die ausgegebenen Zeilen gezählt werden, um anzuhalten, wenn der Bildschirm voll ist.

    Durch Eingabe von Blank wird mit der Ausgabe um 1 Bildschirmseite fort gefahren, durch Eingabe von RETURN wird nur eine weitere Zeile ausgegeben, durch b wird um eine Seite zurückgeblättert und durch q wird das Programm beendet.

    less(1) ist eine verbesserte Version von more(1).

  • 51WIS – SS 2020 - Teil 3/Shell-Kommandos

    Anzeige des Dateiendes (tail)

    Aufruf

    tail [-f] file1 [file2 ... fileN]

    Es werden die letzten (10) Zeilen der angegebenen Dateien ohne Flusskontrolle auf Standard-Output ausgegeben.

    Das Flag „-f“ sorgt dafür, dass auch spätere Verlängerungen der Datei live angezeigt werden, z.B. tail -f /var/log/messages.

  • 52WIS – SS 2020 - Teil 3/Shell-Kommandos

    Einlesen von Standard-Input

    Aufruf

    read variable1 [variable2 ... variableN]

    Es wird eine Zeile von Standard-Input eingelesen und den angegebenen Variablen zugewiesen. Sind mehrere Variablen angegeben, so wird die eingelesene Zeile aufgeteilt und den Variablen stückweise zugewiesen, wobei der syntaktische Trenner der Leerraum ist.

  • 53WIS – SS 2020 - Teil 3/Shell-Kommandos

    Anzeige der Plattenbelegung (df)

    Aufruf

    df

    Für alle eingehängten Dateisysteme wird der freie Plattenplatz ausgegeben; nicht eingehängte, aber vorhandene Dateisysteme werden ignoriert.

  • 54WIS – SS 2020 - Teil 3/Shell-Kommandos

    Anzeige der Plattenbelegung (Disk usage, du)

    Aufruf

    du [-c] [directory]

    Ausgehend vom Arbeitsverzeichnis bzw. von dem Ordner directory wird der belegte Plattenplatz in Einheiten von 1 Kbyte berechnet und pro Ordner ausgegeben.

    Ist das Flag -c angegeben, wird am Ende noch eine Gesamtsumme ausgegeben.

  • 55WIS – SS 2020 - Teil 3/Shell-Kommandos

    Ausgabe des Datums (date)

    Aufruf

    date

    Es wird das aktuelle Datum mit der Uhrzeit ausgegeben.

  • 56WIS – SS 2020 - Teil 3/Shell-Kommandos

    Anzeige der Prozesse (ps)

    Aufruf

    ps [-lax]

    Es werden die an das Login gebundenen Prozesse ausgegeben, wobei die Flags die Anzahl sowie den Umfang der ausgegebenen Informationen steuert.

    Flag -l bewirkt eine lange Ausgabe mit vielen Informationen neben der Prozessnummer (PID), -a und -x bewirken, dass auch andere Prozesse ausgegeben werden.

  • 57WIS – SS 2020 - Teil 3/Shell-Kommandos

    Anzeige der Prozesse (top)

    Aufruf

    top [-c] [-i]

    Top listet die Prozesse mit den größten verbrauchten Zeiten auf.

    Das Flag -c bewirkt, dass die gesamte Kommandozeile aufgelistet wird (anstatt nur der Kommandoname).

    Das Flag -i bewirkt, dass nur die aktiven Prozesse angezeigt werden.

  • 58WIS – SS 2020 - Teil 3/Shell-Kommandos

    Nun wieder etwas entspannen...