Teil 3: Shell und einige...
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...