Diese Liste gibt einen kurzen Überblick über einige wichtige Shellkommandos.
Auch wenn viele der Meinung sind, dass grafische Oberflächen das Nonplusultra darstellen, kommt der Administrator nicht ohne die Shell aus.
Sie ist ein extrem leistungsfähiges Werkzeug zur Konfiguration und Fehlersuche.
In die Shell ist eine komplette Programmierumgebung installiert, mit der einzelne Kommandos in nahezu beliebiger Kombination zu Scripte zusammengefasst werden können.
Das sind ausführbare Textdateien, die Kommandoabfolgen enthalten und mit einem einfachen Texteditor erstellt werden können.
Mit solchen Scripten können komplexe Aufgaben automatisiert werden und so erheblich Arbeit sparen helfen.
Auch der Anwender kann die Shell verwenden, oder möchten Sie z.B. 2000 Dateien in einer graphischen Oberfläche suchen, konvertieren, umbenennen und neu einsortieren?
In der Shell ist das ein Einzeiler!
Diese Aufstellung ist weder vollständig noch (leider) fehlerfrei.
Sie soll lediglich dazu dienen, einen kurzen Überblick zu den Befehlen zu geben und ersetzt natürlich nicht das Lesen der man-Pages der Befehle, denn die Implementierung der einzelnen Kommandos ist auf den verschiedenen LinuX-Systemen sehr unterschiedlich.
Als Gedächtnisstütze und Suchhilfe ist sie jedoch allemal ausreichend.
Ich habe dabei interne und externe Kommandos aufgenommen, da sie für die shell-Programmierung gleich wichtig sind.
Die internen shell-Kommandos habe ich in der Liste durch einen vorangestellten Stern gekennzeichnet(*).
Ich werde die Liste fortlaufend ergänzen (wann immer ich Zeit dazu finde) und bin für Hinweise zu Verbesserungen jederzeit dankbar.
! | Negation des exit-status |
! Kommando |
Die Verwendung des Operators ! vor einem Kommando bewirkt eine Negation des exit-status des Kommandos. Aus dem exit-status 0 (Null) true wird der exit-status 1 false. Sollte das Kommando einen exit-status >0, also false liefern, so wird daraus durch das vorangestellte ! eine 0 (Null) true. Dieser Operator ist z.B. bei if-Entscheidungen sinnvoll.
[ | Testen von Ausdrücken |
[ Ausdruck ] |
Das Kommando [ ist eine verkürzte Schreibweise für das Kommando test. Beim Aufruf des Komandos [ wird alles bis zum nächsten folgenden ] als Ausdruck interpretiert. Da es sich um Kommandonamen handelt, muss man darauf achten, dass [ links und rechts von Trennzeichen (Leerzeichen oder Tabulatoren) umgeben ist, damit es auch als Kommando erkannt wird. Vor dem ] muss ebenfalls ein Trennzeichen (Leerzeichen oder Tabulator) und dahinter ein Leerzeichen, Tabulator, Semikolon oder Zeilenumbruch folgen. Außerdem sollte man Zeichenketten auf jeden Fall in Hochkommata einschliessen, da diese ja selbst [,] und Leer- oder Tabulatorzeichen enthalten können. Um diese zu quoten und somit unliebsame Quereffekte zu vermeiden, sollte man sich die Schreibweise mit Hochkommata grundsätzlich angewöhnen, das gilt für die anderen Kommandos die mit Zeichenketten arbeiten in ähnlicher Weise. Bei einem Fehler in der Schreibweise erzeugt die bash eine Fehlermeldung. Mit [ können Eigenschaften von Dateien getestet werden oder Zeichenketten und numerische Werte miteinander verglichen werden. Es stehen Dabei folgende Vergleichsoperatoren zur Verfügung:
Operator | Bedeutung |
-b Datei | wahr, wenn die Datei existiert und eine blockorientierte Gerätedatei ist (z.B. /dev/hda1) |
-c Datei | wahr, wenn die Datei existiert und eine zeichenorientierte Gerätedatei ist (z.B. /dev/ttyS0) |
-d Datei | wahr, wenn die Datei existiert und ein Verzeichnis ist |
-f Datei | wahr, wenn die Datei existiert und eine normale Datei ist |
-g Datei | wahr, wenn die Datei existiert und das Set-Group-ID-Bit gesetzt ist |
-k Datei | wahr, wenn die Datei existiert und das Sticky-Bit gesetzt ist |
-p Datei | wahr, wenn die Datei existiert und eine Named-Pipe ist |
-r Datei | wahr, wenn die Datei existiert und lesbar ist |
-s Datei | wahr, wenn die Datei existiert und mindestens ein Zeichen enthält |
-u Datei | wahr, wenn die Datei existiert und das Set-User-ID-Bit gesetzt ist |
-w Datei | wahr, wenn die Datei existiert und schreibbar ist |
-x Datei | wahr, wenn die Datei existiert und ausführbar ist |
-n Zeichenkette | wahr, wenn die Zeichenkette mindestens ein beliebiges Zeichen (auch Leerzeichen) enthält |
-z Zeichenkette | wahr, wenn die Zeichenkette ein NULL-String ist, dh die Länge 0 besitzt |
Zeichenkette1 = Zeichenkette2 | wahr, wenn die Zeichenketten identisch sind |
Zeichenkette1 != Zeichenkette2 | wahr, wenn die Zeichenketten nicht identisch sind |
Wert1 -eq Wert2 | wahr, wenn Wert1 und Wert2 gleich sind (equal) |
Wert1 -ne Wert2 | wahr, wenn Wert1 und Wert2 ungleich sind (no equal) |
Wert1 -lt Wert2 | wahr, wenn Wert1 kleiner als Wert2 ist (less then) |
Wert1 -gt Wert2 | wahr, wenn Wert1 größer als Wert2 ist (greater then) |
Wert1 -le Wert2 | wahr, wenn Wert1 kleiner oder gleich Wert2 ist (less equal) |
Wert1 -ge Wert2 | wahr, wenn Wert1 größer oder gleich Wert2 ist (greater equal) |
-t Kanalnummer | wahr, wenn die Kanalnummer geöffnet und mit einem Terminal verknüpft ist. |
Die verschiedenen Testformen können ihrerseits wieder durch folgende logische Operatoren verknüpft werden
Operator | Bedeutung |
! | logische Verneinung des Tests (Negation) |
-a | logische UND-Verknüpfung zweier Tests |
-o | logische ODER-Verknüpfung zweier Tests |
Durch Klammerung mit runden Klammern können die einzelnen Testausdrücke gruppiert werden, sodass komplexe Testmuster erstellt werden können. Zu beachten ist jedoch, dass die runde Klammer ein Sonderzeichen der shell ist und eine Subshell aufrufen würde. Deshalb sind alle runden Klammern innerhalb eines Testausdruckes durch einen vorangestellten backslash (\) zu quoten. Das Ergebis des Vergleichs wird als exit-status zurückgegeben. Hierbei gilt:
exit-status | Bedeutung |
0 | Das Ergebnis des Vergleiches ist wahr true |
1 | Das Ergebnis des Vergleiches ist falsch false |
2 | Bei der Ausführung des Kommandos ist ein Fehler aufgetreten. Eine Fehlerausgabe erfolgt auf Standarderr. Da das Script, in dem [ verwendet wird trotzdem weiter ausgeführt wird, sollte man beim Design des Scriptes beachten, dass nun z.B. bei einer if-Entscheidung der else-Zweig durchlaufen und das Script dann weiter ausgeführt wird, obwohl der Test fehlerhaft war. Wenn dort keine Vorkehrungen getroffen wurden, kann das zu unvorhersehbaren Reaktionen des Scriptes führen. |
128+N | Das Kommando wurde durch das Signal Nummer N unterbrochen |
: | Leerbefehl NOP |
: [Parameter] |
Der Doppelpunkt ist ein Leerbefehl, der selbst keinerlei Funktion besitzt, die Shell aber zur Ausführung der verschiedenen Expansionen zwingt.
Denkbar wäre das zB. für die Ausführung arithmetischer Expansionen ähnlich dem let-Kommando.
Beispiel:
: $(( TEST=TEST+8))
ALIAS | Festlegung von Kurzformen für Kommandoaufrufe |
alias [Name[=Wert]] |
In der shell (bash) können durch das Kommando alias Kurzformen für den Aufruf von Kommandos oder Programme definiert werden. Die bash durchsucht die Eingabezeile nach Alias-Namen und ersetzt (expandiert) sie durch den Ersetzungstext Wert. Das Kommando alias kann auf verschiedene Weise genutzt werden:
Aufruf | Bedeutung |
alias | Beim Aufruf ohne Namen listet alias alle omentan durch den User definierten Aliase auf |
alias Name | Beim Aufruf mit einem Alias-Namen zeigt alias die omentane Definition des Alias Namen an. Sollte kein Alias mit diesem Namen existieren, so wird ein exit-status >0 zurückgegeben. |
alias Name=Wert | Bei diesem Aufruf wird ein Alias mit dem Aliasnamen Name definiert. Wenn die bash diesen Alias-Namen in der Eingabezeile findet, wird er durch das Kommando in Wert ersetzt. Wenn der Kommandostring Wert Leerzeichen oder Sonderzeichen besitzt, so ist er in Anführungszeichen oder Hochkomata zu setzen. Endet der Ersetzungtext Wert auf ein Leerzeichen, so wird auch das darauf folgende Wort in der Eingabezeile auf ein Alias untersucht. |
BASENAME | Ausschneiden von Dateinamen aus Pfadnamen |
basename Pfadname [SUFFIX] basename OPTION |
Das Kommando basename extrahiert aus einem Pfadnamen den eigentlichen Dateinamen heraus.
Das Kommando trennt also den letzten Teil des Pfadnamen ab und gibt ihn über den Standardout aus.
Durch die Angabe eines SUFFIX wird dieses vom gefundenen Dateinamen abgezogen.
Siehe auch dirname.
BG | Prozesse in den Hintergrund schicken |
bg [Jobnummer] |
it dem Kommando bg wird in der shell ein Prozeß im Hintergrund asynchron weiter abgearbeitet. In der bash ist jedes Hintergrundkommando durch eine eindeutige Jobnummer identifiziert. Durch das Kommando fg kann ein Hintergrundprozeß in den Vordergrund als synchroner Prozeß geholt werden. Als Vordergrundkommando werden sie durch das Signal SIGSTOP (oft Tastenkombination <Strg>+z) angehalten. Anschließend kann der Prozeß it dem Kommando bg wieder in den Hintergrund geschickt werden. Der Job kann auf verschiedene Weise identifiziert werden:
Jobangabe | Bedeutung |
%Nummer | Prozeß mit der angegebenen Jobnummer |
%Text | Prozeß dessen Kommandozeile mit Text beginnt |
%?Text | Prozeß, dessen Kommandozeile den Text enthält |
%% | aktueller Prozeß |
%- | vorhergehender Prozeß |
BREAK | Schleifenabbruch |
break [Zahl] |
Mit dem Kommando break können Schleifen vorzeitig beendet werden. In der bash sind das die for, while, until- Schleife und der select-Befehl. Mit dem Parameter Zahl kann bestimmt werden, wie viele Schleifen beendet werden sollen. Ohne Parameter wird nur die aktuelle Schleife verlassen.
CAL | Kalender |
cal [[Monat] Jahr] |
Das Kommando cal zeigt einen Kalender an. Wird cal ohne Parameter aufgerufen, so erscheint eine Übersicht des aktuellen Monats (Systemdatum date). Wird nur eine Zahl als Parameter angegeben, so wird sie als Jahreszahl interpretiert und es wird der Jahreskalender für dieses Jahr ausgegeben. Bei zwei Parametern wird die erste als Monat und die zweite als Jahreszahl interpretiert und der Kalender des entsprechenden Monats ausgegeben. Wenn ungültige Werte angegeben werden, so erzeugt cal den exit-status > 0.
CASE | Mehrfachverzweigung |
case Variable in Muster1) Kommandos;; Muster2) Kommandos;; *) Kommandos;; esac |
Durch das Steuerkonstrukt case wird ein Variablenwert mit einer Reihe von Mustern verglichen. Trifft eines der Muster auf den Variablenwert, so werden die Kommandos die nach dem Muster zwischen der runden Klammer und dem Doppelsemikolon ausgeführt. Das Muster kann die Jokerzeichen *,?,[...] enthalten. Durch die eckigen Klammern können Bereichsangaben definiert werden. Mehrere Muster können mit einem ¦ logisch Oder verknüpft werden. Sollte kein Muster zutreffen, so bietet * eine Defaultverzweigung.
CAT | Dateiausgabe |
cat [-s] [Datei ....] |
Das Kommando liest den Inhalt einer oder mehrerer Dateien und gibt sie über den Standardout aus. Wird keine Datei oder der Parameter - angegeben, so liest cat die Daten von Standardin. Die Option -s unterdrückt auftretende Fehlermeldungen.
CD | Verzeichniswechsel |
cd cd - cd [Verzeichnis] |
Mit cd wird das aktuelle Verzeichnis gewechselt. Ziel ist das Verzeichnis, das als Parameter mitgegeben wird. Ohne Angabe eines Parameters wechselt cd in das Homeverzeichnis des Users. Mit dem Parameter - wird in das Verzeichnis OLDPWD gewechselt. Im Normalfall ist dass das Verzeichnis des letzten cd-Aufrufs. Die Pfadangabe kann absolut (z.B. /lib/modules) oder relativ (z.B. ../modules) erfolgen.
CHGRP | Änderung der Gruppenzugehörigkeit von Dateien |
chgrp Gruppe Datei [Datei ....] |
Der Besitzer der Datei (oder root) kann die Zugehörigkeit einer Datei zu einer Gruppe ändern. Der erste Parameter Gruppe ist der Name oder die Nummer der neuen Gruppe. Beide Werte müssen in der Datei /etc/group eingetragen sein. Der zweite Parameter und die eventuell folgenden Parameter Datei sind die Dateinamen.
CHMOD | Änderung der Zugriffsrechte von Dateien |
chmod Rechte Datei [Datei ...] |
Mit dem Kommando chmod können die Zugriffsrechte einer oder mehrerer Dateien durch den Besitzer oder root geändert werden.
Das Kommando chmod akzeptiert zwei Schreibweisen für die Rechtevergabe. Eine symbolische und eine oktale Schreibweise.
Die symbolische Schreibweise besitzt folgende Syntax:
[ugoa][+-=][rwxs]
Dabei bedeuten u-Besitzer, g-Gruppe, o-Other (Rest der Welt) und a-All (ugo zusammen). Die Rechte können addiert (+), subtrahiert (-) oder absolut (=) gesetzt werden.
Die Zugriffsrechte selbst stehen für r-Lesen, w-Schreiben, x-Ausführen und s-SETUID/SETGID.
Mehrere symbolische Äderungen werden durch Komma voneinander getrennt.
Bei der oktalen Schreibweise ist jeder Stelle des Oktalcodes ein Recht zugewiesen. Die einzelnen Bits des Oktalcodes haben dabei folgende Bedeutung:
Durch Verknüpfung der Bits können mehrere Rechte zugleich verändert werden.
Wert | Bedeutung |
4000 | Set-UID-Bit |
2000 | Set-GID-Bit |
1000 | Sticky-Bit |
0400 | Leserecht für den Besitzer |
0200 | Schreibrecht für den Besitzer |
0100 | Ausführungsrecht für den Besitzer |
0040 | Leserecht für die Gruppe |
0020 | Schreibrecht für die Gruppe |
0010 | Ausführungsrecht für die Gruppe |
0004 | Leserecht für Other (Alle) |
0002 | Schreibrecht für Other (Alle) |
0001 | Ausführungsrecht für Other (Alle) |
CHOWN | Änderung des Besitzers von Dateien |
chown Besitzer Datei [Datei ...] |
Mit chown kann der Besitzer einer oder mehrerer Dateien verändert werden. Der zukünftige Besitzer muss in der Datei /etc/passwd eingetragen sein. Die Änderung darf nur vom Besitzer der Datei oder root vorgenommen werden. Wenn das SETUID oder das SETGID-Bit gesetzt sind, so wird dieses zurückgesetzt.
CMP | Vergleich von Dateien |
cmp [-l] [-s] Datei1 Datei2 |
Das Kommando cmp vergleicht den Inhalt zweier Dateien miteinander. Ohne Angabe einer Option, endet cmp bei dem ersten auftretenden Unterschied und zeigt die Nummer des Zeichens und die Zeilennumer an, in der der Unterschied gefunden wurde. Mit der Option -l (list) werden die Unterschiede zwischen beiden Dateien Dateien aufgelistet. In einer Zeile erscheinen pro gefundenen Unterschied als erstes die Zeichenposition, der oktal kodierte Zeichencode des Zeichens aus Datei1 und der oktal kodierte Zeichencode des Zeichens aus Datei2, die an dieser Stelle gefunden wurden. Mit der Option -s (silent) wird die Ausgabe der Fehler unterdrückt. Der exit-status macht eine Aussage über das Vergleichsergebnis. Der exit-status 0 (Null, wahr) bedeutet, dass die Dateien identisch sind. Der exit-status 1 (false) gibt an, das die Dateien sich unterscheiden. cmp akzepriert auch Dateien unterschiedlicher Länge, sowie Binärdateien.
CONTINUE | vorzeitiger Schleifendurchlauf |
continue [Zahl] |
Mit continue wird der nächste Schleifendurchlauf veranlasst. In der bash ist continue in der for, while, until-Schleife und innerhalb der select-Anweisung verwendet werden. Die bash fährt nach dem Kommando continue mit dem nächsten Schleifentest fort. Mit dem Parameter Zahl kann angegeben werden, wie viele Schleifen verlassen werden sollen. Wird continue ohne Parameter aufgerufen, so ist das mit continue 1 identisch.
CP | Kopieren von Dateien |
cp Datei1 Datei2 cp Datei1 [Datei2 ...] Verzeichnis |
In der ersten Form wird die Datei1 unter dem neuen Namen Datei2 zusätzlich abgelegt.
Dabei kann sich der ursprüngliche Dateiname als auch der Pfad der Datei ändern.
Wenn die Zieldatei schon existiert, wird sie ohne Nachfrage mit der Datei1 überschrieben.
In der zweiten Form werden eine oder mehrere Dateien unter dem selben Namen in ein anderes Verzeichnis hineinkopiert.
Auch hier werden eventuell bereits vorhandene Dateien mit den selben Namen überschrieben.
Die Pfadnamen können absolut und relativ angegeben werden.
CUT | Zeilenbereiche ausschneiden |
cut -cSpalten [Datei] cut -fFelder [-dZeichen] [-s] [Datei] |
Mit cut können Teile von Zeilen einer Datei ausgeschnitten werden. Wenn keine Zeile angegeben wird, erwartet cut die Daten auf Standardin. Es wird für jede Zeile der gleiche Bereich ausgeschnitten und das Ergebnis an Standardout ausgegeben. Der Bereich kann absolut in Spalten oder relativ durch Angabe von Feldern, die durch das Trennzeichen Zeichen separiert sind, angegeben werden. Wird kein Trennzeichen angegeben, so wird das Tabulatorzeichen genutzt. Die Optionen -f und -c erwarten die Angabe einer Liste von werten. Diese Liste erlaubt unterschiedliche Schreibweisen:
Mit der Option -d kann ein anderes Trennzeichen als der tabulator definiert werden. Wenn es sich um ein Sonderzeichen handelt, dann muss es gequotet werden. Mit der Option -s werden Zeilen die das Trennzeichen nicht enthalten vollständig ignoriert.
DATE | Abfragen und Setzen von Uhrzeit und Datum |
date [+Format] date mmddHHMM[yy] |
Mit dem Kommando date können Uhrzeit und Datum des Systems gestzt werden. In der ersten Form kann die Systemzeit abgefragt werden. Wird kein Format angegeben, so wird ein Standardformat gewählt. Mit Hilfe des Parameters Format kann die Ausgabe der Systemzeit entsprechend formatiert werden. Beginnt der erste Parameter mit +, so interpretiert date diesen als Formatierungszeichenkette. Die Formatierungszeichenkette kann alle Zeichen (also auch Text) und entsprechende Escapesequenzen enthalten, die eine besondere Bedeutung besitzen. Die Escapesequenzen werden durch ein Prozentzeichen eingeleitet, dem ein Steuerungszeichen folgt. Bei der Ausgabe ersetzt date die Escapeseuenzen durch entsprechende Teile aus Uhrzeit und Datum des Systems. Folgende Steuerungszeichen sind verfügbar:
Steuerungszeichen | Bedeutung |
a | abgekürzter Name des Wochentages |
A | voller Name des Wochentages |
b | abgekürzter Name des Monats |
B | voller Name des Monats |
c | Standardformat für Datum und Uhrzeit |
C | Jahrhundert 00..99 |
d | Tag des Monats 01...31 |
D | entspricht %m/%d/%y |
e | Tag des Monats 1..31 |
F | entspricht %Y-%m-%d |
h | abgekürzter Name des Monats |
H | Stundenangabe im 24-Stunden Format 00..23 |
I | Stundenangabe im 12-Stunden Foramt 00..12 |
j | Tag des Jahres 001..366 |
k | Stundenangabe im 24-Stunden Format 0..23 |
l | Stundenangabe im 12-Stunden Format 0..12 |
m | Nummer des Monats 01..12 |
M | Minutenangabe 00..59 |
n | Zeilenschaltung |
N | Nanosekunden 000000000..999999999 |
p | Angabe PM oder AM |
P | Angabe pm oder am |
r | Uhrzeit im 12-Stunden Format hh:mm:ss [AM] |
R | Uhrzeit im 24-Stunden Formt hh:mm |
s | Anzahl der Sekunden seit dem 1.1.1970 0.00 UTC |
S | Sekunden 00..60 |
t | Tabulator |
T | Uhrzeit im 24-Stunden Formt hh:mm:ss, entspricht %H:%M:%S |
u | Tag der Woche Montag=1, Dienstag=2, ..., Sonntag=7 |
U | Kalenderwoche mit Sonntag als erstem Wochentag 00..53 |
V | Kalenderwoche mit Montag als erstem Wochentag 01..53 |
w | Tag der Woche Sonntag=0, Montag=1,..., Sonnabend=6 |
W | Kalenderwoche mit Montag als erstem Wochentag 00..53 |
y | letzte zwei Stellen der Jahreszahl |
Y | Jahreszahl, z.B. 2006 |
z | numerische Angabe der Zeitzone (+0200) |
Z | Name der Zeitzone |
Sollte der Formatstring Leerzeichen oder Sonderzeichen enthalten, so ist er in Anführungszeichen zu setzen.
In der zweiten Form setzt date das Systemdatum neu. Das darf nur root.
Bei diesem Aufruf muss ein bestimmtes Format eingehalten werden.
Die Zeitangabe wird in numerischer Form mmddHHMM[yy[yy]] in der Reihenfolge Monatsnummer, Tag im onat, Stunde, Minute, evtl Jahr
DECLARE | Deklarieren von bash-Variablen |
declare [Option] [Name[=Wert]] |
Variablen sind allgemein untypisiert und werden bei ihrer ersten Benutzung automatisch declariert.
Mit dem Kommando declare ist es möglich, den Variablen verschiedene Attribute und gleichzeitig einen Wert zuzuweisen.
Allgemein ist eine Deklarierung von Variablen und Arrays nicht notwendig.
declare kennt folgende Optionen:
Option | Bedeutung |
-a | Die Variable wird als eindimensionales Array mit numerischem Index definiert. Als Index sind die natürlichen Zahlen einschließlig der Null zugelassen. |
-A | Die Variable wird als eindimensionales assoziatives Array definiert. Der Index ist dabei ein String. |
-f | Der Name bezeichnet eine Shell-Funktion. |
-i | Die Variable enthält Integerwerte. |
-p | Typ und Wert der Variable werden ausgegeben. Ohne Angabe eines Namens erfolgt die Angabe für alle in der bash definierten Variablen. |
-r | Die Variable ist nur lesbar, Schreiboperationen führen zu einer Fehlermeldung. Der Variable muss also vorher oder mit der Deklaration ein Wert zugewiesen werden, ansonsten ist die Variable schreibgeschützt und leer. |
-t | Trace (für Funktionen) |
-x | Die Variable ist eine Umgebungsvariable der bash (siehe export). |
Die Kommandos declate und typeset sind identisch. Mit unset können die variablen wieder vernichtet werden.
DD | Kopieren und Konvertieren von Dateien |
dd [Option=Wert] |
dd wird hauptsächlich zum kopieren großer Datenmengen benutzt. dd kopiert die Daten blockweise ohne weitere Interpretation 1:1. Damit können z.B. Images von Partitionen gezogen werden oder physiche Kopien von einer Partition auf eine andere übertragen werden. Ferner kann dd Konvertierungen von Blockgrößen, Zeichensätzen usw vornehmen. dd kennt folgende Optionen:
Sonderzeichen | Bedeutung |
if=Datei | if(inputfile) Über die angegebene Datei werden die Daten gelesen. Der Dateiname kann auch zu einer Gerätedatei gehören (z.B. /dev/fd0) von dem die Daten gelesen werden. Ohne den Parameter if liest dd vom Standardin. |
of=Datei | of(outputfile) Die Ausgabe erfolgt über die angegebene Datei. Der Dateiname kann auch zu einer Gerätedatei gehören (z.B. /dev/fd0) auf die die Daten geschrieben werden. Ohne den Parameter of schreibt dd auf Standardout. |
ibs=Zahl | Zahl gibt die Größe des Eingabepuffers an. Damit wird festgelegt, wieviele Zeichen mit einem mal eingelesen werden können. |
obs=Zahl | Zahl gibt die Größe des Ausgabepuffers an |
cbs=Zahl | Größe des Umsetzungspuffers (z.B. für ASCII->EBCDIC) |
bs=Zahl | Setzt ibs und obs auf der Wert Zahl. |
skip=Zahl | Beim Einlesen wird die angegebene Zahl von Blöcken übersprungen. |
seek=Zahl | Bei der Ausgabe wird die angegebene Zahl von Blöcken übersprungen. |
count=Zahl | Anzahl der zu lesenden Blöcke. |
conv=Auswahl | Der Option können eine oder mehrere durch Komma getrennte Auswahlen mitgegeben werden.
Dadurch kann festgelegt werden, welche Konvertierungen der Daten vorgenommen werden sollen.
Es sind folgende Schl&umml;sselworte erlaubt.
|
Die Angaben der Parameter ibs, obs, cbs und bs gelten als Byteanzahl, wenn keine Einheit angegeben wird. Durch anhängen des Buchstaben k wird die Zahl als Kilobyte und duch den Buchstaben b als Blockanzahl (512Byte default, wenn keine andere Blockgröße festgelegt wird.) interpretiert.
DF | Anzeigen des freien Festplattenspeichers |
df [Optionen] [Gerätedatei(en)] |
Das Kommando df gibt einen Überblick über die Belegung des gemounteten Festplattenplatzes. Ohne Angabe einer Gerätedatei wie z.B. /dev/hda1 listet df alle gemounteten Festplattendevices auf und zeigt Informationen zur Gesamtgröße sowie dem belegten und freien Platz an. Durch die Angabe einer oder mehrerer existierender Gerätedateien wird die Anzeige auf diese beschränkt. Mit mehreren Optionen kann das Verhalten von df beeinflusst werden.
DIFF | Unterschiede zwischen Dateien ermitteln |
diff [Optionen] Datei1 Datei2 |
Mit diff können Unterschiede zwischen zwei Dateien ermittelt werden.
Als Ausgabe erscheint eine Beschreibung der Unterschiede.
Diese Beschreibung enthält Informationen welche Zeilen in Datei1 verändert, gelöscht oder eingefügt werden müssten, damit sie mit Datei2 übereinstimmt.
Bei einem Unterschied gibt diff zuerst eine kurze Information zur Position des Unterschiedes der Dateiinhalte der Form:
Zeilennummer(Datei1)[,Zeilennummer(Datei1)..] Kennung (adc) Zeilennummer(Datei2)[,Zeilennummer(Datei2)..]
aus, wobei Die Kennungen a,d und c für
Folgende Oprionen beeinflussen die Arbeitsweise von diff:
Option | Bedeutung |
-b | Leerzeichen werden beim Vergleich nicht herangezogen |
-e | Erzeugung eines ed-Scripts (ed-textorientierter Zeileneditor) mit dem beide Dateien zur Übereistimmung geführt werden. |
-f | Umkehrung der Option -e. Es wird ein ed-Script erstellt, dass Datei2 in Übereinstimmung mit Datei1 bringt. |
Sollten beide Dateien identisch sein, so erzeugt diff den exit-status 0, wenn Unterschiede gefunden werden, wird der exit-status 1 zurückgegeben. Sollte ein Fehler während diff aufgetreten sein, so ist der exit-status 2.
DIRNAME | Abschneiden von Dateinamen aus Pfadnamen |
dirname Pfadname dirname OPTION |
Das Kommando dirname schneidet den Dateinamen /dateiname am Ende eines Pfadnamen ab.
Das Kommando trennt also den letzten Teil des Pfadnamen ab und gibt den verbleibenden Pfad über den Standardout aus.
Mit der Ausgabe von . ist das aktuelle Arbeitsverzeichnis gemeint.
Siehe auch basename.
DO ... DONE | Programmsequenz für Schleifen |
Schleifenkonstrukt do Kommando1; Kommando2; ... KommandoN; done |
Mit do und done wird eine Programmsequenz innerhalb der Schleifenbefehle for, until und while eingeschlossen, die mehrfach ausgeführt werden soll.
Die einzelnen Kommandos können als Liste in der Form
SCHLEIFENKOPF do Kommando1; Kommando2; ... KommandoN; done
oder auch über mehrere Zeilen verteilt notiert werden, also in der Form
SCHLEIFENKOPF
do
Kommando1;
Kommando2;
...
KommandoN;
done
Innerhalb der Sequenz dürfen sich wiederum komplette Schleifen befinden, sodass diese auch geschachtelt werden können.
Ein vorzeitiges Verlassen der Sequenz ist nur durch break oder den Abbruch des ganzen Scripts mit exit möglich.
Mit continue kann ein neuer Schleifendurchlauf ausgelöst werden, noch bevor die ganze Sequenz abgearbeitet ist.
DU | belegten Plattenplatz abfragen |
du [-a] [-s] [Datei(en) oder Verzeichnis(se)] |
Das Kommando du zeigt die Anzahl der Blöcke an, die durch eine oder mehrere Dateien oder Verzeichnisse oder ganzer Verzeichnisbäume belegt werden. Die Blockgröße entspricht 512Bytes. Wird ein Verzeichnisname angegeben, so listet du rekursiv auch die Belegung für die Unterverzeichnisse mit auf. Wird keine Datei oder Verzeichnis angegeben, so bezieht sich du auf das aktuelle Verzeichnis. Mit -s kann die Rekursion für Unterverzeichnisse abgeschaltet werden. Mit -a erfolgt die Anzeige für alle Dateien und Unterverzeichnisse einzeln.
ECHO | Ausgabe von Text |
echo [-n] [-e] Text |
Das echo-Kommando gibt einen Text über den Standard-Ausgabekanal aus. An die Ausgabe wird ein Zeilenvorschub gehängt. Dieser kann mit der Option -n unterdrückt werden. Um Leer- und Sonderzeichen zu maskieren, muß der Text in Anführungszeichen oder Hochkommata eingeschlossen werden. Mit der Option -e werden im Text befindliche Sonderzeichen interpretiert. Folgende Sonderzeichen werden erkannt:
Sonderzeichen | Bedeutung |
\0NNN | Ausgabe eines oktal codierten ASCII-Zeichens |
\\ | Ausgabe eines Backslashs (backslash) |
\a | Fehlerzeichen (Glocke) (bel) |
\b | Ausgabe eines Backspace (backspace) |
\c | Ende der Ausgabe und Unterdrückung des Zeilenvorschubs |
\f | Ausgabe eines Seitenvorschubs (form feed) |
\n | Ausgabe eines Zeilenvorschubs (new line) |
\r | Ausgabe eines Return (carriage return) |
\t | Ausgabe eines horizontalen Tabulators (horizontal tab) |
\v | Ausgabe eines vertikalen Tabulators (vertical tab) |
\e | Ausgabe eines ESC-Zeichens (escape) |
EGREP | erweiterte Suche mit regulären Ausdrücken |
egrep [Optionen] [Suchmuster] [Datei(en)] |
Das Kommando egrep arbeitet ähnlich wie das Kommando grep, jedoch mit wesentlich erweiterten Möglichkeiten. egrep durchsucht eine oder mehrere Dateien nach einem bestimmten Suchmuster. Wird keine Datei angegeben, so liest egrep den Datenstrom von Standardin. Eine Besonderheit gegenüber grep ist die Option -f. Damit kann statt eines Suchmusters eine Suchmusterdatei an egrep übergeben werden, aus der egrep die Suchmuster lesen kann. Folgende Optionen können bei egrep verwendet werden:
Option | Bedeutung |
-v | Alle Zeilen, außer den Zeilen, die das Suchmuster enthalten, werden ausgegeben. |
-c | Die Anzahl der gefundenen Zeilen wird ausgegeben. |
-i | Bei der Suche wird nicht zwischen Groß- und Kleinschreibung unterschieden. |
-l | Es wird nur der Name der Dateien angezeigt, die das Suchuster enthalten. |
-n | Die Zeilen werden nummeriert. |
-f Suchmusterdatei | Das Suchmuster wird aus einer Datei gelesen. |
-e Suchmuster | Das Suchmuster wird mit einer Option eingeleitet. Das ist sinnvoll, wenn das Suchmuster mit einem - beginnt und sonst fälschlicherweise als Option interpretiert werden könnte. |
Das Suchmuster kann verschiedene Sonderzeichen enthalten und damit einen regulären Ausdruck bilden. Damit können nicht nur festgelelegte Zeichen, sondern auch ganze Zeichengruppen in das Suchmuster aufgenommen werden. Folgende Sonderzeichen können verwendet werden.
Option | Bedeutung |
[...] | Bereichsangabe für eine Menge von Zeichen, die an dieser Position erlaubt sind. Die zulässigen Zeichen werden ohne Trennzeichen aufgelistet. |
[^...] | Negation der Bereichsangabe. Es wird eine Menge von Zeichen aufgelistet, die an dieser Stelle nicht auftreten dürfen. |
. | Ein einzelnes, beliebiges Zeichen (auch Leerzeichen) |
* | Wiederholungszeichen. Es wirkt auf das unmittelbar davor stehende Zeichen oder den Bereich. Das Zeichen darf keinmal, einmal oder mehrmals vorkommen. |
^ | Symbolisiert den Zeilenanfang innerhalb des Suchmusters. |
$ | Symbolisiert das Zeilenende innerhalb des Suchmusters. |
\{...\{ |
Wiederholungszeichen. Es wirkt auf das unmittelbar davor stehende Zeichen oder den Bereich.
Es existieren drei unterschiedliche Möglichkeiten, die Anzahl festzulegen.
|
+ | Wiederholungszeichen. Es wirkt auf das unmittelbar davor stehende Zeichen oder den Bereich. Das Zeichen muss mindestens einmal vorkommen. |
? | Wiederholungszeichen. Es wirkt auf das unmittelbar davor stehende Zeichen oder den Bereich. Das Zeichen darf höchstens einmal vorkommen. |
| | logische ODER-Verknüpfung zweier Suchmuster. Muster1 | Muster2. |
(...) | Gruppierung von Mustern. |
Um die Expansion der Sonderzeichen durch die shell zu verhindern, müssen die Sonderzeichen gequotet werden, oder das Suchmuster wird in Hochkommata oder Anführungszeichen eingeschlossen.
Es sind die Besonderheiten der Parametersubstitution der shell zu beachten, da einige Sonderzeichen auch innerhalb der Kommata gelten.
Diese sind dann zu quoten.
Siehe auch grep und fgrep.
ELIF | Mehrfachauswahl der if-Entscheidung |
if .. then ... elif ... then ... elif ... then ... else ... fi |
elif gehört zum Kontrollkonstrukt der if-Entscheidung und bildet die Einleitung einer Mehrfachauswahl. Nachdem die Bedingung im if-Zweig getestet wurde und je nach exit-status des Testkommandos der if-Zweig ausgeführt wurde oder nicht, wird die nächste mit elif definierte Bedingung getestet. elif verhält sich dabei wie ein weiteres if, und je nach exit-status des Testkommandos wird entweder der elif-Zweig nach then ausgeführt oder mit dem folgenden elif oder else die Bearbeitung fortgesetzt oder bei fi die if-Entscheidung verlassen.. Das Ende des elif-Programmblocks wird also entweder durch ein weiteres elif oder die Konstrukte else oder fi markiert. Siehe if.
ELSE | Alternativzweig der if-Entscheidung |
if .. then ... else ... fi |
else gehört zum Kontrollkonstrukt der if-Entscheidung und bildet die Einleitung des Alternativzweiges. Dieser schliesst ein oder mehrere shell-Kommandos ein, die abgearbeitet werden, wenn keine der vorhergehende(n) if- oder elif-Entscheidungen ein true geliefert hat. Das Ende des else-Alternativzweiges wird durch fi festgelegt. Siehe if.
ESAC | Abschluss der case-Auswahl |
case ..... esac |
esac gehört zum Kontrollkonstrukt der case-Auswahl und bildet den Abschluss des ganzen Konstrukts. Siehe case.
EVAL | Wiederholtes Auswerten von shell-Kommandos |
eval [Argument(e)] |
Mit dem Komando eval wird eine Eingabezeile nochmals durch die shell ausgewertet.
Im Normalfall expandiert die shell die Eingabezeile und führt das Kommando dann aus.
Wenn eine Variable aber den Namen einer Variable enthät (indirekte Adressierung), dann reicht das nicht aus.
Mit eval wird die Eingabezeile ein zweites Mal ausgeführt.
Sonderzeichen, die dabei nur einmal oder überhaupt nicht ausgewertet werden sollen, müssen deshalb ein oder mehrmals gequotet werden.
Auch eine mehrfache Verwendung von eval in der Form
eval eval .....
ist möglich, führt jedoch schnell zu sehr unübersichtlichen quotungen.
EXIT | Beenden der aktuellen shell |
exit [Rückgabewert] |
Der Aufruf dieses Kommandos beendet die aktuelle shell. Wird das Kommando in einer login-shell aufgerufen, so meldet man sich dadurch ab. Dem Kommando exit kann als Parameter ein Rückgabewert (natürliche Zahl von 0...255) mitgegeben werden. Dieser Wert wird dem Elternprozess als exit-status mitgeteilt. Ein Rückgabewert 0(Null) wird von der shell als Ende ohne Fehler interpretiert.
EXPORT | Exportieren von Shell-Variablen in das Environment |
export [Variablenname(n)] |
Shell-Variablen sind grundsätzlich lokal definiert. Eine gestartete Subshell kennt diese lokalen Variablen nicht. Sollte das jedoch gewünscht sein, dann kann die Variable durch export in das Environment übertragen werden, das die Subshell von der aufrufenden shell erbt. Ohne Parameter zeigt export eine Liste der exportierten Variablen. Ein rückschreiben des Inhaltes einer exportierten Variable aus einer Subshell an die aufrufende Shell erfolgt nicht, dh, wenn die Subshell den Wert einer exportierten oder auch lokalen Variable verändert, merkt die aufrufende (Mutter)shell davon nichts. Eine Datenübertragung von der Subshell zur Parentshell ist damit nicht möglich. In der bash können Variablen und Shellfunktionen exportiert werden. Siehe dazu declare und typeset.
EXPR | Auswerten und Berechnen von Ausdrücken |
expr Argument Operator Argument |
expr kann einfache Berechnungen und Vergleiche an numerischen Variablen und Zeichenketten vornehmen. Man sollte jedoch auf die Kommandos let und test zurückgreifen, da diese leistungsfähiger sind. expr führt die Operation mit den beiden Argumenten aus und gibt das Ergebnis über Standardout aus. Texte, die Ziffern enthalten, werden in numerische Werte umgewandelt. Für Berechnungen stehen folgende Operatoren zur Verfügung:
Operator | Bedeutung |
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
% | Modulo |
Wenn ein Vergleichsoperator benutzt wird, dann gibt expr entweder 0 für falsch oder 1 für wahr aus. Für Vergleiche können folgende Operatoren genutzt werden:
Operator | Bedeutung |
= | gleich |
!= | ungleich |
< | kleiner |
> | größer |
<= | kleiner oder gleich |
>= | größer oder gleich |
Für Zeichenketten bietet expr den Operator : um Teile aus einer Zeichenkette auszuschneiden. Das linke Argument ist die Zeichenkette und das rechte Argument ein Pattern it einem Suchmuster für einen regulären Ausdruck. Als Ergebnis gibt expr die Anzahl der Zeichen der Zeichenkette zurück, die dem Suchmuster entsprechen. Werden im Pattern runde Klammern verwendet, so wird nicht die Anzahl, sondern der übereinstimmende Text selbst zurückgegeben. Auch hierfür bietet die bash effiziente und schnellere interne Kommandos.
FALSE | Rückgabewert false, 1 |
false |
Das Komando false gibt den exit-status false (1) zurück. Das Gegenstück ist true.
FG | Hintergrundprozesse in den Vordergrund bringen |
fg [Jobnummer] |
Wenn man in der shell mehrere Hintergrundprozesse gestartet hat, kann man diese Prozesse einzeln auch wieder in den Vordergund holen. Dazu verwendet man das Kommando fg (foreground). Genauso wie das Kommando bg erwartet fg eine Jobnummer, die mit jobs erittelt werden kann. Der Job (Jobnummer) kann auf verschiedene Weise angegeben werden, eingeleitet wird die Angabe jeweils durch ein Prozentzeichen:
Jobangabe | Bedeutung |
%Nummer | Prozeß mit der angegebenen Jobnummer |
%Text | Prozeß dessen Kommandozeile mit Text beginnt |
%?Text | Prozeß, dessen Kommandozeile den Text enthält |
%% | aktueller Prozeß |
%- | vorhergehender Prozeß |
FGREP | Schnelle Suche ohne reguläre Ausdrücke |
fgrep [Optionen] [Suchmuster] [Datei(en)] |
Das Kommando fgrep arbeitet ähnlich wie die Kommandos grep und egrep, jedoch mit wesentlich eingeschränkteren Möglichkeiten aber höherer Geschwindigkeit. fgrep durchsucht eine oder mehrere Dateien nach einem bestimmten Suchmuster. Wird keine Datei angegeben, so liest fgrep den Datenstrom von Standardin. Wie egrep erlaubt auch fgrep die Benutzung der Option -f. Damit kann statt eines Suchmusters eine Suchmusterdatei an fgrep übergeben werden, aus der fgrep die Suchmuster lesen kann. Enthält diese Datei mehrere Zeilen, die Suchmuster enthalten, so werden diese durch ein logisches ODER iteinander verknüpft. Folgende Optionen können bei fgrep verwendet werden:
Option | Bedeutung |
-v | Alle Zeilen, außer den Zeilen, die das Suchmuster enthalten, werden ausgegeben. |
-x | Es werden nur die Zeilen ausgegeben, die genau das Suchmuster enthalten und sonst nichts. |
-c | Die Anzahl der gefundenen Zeilen wird ausgegeben. |
-i | Bei der Suche wird nicht zwischen Groß- und Kleinschreibung unterschieden. |
-l | Es wird nur der Name der Dateien angezeigt, die das Suchuster enthalten. |
-n | Die Zeilen werden nummeriert. |
-f Suchmusterdatei | Das Suchmuster wird aus einer Datei gelesen. |
Das Suchmuster darf keine regulären Ausdrücke enthalten.
Im Suchstring enthaltene Sonderzeichen werden als reine Textzeichen interpretiert und müssen auch so in den Daten vorkommen, um einen Suchtreffer zu erzeugen.
Um die Expansion dieser Sonderzeichen durch die shell zu verhindern, müssen die Sonderzeichen gequotet werden, oder das Suchmuster wird in Hochkommata oder Anführungszeichen eingeschlossen.
Es sind die Besonderheiten der Parametersubstitution der shell zu beachten, da einige Sonderzeichen auch innerhalb der Kommata gelten.
Diese sind dann zu quoten.
Siehe auch egrep und grep.
FI | Abschluss der if-Entscheidung |
if ..... fi |
fi gehört zum Kontrollkonstrukt der if-Entscheidung und bildet den Abschluss des ganzen Konstrukts. Siehe if.
FILE | Dateityp feststellen |
file Datei(en) |
Das Kommando file versucht den Dateityp einer Datei zu ermitteln. Dabei geht es hauptsächlich um die Unterscheidung von Dateien die lesbaren Text enthalten, oder Binärdateien, ob es Verzeichnisse oder ausführbare Programme sind. file gibt als Ergebnis eine oder mehrere Zeilen pro Datei als Beschreibung zurück. Fehlinterpretationen sind jedoch nicht ausgeschlossen.
FIND | Dateisuche |
find Startverzeichnis [Suchkriterien] [Kommandooptionen] |
find ist ein sehr mächtiges Suchkommando. Die Suche erfolgt rekursiv in allen Verzeichnissen ab dem Startverzeichnis. Sie kann durch verschiedene Suchkriterien auf bestimmte Dateien eingeschränkt werden. Wird eine entsprechende Datei gefunden, so verfährt find entsprechend der Kommandooption. Wenn keine Kommandooptionen angegeben wurde, so geschieht entweder nichts, oder es wird eine default-Option (-print) ausgeführt. Mit folgenden Suchkriterien kann die Suche eingeschränkt werden:
Suchkriterium | Bedeutung | ||||||||||||||||
-amin n | Der letzte Zugriff (access) auf die Datei war vor n Minuten | ||||||||||||||||
-atime n | Der letzte Zugriff (access) auf die Datei war vor n Tagen | ||||||||||||||||
-cmin n | Die Datei wurde vor n Minuten erzeugt (create) | ||||||||||||||||
-ctime n | Die Datei wurde vor n Tagen erzeugt (create) | ||||||||||||||||
-empty | Die reguläre Datei oder Verzeichnis ist leer | ||||||||||||||||
-fstype typ | Die Datei befindet sich auf dem Filesystem typ | ||||||||||||||||
-gid n | Die Datei besitzt die numerische Gruppen-ID n | ||||||||||||||||
-group name | Die Datei gehört der Gruppe mit dem Namen name | ||||||||||||||||
-links n | Auf die Datei verweisen n Links | ||||||||||||||||
-mmin n | Die Datei wurde vor n Minuten zuletzt verändert (modified) | ||||||||||||||||
-mtime n | Die Datei wurde vor n Tagen zuletzt verändert (modified) | ||||||||||||||||
-name datei | Die Datei besitzt den Dateinamen datei. (Die Sonderzeichen *, ? und [..] sind erlaubt) | ||||||||||||||||
-perm mode | Die Datei besitzt genau die Zugriffsrechte mode. mode kann octale oder symbolisch angegeben werden | ||||||||||||||||
-perm -mode | Die Datei besitzt alle in mode gesetzten Zugriffsrechte. mode kann octale oder symbolisch angegeben werden | ||||||||||||||||
-perm +mode | Die Datei besitzt mindestens eines der in mode gesetzten Zugriffsrechte. mode kann octale oder symbolisch angegeben werden | ||||||||||||||||
-size n[bckw] | Die Datei besitzt die Dateigröße n.
Ohne Angabe einer Einheit gibt n die Anzahl der belegten Blöcke (512Bytes) an.
Die einzelnen Kennbuchstaben für die Einheit bedeuten:
|
||||||||||||||||
-type typ |
Auswahl nach dem Dateityp. Für den Kennbuchstaben typ stehen folgende Zeichen zur Auswahl:
|
||||||||||||||||
-uid n | Die Datei besitzt die User-ID n | ||||||||||||||||
-user name | Die Datei gehört dem User name |
Wird für den numerischen Wert n eine Zahl angegeben, so interpretiert find dies als genaue Angabe.
Durch ein vorgestelltes + wird die Zahl als größer als und durch ein vorgestelltes - als kleiner als interpretiert.
Wenn mehrere Suchkriterien angegeben werden, dann sind sie durch ein logisches UND miteinander verbunden.
Komplexere logische Verknüpfungen können durch die Operatoren ! (NICHT), -a (UND), -o (ODER) und die Gruppierung durch runde Klammern erreicht werden.
Da die Klammern in den meisten Shells eine Sonderbedeutung besitzen, müssen sie z.B. mit dem backslash \ gequotet werden.
find bietet eine Vielzahl von Kommandooptionen, mit denen eine Reihe von unterschiedlichen Aktionen ausgeführt werden können, wenn eine entsprechende Datei gefunden wurde.
Die wichtigsten Kommandooptionen sind:
Kommandooption | Bedeutung |
Wird eine entsprechende Datei gefunden, so wird der vollständige Dateiname aus Standardout ausgegeben. | |
-exec | Wenn eine entsprechende Datei gefunden wird, so wird das hinter -exec angegebene Kommando ausgeführt. Um den Namen der gefundenen Datei als Parameter zu verwenden, benutzt man das Kürzel {}. Das Kommando muss mit einem Semikolon abgeschlossen werden. Da das Semikolon ein Sonderzeichen der Shell ist, muss es durch einen backslash gequotet werden. |
-ok | Diese Kommandooption funktioniert ähnlich wie -exec, nur das vor der Ausführung jedes einzelnen Kommandoaufrufes eine Nachfrage erscheint, die mit y oder n bestätigt werden muss. |
FOR | Kontrollkonstrukt für Zählschleifen |
for Variable [in Werteliste]; do Kommando1; Kommando2;Kommando3; done oder übersichtlicher for Variable [in Werteliste] do Kommando1 Kommando2 Kommando3 done |
Die for-Schleife wird, wie in Programmiersprachen üblich zur mehrfachen Ausführung einer Programmsequenz benutzt.
for erwartet eine Variable, die als Zählvariable benutzt wird.
Die Anweisungen zwischen do und done werden so oft durchlaufen, wie Werte aus der Werteliste gelesen weder können.
Bei jedem Durchlauf wird der nächste Wert aus der Werteliste in die Variable geschrieben und die Kommandos zwischen do und done ausgeführt.
Wenn die Liste abgearbeitet ist, wird die for-Schleife verlassen.
Ein vorzeitiger Abbruch der for-Schleife ist mit break möglich.
Ein vorzeitiger weiterer Schleifendurchlauf kann mit continue veranlasst werden.
Die Werteliste enthält durch Leerzeichen oder Tabulator getrennte Worte, die fest vorgegeben oder durch Expansion oder Kommandosubstitutin der shell erzeugt werden.
Worte die selbst Leerzeichen oder Sonderzeichen enthalte müssen in Anführungszeichen gesetzt werden.
Wenn keine Werteliste vorgegeben wird, werden die Parameter $@ benutzt.
Um die for-Schleife abzählbar zu machen, kann das Kommando seq verwendet werden.
Siehe auch die until-Schleife und while-Schleife.
GREP | Suche mit regulären Ausdrücken |
grep [Optionen] Suchmuster [Datei(en)] |
grep durchsucht eine oder mehrere Dateien nach einem bestimmten Suchmuster. Wird keine Datei angegeben, so liest grep den Datenstrom von Standardin. In den Daten wird nach Zeilen gesucht, die das Suchmuster enthalten. Folgende Optionen können bei grep verwendet werden:
Option | Bedeutung |
-v | Alle Zeilen, außer den Zeilen, die das Suchmuster enthalten, werden ausgegeben. |
-c | Die Anzahl der gefundenen Zeilen wird ausgegeben. |
-i | Bei der Suche wird nicht zwischen Groß- und Kleinschreibung unterschieden. |
-l | Es wird nur der Name der Dateien angezeigt, die das Suchuster enthalten. |
-n | Die Zeilen werden nummeriert. |
-s | Fehlermeldungen werden unterdrückt. |
Das Suchmuster kann verschiedene Sonderzeichen enthalten und damit einen regulären Ausdruck bilden. Damit können nicht nur festgelelegte Zeichen, sondern auch ganze Zeichengruppen in das Suchmuster aufgenommen werden. Folgende Sonderzeichen können verwendet werden.
Sonderzeichen | Bedeutung |
[...] | Bereichsangabe für eine Menge von Zeichen, die an dieser Position erlaubt sind. Die zulässigen Zeichen werden ohne Trennzeichen aufgelistet. |
[^...] | Negation der Bereichsangabe. Es wird eine Menge von Zeichen aufgelistet, die an dieser Stelle nicht auftreten dürfen. |
. | Ein einzelnes, beliebiges Zeichen (auch Leerzeichen) |
* | Wiederholungszeichen. Es wirkt auf das unmittelbar davor stehende Zeichen oder den Bereich. Das Zeichen darf keinmal, einmal oder mehrmals vorkommen. |
^ | Symbolisiert den Zeilenanfang innerhalb des Suchmusters. |
$ | Symbolisiert das Zeilenende innerhalb des Suchmusters. |
\{...\} |
Wiederholungszeichen. Es wirkt auf das unmittelbar davor stehende Zeichen oder den Bereich.
Es existieren drei unterschiedliche Möglichkeiten, die Anzahl festzulegen.
|
Um die Expansion der Sonderzeichen durch die shell zu verhindern, müssen die Sonderzeichen gequotet werden, oder das Suchmuster wird in Hochkommata oder Anführungszeichen eingeschlossen.
Es sind die Besonderheiten der Parametersubstitution der shell zu beachten, da einige Sonderzeichen auch innerhalb der Kommata gelten.
Diese sind dann zu quoten.
Das Kommando egrep arbeitet ähnlich wie das Kommando grep, jedoch mit wesentlich erweiterten Möglichkeiten.
Siehe auch egrep und fgrep.
HEAD | Ausgabe der Kopzeilen einer Datei |
head [Optionen] [Datei(en)] |
Das Kommando head gibt die ersten 10 Zeilen einer Datei nach Standardout aus. Wird mehr als eine Datei angegeben, so werden die Header der Dateien, getrennt durch den Dateinamen, nacheinander ausgegeben. Wurde keine Datei oder der Dateiname - verwendet, so liest head von Standardin. Die Ausgabe von head kann durch folgende Optionen gesteuert werden:
Option | Bedeutung |
-c[-]N | Es werden die ersten N-Bytes der Datei(en) ausgegeben. Wird dem Wert N ein Minus vorangestellt, so werden alle, bis auf die letzten N-Bytes der Datei(en) ausgegeben. |
-n[-]N | Es werden die ersten N-Zeilen der Datei(en) ausgegeben. Wird dem Wert N ein Minus vorangestellt, so werden alle, bis auf die letzten N-Zeilen der Datei(en) ausgegeben. |
-q | Es wird die Ausgabe der Dateinamen unterdrückt. (quiet) |
-v | Es wird die Ausgabe der Dateinamen erzwungen. (verbose) |
Suffix | Bedeutung |
b | 512, die Angabe erfolgt in Blöcken. |
k | 1024, die Angabe erfolgt in Kilo(bytes) |
m | 1024*1024, die Angabe erfolgt in Mega(bytes). |
ID | Benutzerdaten |
id [Benutzer] |
id gibt die User-ID, den Usernamen, die Gruppennummer und die Gruppennamen eines Systemusers aus. Wird kein Benutzer angegeben , so ist dies der angemeldete User, der das Kommando aufruft. Wird ein Benutzer angegeben, so werden dessen Daten angezeigt, falls er existiert. Falls das Kommando korrekt ausgeführt wurde, liefert es den exit-status 0. Wurde ein User angegeben, der nicht existiert, so wird der exit-status 1 zurückgegeben.
IF | Entscheidungen |
if Kommando1; then Kommando2; [elif Kommando3; then Kommando4;].....[else Kommando5;] fi |
if bietet die Möglichkeit Entscheidungen in shell-Scripte einzubauen. Dazu testet if den exit-status eines Kommandos (z.B. Kommando1, Kommando3) und setzt den Programmablauf entsprechend fort. Der exit-status 0 (Null) ist gleichbedeutend mit wahr (true). Diesen exit-status liefern shell-Kommandos, wenn sie ohne Fehler und korrekt ausgeführt werden konnten. Alle anderen Werte für den exit-status werden als falsch (false) interpretiert. Das if-Konstrukt wird durch das Schlüsselwort fi abgeschlossen. Mit elif ist eine Mehrfachauswahl möglich. Generell werden die Kommandos nach if und elif von oben nach unten nacheinander ausgeführt, bis das erste den exitstatus wahr (true) zurückliefert. Dann wird der mit dem folgenden then eingeleitete Anweisungsblck ausgeführt und die Verzweigung anschließend verlassen. Sollte keiner der if und elif-Verzweigungen ein wahr ergeben, wird ein eventuell vorhandener else-Alternativzweig ausgeführt.
IN | Schlüsselwort in Verzweigungen |
case ... in ..... esac for ... in ... do ... done select ... in ... do ... done |
in gehört zu den Kontrollkonstrukten for, case und select. Es schliesst die Variablendefinition dieser Kontrollstrukturen ab und leitet den folgenden Block ein.
JOBS | Anzeige laufender Hintergrundprozesse |
jobs [-l] [-p] [-n] Jobnummer |
In der shell werden im Hintergrund ausgeführte Prozesse über sogenannte Jobnummern verwaltet.
Das Kommando jobs listet alle laufenden Hintergrundprozesse mit der zugehörigen Jobnummer auf.
it der Option -l kann gleichzeitig die Angabe der Prozessnummer des Hintergrundprozesses erzwungen werden.
Mit -n werden nur die gestoppten oder beendeten Hintergrundprozesse gelistet.
Mit der Angabe einer Jobnummer werden nur Informationen zu diesem Job angezeigt.
Siehe auch bg, wait und fg.
KILL | Signal an einen Prozess senden |
kill [-Signal] -l Prozessnummer(n) |
kill sendet ein Signal an die durch Prozessnummern angegebenen Prozesse. Damit erreicht man unter anderem, dass ein Prozess sich vorzeitig beendet, daher der Name kill. Das Signal kann entweder durch eine Signalnummer oder den Kurznamen angegeben werden. Mit der Option -l wird eine Liste der verfügbaren Signalnummern und deren Signalnamen angezeigt. Eine kleine Auswahl an Signalen:
Nummer | Kurzname | Signalname | Bedeutung |
1 | HUP | SIGHUP | Verbindungsunterbrechung |
2 | INT | SIGINT | Unterbrechungstaste am Terminal <Strg>-C |
3 | QUIT | SIGQUIT | Unterbrechungstaste am Terminal |
4 | ILL | SIGILL | unerlaubter Hardwarebefehl |
5 | TRAP | SIGTRAP | Hardwarefehler |
6 | ABRT | SIGABRT | unnormale Beendigung, Absturz mit core |
7 | BUS | SIGBUS | Hardwarefehler |
8 | FPE | SIGFPE | Arithmetischer Fehler (Division durch Null) |
9 | KILL | SIGKILL | Beendigung |
10 | USR1 | SIGUSR1 | benutzerdefiniertes Signal |
11 | SEGV | SIGSEGV | unerlaubte Speicheradressierung |
12 | USR2 | SIGUSR2 | benutzerdefiniertes Signal |
13 | PIPE | SIGPIPE | Schreiben in eine Pipe ohne Leser |
14 | ALRM | SIGALRM | Ablauf einer Zeitschaltuhr |
15 | TERM | SIGTERM | Beendigung |
17 | CHLD | SIGCHLD | Statusänderung in einem Kindprozess |
18 | CONT | SIGCONT | Fortsetzen eines angehaltenen Prozesses |
19 | STOP | SIGSTOP | Prozess anhalten |
20 | TSTP | SIGTSTP | Terminal-Stoppzeichen |
21 | TTIN | SIGTTIN | Lesewunsch eines Hintergrundprozesses |
22 | TTOU | SIGTTOU | Schreibwunsch eines Hintergrundprozesses |
23 | URG | SIGURG | dringendes Ereignis |
24 | XCPU | SIGXCPU | Überschreitung des CPU-Limits |
25 | XFSZ | SIGXFSZ | Überschreitung des Dateigrößenlimits |
26 | VTALRM | SIGVTALRM | virtueller Zeitalarm |
27 | PROF | SIGPROF | Profiling-Zeitalarm |
28 | WINCH | SIGWINCH | Änderung der Windowgröße |
29 | IO | SIGIO | asynchrone E/A-Operation |
30 | PWR | SIGPWR | Stromausfall |
31 | SYS | SIGSYS | unerlaubter Systemaufruf |
Wenn keine Signalnummer oder Kurznamen angegeben werden, so versendet kill das Signal SIGTERM(15), wodurch sich der Prozess normal beendet.
Dadurch hat der Prozess die Möglichkeit seine Arbeit normal zu beenden, eventuell Daten zurückzuschreiben und Netzwerkverbindungen abzubauen.
Das Signal SIGKILL(9) bewirkt, das der Prozess sofort hart beendet wird, eine normale Beendigung der Arbeit findet nicht statt.
Es sollte nur für Prozesse verwendet werden, die sich mit SIGTERM(15) nicht beenden lassen wollen.
Mit SIGHUP(1) werden eine Reihe von Prozessen veranlasst ihre Konfiguration neu einzulesen und mit dieser zu arbeiten (z.B. inetd).
Signale kann ein Benutzer nur an Prozesse versenden, die unter seiner uid laufen, d.h., die er selbst gestartet hat.
root darf an alle Prozesse ein Signal senden.
Wenn als Prozessnummer die 0 verwendet wird, wird das Signal an alle durch den Benutzer erreichbaren Prozesse gesendet.
Siehe auch trap.
LET | bash-Arithmetik |
let Argument(e) |
let bietet vielfältige Möglichkeiten arithmetische Operationen in der bash durchzuführen. let interpretiert den angegebenen Argumente als arithmetischen Ausdruck. Bei der Benutzung von Variablen kann auf das Dollarzeichen zur Expansion des Variableninhalts verzichtet werden. Der Ausdruck wird von links nach rechts ausgewertet. Als Operatoren stehen dir Grundrechenoperationen, komplexe Zuweisungen und Bit-Operationen zur Verfügung. Folgende Operatoren können verwendet werden:
Operator | Bedeutung |
+ - * / | Addition,Subtraktion,Multiplikation,Division |
% | Modulo (Rest einer ganzzahligen Division) |
< > <= >= | Vergleiche auf kleiner, größer, kleiner und gleich, größer und gleich. Das Ergebnis ist 0 für wahr (true) oder 1 für falsch (false). |
== != | Test auf gleich bzw. nicht gleich (ungleich). Das Ergebnis ist 0 für wahr (true) oder 1 für falsch (false). |
&& ¦¦ | Vergleiche können durch logisches UND(&&) bzw. durch logisches ODER(¦¦) verknüpft werden. |
& ¦ ^ | Bit-Operatoren. Die Werte werden durch bitweises Und(&), durch bitweises Oder(¦) und EXCLUSIVODER(^) miteinander verknüpft. |
+= -= *= /= %= | komplexe Zuweisungsoperatoren. Die Schreibweise a+=b ist eine verkürzte Schreibweise für a=a+b. Für die anderen Operatoren gilt das ähnlich. |
Der exit-status von let ist 0 (Null true), wenn der Wert des letzten Ausdrucks nicht 0 (Null) war. Den exit-status 1 (false) liefert let, wenn die letzte Operation das Ergebnis 0 (Null) geliefert hat.
MV | Verschieben von Dateien |
mv [-f] Datei1 Datei2 mv [-f] Datei(en) Verzeichnis |
Das Kommando mv (move) arbeitet auf sehr unterschiedliche Weise. Zum einen kann man mit mv eine Datei umbenennen. Zum anderen können Dateien auch verschoben werden. In der ersten Form wird die Datei1 bei der Verschiebung unter einem neuen Namen Datei2 abgespeichert. Verweisen beide Dateinamen auf das gleiche Verzeichnis, so ist eine Umbenennung das Ergebnis. In der zweiten Form werden die Dateien in das Zielverzeichnis verschoben und behalten dabei ihren eigentlichen Dateinamen. Existiert die Zieldatei und ist das Schreiben auf die Zieldatei nicht erlaubt, fragt mv vorher ab, ob die Datei überschrieben werden soll. Wird mit "y" geantwortet, so wird der Inhalt überschrieben, sofern es die Systemrechte zulassen. Mit der Option -f kann die Abfrage unterdrückt werden. Wird die Datei innerhalb des gleichen Dateisystems verlagert, so erzeugt mv einen zweiten Link auf die Datei und löscht den ersten. Das geht sehr zügig und ist von der Größe der Datei unabhängig, da sie nicht physisch verschoben werden muss. Erfolgt die Verlagerung über die Grenzen des Dateisystems hinweg, so muss die Datei physisch verschoben werden, was von der Größe der Datei abhängig ist und damit mehr Zeit benötigt.
NEWGRP | Gruppenzugehörigkeit wechseln |
newgrp [-] [Gruppenname] |
Mit dem Kommando newgrp kann ein Benutzer seine Gruppenzugehörigkeit wechseln. Dazu gibt er als Parameter den Namen der Gruppe an, in die er wechseln möchte. Diese Gruppe muss in /etc/group existieren und der Benutzer muss als Mitglied der Gruppe eingetragen sein. Der aktuelle Shell-Prozess ändert daraufhin die Gruppennummer. Der Wechsel der Gruppenzugehörigkeit kann mit dem Kommando id getestet werden. Wird newgrp ohne Parameter aufgerufen, so wechselt man in die voreingestellte Default-Gruppe (in /etc/passwd). Bei Angabe eines Minuszeichens als ersten Parameter wird so verfahren, als würde man sich neu anmelden, dh, das die Initialisierungsdateien der Shell (/etc/profile, .profile, .bashrc,...) erneut abgearbeitet werden. Das Kommando newgrp startet dabei im Gegensatz zu su keinen neuen Shell-Prozess.
NICE | Kommandopriorität verändern |
nice [-Zahl] Kommando [Argument(e)] |
Das Kommando nice erlaubt es, die Priorität von Kommandos zu verändern. Damit kann gesteuert werden, wieviel Rechenzeit für das Kommando verwendet werden soll und wie stark das Kommando die Performance des Systems belasten darf. Linux-Systeme unterscheiden zwischen einer Basispriorität, die allein vom Kernel verwaltet wird und einem Faktor, der vom Benutzer verändert werden kann, der sogenannte nice-Faktor. Die Zahlenangabe als Option verringert den nice-Faktor des Kommandos. Je niedriger der Wert des nice-Faktors ist, desto langsamer wird das Kommando abgearbeitet. Die Zahl kann Werte von 0 bis 19 annehmen. Damit kann der nice-Faktor durch den Benutzer auf einen Wert zwischen 20 (-0) und 39 (-19) gebracht werden. Der Benutzer root kann als einziger die Priorität seiner Kommandos erhöhen. Er kann durch die Angabe einer Zahl als Option den nice-Faktor bis auf den Wert 0 (--20) erhöhen. Fast immer wird man das Kommando, das verlangsamt abgearbeitet werden soll, als Hintergrundprozess starten, damit die Konsole nicht unnötig lange blockiert ist.
NOHUP | Ignorieren von SIGHUP bei einem Kommando |
nohup Kommando [Option(en)] [Argument(e)] [&] |
Wenn ein Kommando mit nohup davor gestartet wird, so ignoriert es das Signal SIGHUP. Wenn der Kommandoaufruf mit einer Hintergrundverarbeitung (&) kombiniert wird, dann bedeutet dies, dass das Kommando auch nach dem Schliessen der Terminalverbindung (Verlassen der shell, Abmelden des Benutzers) weiter im Hintergrund abgearbeitet wird. Falls keine Ausgabenumlenkung für das Kommando festgelegt wird, werden die Ausgaben von Standardout und Standarderr in einer Datei nohup.out abgelegt.
OD | Anzeige von Dateiinhalten |
od [Optionen] [Dateiname] |
Mit dem Komando od können Dateiinhalte in unterschiedlicher Formatierung dargestellt werden.
In der Defaulteinstellung werden die einzelnen Bytes als Oktalzahl dargestellt.
Die darzustellende Datei kann durch den [Dateinamen] übergeben werden, oder als Datenstrom über stdin an das Kommando gesendet.
Durch eine Reihe von Optionen kann die Ausgabe formatiert werden und wird dann über stdout wieder ausgegeben.
So kann z.B. mit od -Ax -tx1z -v [Dateiname] eine übersichtliche Darstellung des Dateiinhaltes ähnlich wie in HEX-Browsern erzeugt werden.
Option | Bedeutung | ||||||||||||||||
-A [doxn] | Anzeige der Zeilenadresse im Format d=dezimal, o=oktal, x=hexadezimal und n=keine Adressenangabe. | ||||||||||||||||
-j K | Es werden die ersten K-Bytes der Datei übersprungen (Jump) und damit ein Offset für die Ausgabe festgelegt. | ||||||||||||||||
-N K | Die Ausgabe wird auf K-Bytes beschränkt. (Limit) | ||||||||||||||||
-v | Die Ausgabe wird dupliziert. Beide Ausgaben können unterschiedlich formatiert werden. | ||||||||||||||||
-w K | Die Ausgabe wird auf K-Bytes pro Ausgabezeile beschränkt. | ||||||||||||||||
-t K | Die Ausgabe wird auf den Typ K formatiert. Zur Formatierung stehen folgende Optionen zur Ferfügung:
|
PASSWD | Ändern des Passwortes |
passwd [Benutzername] |
Mit dem Komando passwd kann sich ein User ein neues Passwort setzen. Vor der Eingabe des neuen Passwortes wird das alte zur Sicherheit noch einmal abgefragt. Der normale Anwender kann nur sein eigenes Passwort ändern, deshalb ist die Angabe eines Benutzernamens nicht möglich. Der Superuser root darf einen Benutzernamen als Parameter verwenden, um das Passwort eines bestimmten users zu ändern. Die Eingabe des alten Passwortes ist dabei nicht notwendig.
PWD | Anzeige des aktuellen Verzeichnisses |
pwd |
Das Kommando pwd zeigt den absoluten Pfadnamen des aktuellen Verzeichnisses der shell an
READ | Einlesen von Werten |
read [Variablenname(n)] |
read liest die Eingaben des Benutzers von Standardin und legt sie in den shell-Variablen ab, die read als Parameter übergeben werden. Wenn das Kommando read abgearbeitet wird, dann wartet die shell auf eine Eingabe des Benutzers. Die Eingabe wird durch Enter abgeschlossen. Wenn die Eingabe aus mehereren Worten besteht (Trennzeichen shell-Variable IFS), so wird das erste Wort in der ersten Variable, das zweite Wort inder zweiten Variable usw. usf. gespeichert. Sollten weniger Variablen als read-Parameter mitgegeben worden sein als Worte in der Eingabe gelesen werden, so wird der Rest in der letzten Variable abgelegt. Sollte read nur eine Variable mitgegeben werden, dann wird die komplette Eingabe in dieser gespeichert.
READONLY | shell-Variable vor Überschreiben schützen |
readonly [Variablenname[=Wert]] [Variablenname[=Wert]] .. |
Mit readonly können shell-Variablen vor Überschreiben geschützt werden.
Dadurch werden sie zu Konstanten. Der Variable kann der Wert vor Aufruf von readonly oder mit dem Aufruf zugewiesen werden.
Ein Löschen der Variable in der shell ist dann ebenfalls nicht mehr möglich.
Erst durch das Verlassen der shell wird auch die Variable vernichtet.
Wird readonly ohne Parameter aufgerufen, so listet es alle geschützten Variablen auf, die bereits definiert wurden.
Das Kommando readonly hat die selbe Bedeutung wie declare -r.
RETURN | Rücksprung aus einer shell-Funktion |
return [Wert] |
Mit dem Kommando return kann eine shell-Funktion vorzeitig verlassen werden. Gibt man einen Wert als Parameter mit, dann wird er als exit-status in der shell-Variablen $? übergeben. Damit wirkt return ähnlich wie exit, nur dass mit return nur die shell-Funktion verlassen wird und nicht die ganze shell. Da der exit-status ein vorzeichenloser Bytewert ist, sind nur ganzzahlige Werte von 0..255 zulässig.
RM | Löschen einer Datei |
rm [Optionen] [Datei(en)] |
Mit dem Kommando rm können eine oder mehrere Dateien gelöscht werden. Ohne entsprechende Optionen löscht rm die Dateien ohne Rückfrage. Ein nachträgliches Wiederherstellen der Dateien ist im allgemeinen nicht mehr möglich. rm ist also mit größter Vorsicht einzusetzen, denn durch einen einfachen Befehl können die gesamten Dateien des Systems gelöscht werden (z.B. rm -r / als root ausgeführt). Als Optionen sind möglich:
Option | Bedeutung |
-i | Es wird zur Sicherheit für jede Datei eine Abfrage erzeugt, ob die Datei gelöscht werden soll oder nicht. |
-r | (rekursion) Die Option -r testet, ob es sich bei den Parametern um Verzeichnisnamen handelt. Wenn ja, dann löscht rm auch alle Unterverzeichnisse in diesem Verzeichnis komplett. |
-f | Wenn man im Verzeichnis, in dem die zu löschenden Dateien liegen, Schreibrechte hat, die Dateien aber einem anderen Benutzer gehören, so erscheint eine Rückfrage. |
RMDIR | Löschen eines leeren Verzeichnisses |
rmdir Verzeichnisname(n) |
rmdir kann ein leeres Verzeichnis löschen.
SELECT | einfaches bash-Menü |
select Variable [in Werteliste] ; do Kommandos; done |
Mit select können sehr einfache Menüs erzeugt werden. select gibt das Menü über Standarderr aus. Dazu setzt es vor jedem Eintrag der Werteliste eine fortlaufende Nummer und präsentiert zum Abschluß einen Prompt (PS3), mit dem es auf eine Eingabe wartet. Ist die Eingabe eine Zahl aus der Liste, so wird die Variable mit dem entsprechenden Wort aus der Werteliste gefüllt und die Schleife durchlaufen. Wird eine Eingabe getätigt, die zu keinem Wert der Liste passt, so enthält die Variable einen Leerstring und die Schleife wird durchlaufen. Wird nichts eingegeben, so wird das Menü erneut angezeigt. Die Schleife kann nur mit <Strg>+d oder einem break verlassen werden. Wenn keine Werteliste angegeben wird, so wird $@ verwendet.
SEQ | Zahlensequenz erzeugen |
seq [Optionen] [Startwert [Schrittweite]] Endwert |
Das Kommando seq erzeugt eine Sequenz von Zahlen, beginnend mit dem Startwert im Abstand der Schrittweite, bis der Endwert erreicht oder überschritten wird.
Wenn keine Schrittweite oder Startwerte angegeben werden, so sind sie automatisch 1. Im Normalfall werden die Zahlen durch eine Zeilenschaltung (\n) voneinander separiert, es kann aber mit der Option -s ein anderes Zeichen vereinbart werden.
Die Sequenz erhält dann nur eine abschliessende Zeilenschaltung.
Beispiele:
seq 4
seq 1 4
seq 1.3 0.2 3.1
seq -s" " 1.5 0.5 7
Damit ist der Befehl z.B. hervorragend geeignet, um die for-Schleife in der shell abzählbar zu machen.
SHRED | sicheres Löschen von Dateien |
shred [Optionen] Datei(en) |
Das Kommando shred dient dazu, eine oder mehrere Dateien sicher zu löschen, so dass sie auch mit großem Aufwand nicht wieder hergestellt werden können. Der Inhalt der Datei(en) wird dazu mehrfach mit Zufallswerten überschrieben. Im Normalfall werden die Datei(en) anschliessend nicht gelöscht.
Option | Bedeutung |
-f , --force | setzt die Schreibberechtigung, falls notwendig |
-n , --iterations=N | Anzahl der Überschreibungen der Datei(en), Defaultwert ist 25. |
-s , --size=N | Anzahl der Bytes (K, M, G), die nur überschrieben werden sollen. |
-u , --remove |
nach dem Überschreiben wird die Datei gelöscht Da im Normalfall auf Gerätedateien (z.B. /dev/hda) geschrieben wird, darf die Datei selbst natürlich nicht gelöscht werden. Bei regulären Dateien wird der Anwender -u benutzen. |
-v , --verbose | Fortschrittsanzeige |
-x , --exact |
Die Dateilänge wird nicht auf den letzten vollen Block aufgerundet. Bei nicht-regulären Dateien ist das die Defaulteinstellung. |
--random-source=Datei |
Quelldatei für Zufallszahlen, default=/dev/urandom. Das Kommando nutzt im Normalfall des Device /dev/urandom als Quelle für die Zufallszahlen. Dieses generiert zwar ständig Zufallswerte, doch wenn die Entropie des Systems aufgebraucht ist, werden diese Zufallszahlen schwächer. Für hochparanoide Anwendungen wäre z.B. auch die Verwendung von /dev/random möglich, doch dieses blockiert, bis die Entropie des Systems wieder einen ausreichenden Wert erreicht hat. Dadurch kann das Löschen großer Dateien unter Umständen sehr lange dauern. |
-z , --zero | abschliessendes Überschreiben der Datei(en) mit Null-Bytes, um das Shreddern zu verbergen |
Achtung!
Das Kommando shred funktioniert natürlich nur, wenn die Daten vom Betriebssystem auch wirklich dort überschrieben werden, wo sie sich auf dem Datenträger auch befinden und dass keine Duplikate abgelegt wurden.
Das ist nicht immer der Fall, wie z.B. bei:
- protokollstrukturierten Dateisystemen,
- Journaling-Dateisystemen (z.B. ext3, ext4 mit data=journal)
- redundante Dateisysteme, Backupsysteme, RAIDs
- temporäre Dateisysteme, Cachingsysteme
Die ordnungsgemäße Funktionsweise von shred kann also nicht in allen Fällen garantiert werden.
SLEEP | Unterbrechung der Abarbeitung für eine festgelegte Zeit |
sleep Zahl[Einheit] |
Das Kommando sleep unterbricht den aktuellen Prozess für einen bestimten Zeitraum. Der Parameter legt dabei die Länge des Zeitraums fest. Die Einheit gibt die Größenordnung der Zeitspanne an. Wird keine Einheit angegeben, so wird die Zahl als Sekundenangabe interpretiert. Im Gnu-echo kann die Zahl auch ein Dezimalbruch sein und damit sind auch Zeitspannen unter einer Sekunde möglich. Die Einheit kann einer der folgenden Buchstaben sein
Buchstabe | Einheit |
s | Sekunden |
m | Minuten |
h | Stunden |
d | Tage |
z.B.:
sleep 2s
sleep 4m
sleep 0.3
SORT | Zeilenweises Sortieren von Daten |
sort [Optionen] [Positionen] [Datei(en)] |
Das Kommando sort liest Daten über Standardin oder aus einer oder mehreren Dateien, wenn diese als Parameter übergeben wurden und gibt diese sortiert an Standardout wieder aus.
Die Sortierung kann mit verschidenen Sortierkriterien gesteuert werden.
Sort liest die Daten zeilenweise ein und zerlegt den Inhalt in einzelne Felder.
Als Trennzeichen verwendet sort das Leerzeichen und den Tabulator.
Folgen mehrere Trennzeichen oder Tabulatoren hintereinander, so wird das erste Zeichen als Trennzeichen interpretiert und alle folgenden als Inhalt des nächsten Feldes gewertet.
Die einzelnen Felder werden fortlaufend, mit 0 (Null) beginnend, nummeriert und können so als Positionsangabe im Sortierkriterium verwendet werden.
Mit Hilfe dieser Positionsangabe werden die Felder ausgewählt, die als Sortierkriterium gelten sollen.
Soll ein Bereich von Feldern als Sortierkriterium genutzt werden, so ist vor die erste Positionsangabe ein Pluszeichen (Position 1) und vor die zweite ein Minuszeichen (Position 2) zu setzten.
sort wird dann alle Felder von Position 1 bis vor das Feld Position 2 als Suchkriterium werten.
Das Feld Position 2 wird also selbst nicht mehr in das Suchkriterium eingeschlossen.
Es ist auch möglich, mehrere Suchkriterien anzugeben. Das zweite Suchkriterium wird dann verwendet, wenn das erste Suchkriterium zur eindeutigen Sortierung nicht ausreicht (Untersortierungen) usw. usf.
Zusätzlich können folgende Optionen verwendet werden:
Option | Bedeutung |
-b | Leerzeichen (blanks) am Feldanfang werden ignoriert. |
-c | Test (check), ob die Eingabedaten sortiert sind oder nicht. Nur wenn es sich um bereits sortierte Daten handelt, wird eine Ausgabe gemacht. |
-d | Wörterbuch-Sortierung (dictionary). Es werden nur Buchstaben, Ziffern und Leerzeichen als gültige Zeichen für die Sortierung verwendet. Alle anderen Zeichen werden ignoriert. |
-f | Es wird nicht zwischen Groß- und Kleinschreibung unterschieden. (fold) |
-n | Es wird numerisch sortiert. Vor der Sortierung wird versucht, den Feldinhalt in eine Zahl umzuwandeln |
-o Datei | Die Ausgabe erolgt nicht an Standardout, sondern soll sofort in die angegebene Datei umgeleitet werden. |
-r | Umkehrung (reverse) der Sortierreihenfolge, es wird nicht aufsteigend, sondern absteigend sortiert. |
-tc | Als Trennzeichen für die einzelnen Felder wird das Zeichen "c" festgelegt. |
-u | Sollten mehrere gleiche Zeilen vorkommen, so wird diese Zeile nur ein einziges Mal (unique) ausgegeben. |
Sollten die Suchkriterien für verschiedene Felder unterschiedlich sein, dann können die Optionen "d", "f", "n" und "r" auch direkt hinter der ersten Feldnummer der Positionsangabe stehen (z.B. +2n -3).
STAT | Ausgabe des Dateistatus |
stat [Optionen] Datei(en) |
Das Kommando stat gibt die wichtigsten Angaben zu einer oder mehreren Dateien auf stdout aus. Die Angaben enthalten die Dateirechte, Dateibesitzer, Dateigröße, Zeitstempel (Access, Modify, Change). Die Ausgabe kann über Optionen gesteuert und formatiert werden.
SYNC | Herausschreiben der E/A-Puffer |
sync |
Die Ein-/Ausgaben auf Dateisysteme werden im Normalfall im RAM gepuffert um die Performance zu erhöhen. Der Pufferinhalt wird bei Bedarf oder in regelmäßigen Abständen auf die Festplatte zurückgeschrieben. Durch das Kommando sync wird ein Zurückschreiben der Puffer erzwungen. Das Kommando darf nur von root ausgeführt werden.
tac | reverse Dateiausgabe |
tac [Datei ....] |
Das Kommando funktioniert ähnlich wie cat, nur gibt es den Inhalt einer oder mehrerer Dateien in umgekehrter Reihenfolge (letzte Zeile zuerst) über den Standardout aus. Wird keine Datei oder der Parameter - angegeben, so liest cat die Daten von Standardin.
TEE | Datenstrom duplizieren |
tee [-a] Datei(en) |
Mit dem Kommando tee kann ein Datenstrom dupliziert werden. Es liest die Daten vom Standardinput und gibt die Daten unverändert wieder über den Standardoutput aus und zum anderen in die Datei oder Dateien, deren Name als Parameter übergeben wurde. Mit der Option -a wird erreicht, das der Datenstrom an eine bereits bestehende Datei angehängt (append) werden soll. Ansonsten wird der Inhalt der Datei überschrieben.
TEST | Testen von Ausdräcken |
test Ausdruck [ Ausdruck ] |
Das Kommando test existiert in verkürzter Schreibweise als Kommando [. Es gilt das dort gesagte in ähnlicher Weise.
THEN | Anweisungsblock der if-Entscheidung |
if .. then ... elif ... then ... elif ... then ... else ... fi |
then gehört zum Kontrollkonstrukt der if-Entscheidung und bildet den Abschluss des Testkommandos und die Einleitung eines Programmblockes, der ausgeführt wird, wenn das Testkommando den Wahrheitswert wahr 0 (Null, true) liefert. Das Testkommando wird duch if oder elif und then eingeklammert. Wenn dieses Testkommando nun den exit-status 0 (Null, true) zurückliefert, wird der Programmblock ausgeführt, der nach then folgt. Abgeschlossen wird dieser Block durch eines der Steuerkonstrukte elif, else oder fi. Siehe if.
TIME | Ausführungszeit für Kommandos messen |
time Kommando [Argumente] |
Mit dem Kommando time kan man die Ausführungszeit für ein Kommando messen. Das time-Kommando gibt auf dem Standarderror folgende Angaben aus:
TOUCH | Ändern der Zeiten für den letzten Zugriff und die letzte Änderung einer Datei |
touch [Optionen] [Zeitangabe] Datei(en) |
Mit touch kann der Zeitpunkt des letzten Zugriffs (last access) und der letzten änderung (last modifikation) einer oder mehrerer Dateien geändert werden.
Wird touch nur mit einem Dateinamen aufgerufen, so werden beide Zeitpunkte auf das aktuelle Systemdatum (date) gesetzt.
Wenn die Datei noch nicht existiert, so wird eine leere datei mit diesem Namen angelegt.
Mit der Option -a wird nur der Zeitpunkt des letzten Zugriffs (last access) gesetzt.
Mit der Option -m wird nur der Zeitpunkt der letzten Änderung (last modification) beeinflusst.
Die Zeitangabe muss im selben Format erscheinen wie beim stellen der Systemuhr mit dem Kommando date:
mmddHHMM[yy] (Monat-Tag-Stunde-Minute-Jahr als zweistellige Werte).
TR | Austausch von Zeichen |
tr [Optionen] [Zeichenkette1 [Zeichenkette2]] |
tr liest Daten von Standardin, verändert sie und gibt sie an Standardout wieder aus.
Damit arbeitet tr als Filter.
Es kann Zeichen aus dem Datenstrom löschen, mehrere gleiche Zeichen zu einem Zeichen zusammenfassen oder ein Zeichen gegen ein anderes austauschen.
Ohne Angabe von Optionen erwartet tr zwei Zeichenketten.
tr setzt dann einzelne Zeichen im Datenstrom um.
Tritt das erste Zeichen der Zeichenkette1 im Datenstrom auf, so wird es gegen das erste Zeichen der Zeichenkette2 ausgetauscht.
Enthalten die Zeichenkette1 und Zeichenkette2 mehrere Zeichen, so wird gleichzeitig das zweite Zeichen der Zeichenkette1 im Datenstrom gegen das zweite Zeichen der Zeichenkette2 ausgetauscht, usw. usf.
Sollte Zeichenkette1 länger als Zeichenkette2 sein, so werden die überzähligen Zeichen in Zeichenkette1 alle mit dem letzten Zeichen von Zeichenkette2 umgesetzt.
Die Zeichenkette1 kann ausserdem noch Sonderzeichen und Bereichsdefinitionen enthalten mit denen ganze Gruppen von Zeichen selektiert werden.
Die möglichen Sonderzeichen und Bereichsdefinitionen in Zeichenkette1 und Zeichenkette2 sind
Sonderzeichen | Bedeutung |
\0NNN | ein oktal codiertes ASCII-Zeichens |
\\ | ein Backslashs (backslash) |
\a | ein Fehlerzeichen (Glocke) (bel) |
\b | ein Backspace (backspace) |
\f | ein Seitenvorschub (form feed) |
\n | ein Zeilenvorschub (new line) |
\r | ein Return (carriage return) |
\t | ein horizontaler Tabulator (horizontal tab) |
\v | ein vertikaler Tabulator (vertical tab) |
\e | Ausgabe eines ESC-Zeichens (escape) |
[CHAR1-CHAR2] | Alle Zeichen von CHAR1 bis CHAR2 |
Die Bereichsdefinitionen die nur in Zeichenkette1 möglich sind
Bereichsdefinition | Bedeutung |
[:alnum:] | alle Buchstaben und Ziffern |
[:alpha:] | alle Buchstaben |
[:blank:] | alle horizontalen Whitespace-Zeichen |
[:cntrl:] | alle Control-Zeichen |
[:digit:] | alle Ziffern |
[:graph:] | alle druckbaren Zeichen ohne Leerzeichen |
[:lower:] | alle Kleinbuchstaben |
[:print:] | alle druckbaren Zeichen mit Leerzeichen |
[:punct:] | alle Punktierungszeichen |
[:space:] | alle horizontalen und verticalen Whitespace-Zeichen |
[:upper:] | alle Großbuchstaben |
[:xdigit:] | alle Hexadezimalziffern |
[=CHAR=] | alle Zeichen, die zu CHAR äquivalent sind |
Die Bereichsdefinitionen die nur in Zeichenkette2 möglich sind
Bereichsdefinition | Bedeutung |
[CHAR*] | setzt CHAR so oft in Zeichenkette2, wie Zeichenkette1 lang ist (alle Zeichen werden in CHAR umgezetzt |
[CHAR*REPEAT] | mehrfache Wiederholung eines Zeichens, oktale Angaben von REPEAT beginnen mit 0 |
Folgende Optionen können für tr verwendet werden:
Option | Bedeutung |
-t | schneidet zuerst Zeichenkette1 auf die Länge von Zeichenkette2 zu. |
-c | Alle Zeichen, die nicht in Zeichenkette1 stehen, werden entsprechend der Zeichenkette2 umgesetzt (complement) |
-d | Alle Zeichen aus Zeichenkette1 werden aus dem Datenstrom entfernt. Zeichenkette2 wird nicht mit angegeben. |
-s | Alle Zeichen, die mehrfach hintereinander vorkommen, werden auf ein einzelnes Zeichen reduziert. Eine Angabe der Zeichenketten ist nicht notwendig. |
TRAP | Verwaltung von Signalhandlern |
trap [Argument [Signalnummer(n)] |
Mit dem Kommando trap (Falle) kann man das Verhalten der shell beim Eintreffen von Signalen verändern. Mit trap kann man erreichen, dass ein shell-Script
trap zeigt seine Wirkung erst ab der Zeile, in der es steht. Durch einen erneuten Aufruf von trap kann das bisherige Verhalten wieder überschrieben werden. Wird trap ohne Parameter aufgerufen, so listet es die bisher definierten Signalreaktionen auf. In der bash können sowohl die Signalnummern als auch deren Kurznamen verwendet werden. Weiterhin kann noch das Pseudosignal EXIT verwendet werden. Es wird beim Verlassen der Shell oder einer shell-Funktion gesendet. Es lassen sich nicht alle Systemsignale mit trap steuern, da sie von der Behandlung durch trap ausgeschlossen sind (z.B. SIGKILL). Eine Übersicht von Signalen kann bei kill eingesehen werden.
TRUE | Rückgabewert true, 0, NULL |
true |
Das Komando true gibt den exit-status true (0-Null) zurück. Das Gegenstück ist false.
TTY | Terminalname anzeigen |
tty [-s] |
Das Kommando tty zeigt den Namen der Gerätedatei an, über die man mit dem Linuxrechner verbunden ist. Mit der Option -s wird die Ausgabe nach Standardout unterdrückt. Stattdessen wird ein entsprechender Rückgabewert erzeugt.
Rückgabewert | Bedeutung |
0 | Standardinput ist mit einem Terminal verbunden |
1 | Standardinput wurde umgelenkt |
2 | Fehler beim Aufruf von tty |
TYPESET | Typisierung einer bash-Variable |
typeset [Optionen] [Name[=Wert]] |
Das Kommando typeset ist ein Alias für declare.
UNIQ | löscht mehrfach vorkommende Zeilen |
uniq [Optionen] [Eingabedatei [Ausgabedatei]] |
Das Kommando uniq ist ein sogenanntes Filterkommando, da es keine Datei direkt verändert, sondern Datenströme filtert. Das Kommando liest aus einer Eingabedatei oder von stdin, entfernt aus diesem Datenstrom mehrfach hintereinander vorkommende Zeilen, bis auf eine und schreibt das Ergebnis in die Ausgabedatei oder auf stdout.
Option | Bedeutung |
-c , --count | beginne Zeilen mit der Anzahl der Vorkommen |
-d, --repeated | gibt nur die mehrfach vorkommenden Zeilen einmalig aus |
-D, --all-repeated |
gibt alle Zeilen aus, die mehrfach hintereinander vorkommen, --all-repeated=separate fügt zwischen den einzelnen Blöcken identischer Zeilen eine Leerzeile ein, --all-repeated=prepend fügt vor jedem einzelnen Block identischer Zeilen eine Leerzeile ein, --all-repeated=none (default), fügt keine Leerzeilen ein. |
-f, --skip-fields=N | Beziehe in den Vergleich die ersten N Felder nicht mit ein. |
-s, --skip-chars=N | Beziehe in den Vergleich die ersten N Zeichen nicht mit ein. |
-i, --ignore-case | Ignoriere beim vergleich die Groß- und Kleinschreibung. |
-u, --unique | Gib nur die einmal vorkommenden Zeilen aus. |
-w, --check-chars=N | Beziehe in den Vergleich nur die ersten N Zeichen jeder Zeile ein. |
Um alle Zeilenduplikate aus einem Datenstrom zu entfernen, ist die Anwendung des Filterkommandos sort sinnvoll.
Das Kommando sort besitzt selbst eine einfache uniqe-Option.
Sollten die Anforderungen an den Zeilenvergleich höher sein, kann man natürlich beide Kommandos mit in einer Pipe zu komplexeren Strukturen verbinden, wie z.B.
sort [Optionen] [Positionen] [Datei(en)] ¦ uniq [Optionen]
verbunden werden.
UNSET | Variablen entfernen |
unset OPTION NAME |
Mit dem Kommando unset können zuvor deklarierte Variablen, Arrays, Arrayelemente und Funktionen wieder vernichtet werden.
Der Inhalt der Variablen geht dabei verloren.
Schreibgeschützte Variablen können nicht entfernt werden.
unset ist das Gegenstück zum Kommando declare.
Siehe auch die declare.
Option | Bedeutung |
-v | Bei NAME handelt es sich um eine Variable, ein Array oder Arrayelement das entfernt werden soll. Diese Option ist der default-Wert und kann uch weg gelassen werden. |
-f | Bei NAME handelt es sich um eine Funktion die entfernt werden soll. |
UNTIL | Kontrollkonstrukt für Schleifen |
until Kommando1; do Kommandos; done |
until testet, ob das Kommando1 den exit-status 1 (false) liefert. Wenn ja, dann werden die in do...done eingeschlossenen Kommandos ausgeführt. Wenn der exit-status von Kommando1 0 (Null, true) ist, wird die Schleife verlassen. Das Gegenstück zu until ist die while-Schleife. Siehe auch die for-Schleife.
WAIT | Warten auf einen Hintergrundprozess |
wait [Prozessnummer] |
Hintergrundprozesse laufen in der startenden Shell weiter, solange bis sie sich selbst beenden oder die aufrufende Shell beendet wird.
Wenn vor dem Beenden der aufrufenden Shell auf die Beendigung von Hintergrundprozessen gewartet werden soll, so ist das mit dem Kommando wait möglich.
Ohne Parameter aufgerufen, wartet wait auf die Beendigung aller Hintergrundprozesse.
Durch die Angabe einer Prozessnummer oder einer Job-ID kann auf die Beendigung eines bestimmten Hintergrundprozesses gewartet werden.
Bei der Angabe einer Prozessnummer wird nur auf die Beendigung des entsprechenden Prozesses gewartet.
Wird eine Job-ID angegeben, so wird auf die Beendigung aller Prozesse in dem jeweiligen Job gewartet (z.B. bei verketteten Prozessen).
Wurde eine falsche Prozessnummer oder Job-ID angegeben, so gibt wait den exit-code 127 zurück, ansonsten den exit-code des Prozesses/Jobs auf den gewartet wurde.
WHATIS | Kurzhinweis zu Kommandos |
whatis Kommandoname |
Whatis gibt einen kurzen Hinweis zur Aufgabe des Kommandos Kommandoname zurück.
WC | Zählen von Zeichen, Wörtern und Zeilen |
wc [Optionen] [Datei(en)] |
Das Kommando wc liest Daten direkt aus Dateien oder aus dem Standard-Eingabekanal stdin und zählt, wie viele Zeilen, Wörter und Zeichen gelesen wurden. Wörter sind durch Leerzeichen, Tabulatoren oder Zeilenumbrüche voneinander getrennt. Nach dem Lesen aller Daten werden die drei Werte für die Anzahl der gelesenen Zeilen, Wörter und Zeichen angezeigt. Wurde direkt aus einer Datei gelesen, so wird der dateiname ebenfalls mit ausgegeben. Das Kommando wc kennt einige Optionen mit denen festgelegt werden kann, dass nur bestimmte Anzahlen ermittelt werden sollen.
Option | Bedeutung |
-l | --lines, es wird die Anzahl der Zeilenschaltungen ausgegeben |
-c | --bytes, es wird die Anzahl der gelesenen Bytes ausgegeben |
-m | --chars, Es wird die Anzahl der Zeichen ausgegeben |
-L | es wird die Zeichenzahl der längsten Zeile ausgegeben |
-w | --words, es wird die Anzahl der Wörter ausgegeben |
WHICH | Kommandosuche |
which Kommandoname |
which sucht in den Standardsuchpfaden der Shell nach dem angegebenen Kommandole und gibt den Namen mit dem kompletten Pfad wieder aus. Es wird dann der exit-status 0 (Null, true) zurückgegeben. Wird das Kommando nicht gefunden, so erzeugt which eine Fehlermeldung und gibt den exit-status 1 (false) zurück.
WHILE | Kontrollkonstrukt für Schleifen |
while Kommando1; do Kommandos; done |
while testet, ob das Kommando1 den exit-status 0 (Null, true) liefert. Wenn ja, dann werden die in do...done eingeschlossenen Kommandos ausgeführt. Wenn der exit-status von Kommando1 1 (false) ist, wird die Schleife verlassen. Das Gegenstück zu while ist die until-Schleife. Siehe auch die for-Schleife.
Option | Bedeutung |