2001-10-09 18:50:47 +00:00
|
|
|
|
\chapter{N<EFBFBD>tzliche Shell-Kommandos}\label{nuetzliche_shell-kommandos}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
Durch die gezeigten Steuerungsm<73>glichkeiten stehen dem Shell-Pro\-grammie\-rer
|
|
|
|
|
M<EFBFBD>glichkeiten offen, fast alle g<>ngigen Algorithmen zu implementieren. Es ist
|
|
|
|
|
tats<EFBFBD>chlich in der Shell m<>glich, Sortier- oder Suchfunktionen zu schreiben.
|
|
|
|
|
Leider kommt aber an dieser Stelle einer der bedeutendsten Nachteile der Shell
|
|
|
|
|
zum tragen: Die Geschwindigkeit.
|
|
|
|
|
|
|
|
|
|
In einem Shell-Skript wird f<>r jedes externe Kommando\footnote{Externe
|
|
|
|
|
Kommandos sind solche, die nicht direkt in der Shell enthalten sind, f<>r die
|
|
|
|
|
also eine eigene Datei aufgerufen wird.} ein eigener Proze<7A> gestartet. Das
|
|
|
|
|
kostet nat<61>rlich Zeit und Speicher.
|
|
|
|
|
|
|
|
|
|
Zeitkritische Anwendungen sind also kein Einsatzgebiet f<>r Shell-Skripte. Die
|
|
|
|
|
schreibt man besser in Perl, oder noch besser in einer `compilierten' Sprache
|
|
|
|
|
wie C oder C++.
|
|
|
|
|
|
|
|
|
|
Es stehen jedoch an der Shell viele sehr n<>tzliche externe Kommandos zur
|
|
|
|
|
Verf<EFBFBD>gung, die einem die Entwicklung entsprechender eigener Routinen ersparen.
|
|
|
|
|
Diese externen Kommandos sind zudem in anderen Sprachen geschrieben worden, so
|
|
|
|
|
da<EFBFBD> sie schneller ablaufen als jedes Shell-Skript. Man kommt als
|
|
|
|
|
Shell-Programmierer nicht sinnvoll um den Einsatz dieser Programme herum.
|
|
|
|
|
|
|
|
|
|
In diesem Abschnitt sollen einige dieser Programme mit typischen
|
|
|
|
|
Einsatzm<EFBFBD>glichkeiten vorgestellt werden. Eine vollst<73>ndige Beschreibung w<>re
|
|
|
|
|
(wenn <20>berhaupt m<>glich) viel zu lang, um an dieser Stelle untergebracht zu
|
|
|
|
|
werden. F<>r ausf<73>hrlichere Beschreibungen empfiehlt sich das Studium der
|
|
|
|
|
Man-Pages oder der Kauf eines entsprechenden Buches. Am besten macht man
|
|
|
|
|
nat<EFBFBD>rlich beides. ;-)
|
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
\section{Ein- und Ausgabe}\label{ein_und_ausgabe}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
Beinahe jedes Skript verwendet in irgendeiner Form die Ein- oder Ausgabe. Sei
|
|
|
|
|
es in interaktiver Art auf dem Terminal, oder im Hintergrund auf Dateien.
|
|
|
|
|
Einige grundlegende Kommandos in diesem Zusammenhang werden hier vorgestellt.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
\subsection{echo}\label{echo}\index{echo=\texttt{echo}|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
Dies ist wohl der grundlegendste Befehl, der in einem Skript verwendet werden
|
|
|
|
|
kann. Er ist die Voraussetzung, um eines der wichtigsten Werkzeuge der
|
|
|
|
|
Kybernetik auch mittels eines Shell-Skriptes effizient umzusetzen: Hello World.
|
|
|
|
|
:-)
|
|
|
|
|
|
|
|
|
|
Die eigentliche Aufgabe dieses Befehls d<>rfte jedem bekannt sein, der sich bis
|
|
|
|
|
zu dieser Stelle durchgearbeitet hat. Allerdings wissen viele nicht, da<64> auch
|
|
|
|
|
der echo-Befehl <20>ber Parameter verf<72>gt. Zumindest zwei davon erweisen sich in
|
|
|
|
|
der Praxis oft als sehr hilfreich:
|
|
|
|
|
|
|
|
|
|
\LTXtable{\textwidth}{tab_kommandos_echo_parameter.tex}
|
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\index{echo=\texttt{echo}|)}
|
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
|
2002-04-09 09:44:58 +00:00
|
|
|
|
\subsection{printf}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
\subsection{cat}\label{cat}\index{cat=\texttt{cat}|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
Auch \texttt{cat} ist ein oft unterbewertetes Tool. Seine Aufgabe besteht zwar
|
|
|
|
|
lediglich darin, etwas von der Standardeingabe oder aus einer Datei zu lesen,
|
|
|
|
|
und das dann auf der Standardausgabe wieder auszugeben. Allerdings leistet es
|
|
|
|
|
an vielen, teilweise sehr unterschiedlich gelagerten Aufgaben wertvolle
|
|
|
|
|
Dienste.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
Durch Umlenklung der Ausgabe k<>nnen Dateien erzeugt und erweitert werden. So
|
|
|
|
|
k<EFBFBD>nnen mehrere Dateien per \texttt{cat datei1.txt datei2.txt > datei.txt}
|
|
|
|
|
verkettet werden.
|
|
|
|
|
|
|
|
|
|
Au<EFBFBD>erdem kann man mit einem Aufruf in der Art \texttt{cat datei.txt | kommando}
|
|
|
|
|
Daten an ein Programm <20>bergeben, das nur von der Standardeingabe lesen kann
|
|
|
|
|
(Filter).
|
|
|
|
|
|
|
|
|
|
\texttt{cat} verf<72>gt <20>ber eine Reige von Parametern, um die Ausgabe zu
|
|
|
|
|
formatieren, so k<>nnen mit \texttt{-n} bzw. \texttt{-b} die Zeilen nummeriert
|
|
|
|
|
werden, oder mit \texttt{-s} mehrere Zeilen zu einer einzigen zusammengefa<66>t
|
|
|
|
|
werden.
|
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\index{cat=\texttt{cat}|)}
|
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
|
|
|
|
|
\subsection{tail}\label{tail}\index{tail=\texttt{tail}|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-09-24 16:58:06 +00:00
|
|
|
|
Der Befehl \texttt{tail} gibt die letzten zehn Zeilen einer Datei aus. Wenn
|
|
|
|
|
kein Dateiname (oder ein \texttt{-}) angegeben wird, liest \texttt{tail} von
|
|
|
|
|
der Standard-Eingabe. Man kann die Anzahl der ausgegebenen Zeilen mit dem
|
|
|
|
|
Parameter \texttt{-l} steuern.
|
|
|
|
|
|
|
|
|
|
Mit dem Parameter \texttt{-f} (follow) gibt \texttt{tail} neue Zeilen aus,
|
|
|
|
|
sobald sie an die Datei angeh<65>ngt werden.
|
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\index{tail=\texttt{tail}|)}
|
|
|
|
|
|
2001-09-24 16:58:06 +00:00
|
|
|
|
|
|
|
|
|
\subsection{head}\label{head}\index{head=\texttt{head}|(textbf}
|
|
|
|
|
|
|
|
|
|
\texttt{head} ist das Gegenst<73>ck zu \texttt{tail} (Siehe \ref{tail}). Hier
|
|
|
|
|
werden allerdings nicht die letzten Zeilen angezeigt, sondern die ersten.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\index{head=\texttt{head}|)}
|
|
|
|
|
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-10-09 07:50:02 +00:00
|
|
|
|
\subsection{read}\label{read}\index{read=\texttt{read}|(textbf}
|
|
|
|
|
|
|
|
|
|
Mit dem Kommando \texttt{read} kann man Eingaben von der
|
|
|
|
|
Standard-Eingabe\index{Standard-Eingabe} lesen. Dabei wird <20>blicherweise einer
|
|
|
|
|
oder mehrere Variablennamen <20>bergeben. Dem ersten Namen wird das erste
|
|
|
|
|
eingegebene Wort zugewiesen, dem zweiten das zweite Wort usw. Dem letzen
|
|
|
|
|
Variablennamen wird der verbleibende Rest der Eingabezeile zugewiesen. Wenn
|
|
|
|
|
also nur ein Variablenname angegeben wird, erh<72>lt dieser die komplette
|
|
|
|
|
Eingabezeile. Wenn weniger Worte gelesen werden als Variablen angegeben sind,
|
|
|
|
|
enthalten die verbleibenden Variablen leere Werte. Als Wort-Trennzeichen dienen
|
|
|
|
|
alle Zeichen, die in der vordefinierten Variable \texttt{\$IFS} enthalten sind
|
|
|
|
|
(siehe Seite \pageref{IFS}).
|
|
|
|
|
|
|
|
|
|
Wenn keine Variablennamen angegeben werden, wird die Eingabe in der Variable
|
|
|
|
|
\texttt{REPLY} abgelegt.
|
|
|
|
|
|
|
|
|
|
Normalerweise wird eine Eingabezeile mit einem Newline abgeschlossen. Mit dem
|
|
|
|
|
Parameter \texttt{-d} ist es m<>glich, ein anderes Zeilenendezeichen anzugeben.
|
|
|
|
|
Beispielsweise liest \texttt{read -d \dq~\dq~var} alle Zeichen bis zum ersten
|
|
|
|
|
Leerzeichen in die Variable \texttt{var} ein.
|
|
|
|
|
|
|
|
|
|
Wenn nur eine bestimmte Zahl von Zeichen gelesen werden soll, kann diese durch
|
|
|
|
|
den Parameter \texttt{-n} angegeben werden. Der Befehl \texttt{read -n 5 var}
|
|
|
|
|
liest die ersten f<>nf Zeichen in die Variable \texttt{var} ein.
|
|
|
|
|
|
|
|
|
|
Mit dem Parameter \texttt{-p} kann man einen Prompt, also eine
|
|
|
|
|
Eingabeaufforderung ausgeben lassen. \texttt{read -p \dq{}Gib was ein:\dq~var}
|
|
|
|
|
schreibt also erst den Text \textit{Gib was ein:} auf das Terminal, bevor die
|
|
|
|
|
Eingaben in die Variable \texttt{var} <20>bernommen werden. Dieser Prompt wird nur
|
|
|
|
|
an einem interaktiven Terminal ausgegeben, also nicht in einem Skript das seine
|
|
|
|
|
Eingaben aus einer Datei oder aus einem Stream erh<72>lt.
|
|
|
|
|
|
|
|
|
|
Sonderzeichen k<>nnen w<>hrend der Eingabe normalerweise mittels eines Backslash
|
|
|
|
|
vor der Interpretation gesch<63>tzt werden. Ein Backslash vor einem Newline
|
|
|
|
|
bewirkt also eine mehrzeilige Eingabe. Dieses Verhalten kann mit dem Parameter
|
|
|
|
|
\texttt{-r} abgeschaltet werden.
|
|
|
|
|
|
|
|
|
|
Wenn die Eingabe von einem Terminal kommt und nicht auf dem Bildschirm
|
|
|
|
|
erscheinen soll, zum Beispiel bei Pa<50>wortabfragen, kann die Ausgabe mit dem
|
|
|
|
|
Parameter \texttt{-s} (Silent) unterdr<64>ckt werden.
|
|
|
|
|
|
|
|
|
|
Mit \texttt{-t} kann ein Time-Out definiert werden, nach dessen Ablauf das
|
|
|
|
|
Kommando mit einem Fehler abbricht. Dieser Parameter ist nur bei interaktiver
|
|
|
|
|
Eingabe oder beim Lesen aus einer Pipe aktiv.
|
|
|
|
|
|
|
|
|
|
Der R<>ckgabewert des \texttt{read}-Kommandos ist 0, es sei denn es trat ein
|
|
|
|
|
Timeout oder ein EOF auf.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\index{read=\texttt{read}|)}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\section{Pfade und Dateien}\label{pfade_und_dateien}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
Eine der Hautaufgaben von Shell-Skripten ist nat<61>rlich das Hantieren mit
|
|
|
|
|
Dateien. In diesem Abschnitt geht es allerdings nicht um den Umgang mit
|
|
|
|
|
Dateiinhalten, sondern vielmehr werden einige n<>tzliche Tools im Umgang mit
|
|
|
|
|
Dateien an sich vorgestellt.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
\subsection{basename}\label{basename}\index{basename=\texttt{basename}|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-10-09 18:50:47 +00:00
|
|
|
|
Dem Tool \texttt{basename} wird als Parameter ein Pfad zu einer Datei
|
|
|
|
|
<EFBFBD>bergeben. Der in der Angabe enthaltene Pfad wird abgeschnitten, nur der Name
|
|
|
|
|
der eigentlichen Datei wird zur<75>ckgegeben.
|
|
|
|
|
|
|
|
|
|
\index{basename=\texttt{basename}|)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\subsection{dirname}\label{dirname}\index{dirname=\texttt{dirname}|(textbf}
|
|
|
|
|
|
|
|
|
|
Analog zu \texttt{basename} gibt \texttt{dirname} nur die Pfad-Komponente einer
|
|
|
|
|
angegebenen Datei zur<75>ck.
|
|
|
|
|
|
|
|
|
|
\index{dirname=\texttt{dirname}|)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\subsection{touch}\label{touch}\index{touch=\texttt{touch}|(textbf}
|
|
|
|
|
|
|
|
|
|
Mit diesem Kommando kann man einerseits Dateien anlegen wenn sie nicht
|
|
|
|
|
existieren, und andererseits die <20>nderungs- und Zugriffszeiten einer Datei
|
|
|
|
|
<EFBFBD>ndern. Ohne die Angabe weiterer Parameter wird die Datei erzeugt wenn sie
|
|
|
|
|
nicht existierte, bzw. in ihrer <20>nderungs- und Zugriffszeit auf die aktuelle
|
|
|
|
|
Zeit gesetzt.
|
|
|
|
|
|
|
|
|
|
Mit dem Parameter \texttt{-a} wird nur die Zugriffs-, mit \texttt{-m} nur die
|
|
|
|
|
<EFBFBD>nderungszeit gesetzt. Mit \texttt{-c} kann die Erstellung einer neuen Datei
|
|
|
|
|
unterdr<EFBFBD>ckt werden.
|
|
|
|
|
|
|
|
|
|
Die eingesetzte Zeit kann auch durch die Parameter \texttt{-t} bzw. \texttt{-d}
|
|
|
|
|
angegeben werden. Mit \texttt{-r} kann die Zeit der einer angegebenen
|
|
|
|
|
Referenzdatei angepa<70>t werden.
|
|
|
|
|
|
|
|
|
|
\index{touch=\texttt{touch}|)}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
\section{Pipes manipulieren}\label{pipes_manipulieren}\index{Pipe|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
Das Konzept der Pipes (R<>hren) wird bereits in dem Kapitel <20>ber Befehlsformen
|
|
|
|
|
(\ref{befehlsformen}) vorgestellt. Im wesentlichen besteht es darin, da<64> Daten
|
|
|
|
|
von einem Programm an ein anderes weitergeleitet werden. Auf diese Weise
|
|
|
|
|
entsteht eine sogenannte \textit{Pipeline}\index{Pipeline} aus mehreren
|
|
|
|
|
Kommandos.
|
|
|
|
|
|
|
|
|
|
Einige Kommandos sind f<>r den Einsatz in einem solchen Konstrukt pr<70>destiniert,
|
|
|
|
|
obwohl die meisten auch alleine eingesetzt werden k<>nnen. Einige dieser
|
|
|
|
|
Tools sollen im Folgenden vorgestellt werden.
|
|
|
|
|
|
|
|
|
|
\subsection{grep}\label{grep}\index{grep=\texttt{grep}|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
Das Tool \texttt{grep} stammt aus dem Standard-Repertoire eines jeden
|
|
|
|
|
Systemadministrators. Mit seiner Hilfe kann in einer oder mehreren Dateien,
|
|
|
|
|
oder eben auch in einem Datenstrom nach dem Auftreten bestimmter regul<75>rer
|
|
|
|
|
Ausdr<EFBFBD>cke (siehe \ref{mustererkennung}) gesucht werden.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
Die folgende Tabelle stellt einige der vielen Parameter vor:
|
|
|
|
|
|
|
|
|
|
\LTXtable{\textwidth}{tab_kommandos_grep_parameter.tex}
|
|
|
|
|
|
2002-04-10 09:50:30 +00:00
|
|
|
|
Im Zusammenhang mit grep st<73><74>t fast jeder Shell-Skripter fr<66>her oder sp<73>ter auf
|
|
|
|
|
das Problem, da<64> er irgendwas davon abh<62>ngig machen will, ob ein bestimmter
|
|
|
|
|
Proze<EFBFBD> l<>uft oder nicht. Im Normalfall wird er zuerst folgendes ausprobieren,
|
|
|
|
|
was aber oft (nicht immer) in die Hose gehen wird:
|
|
|
|
|
|
|
|
|
|
\texttt{ps aux | grep }\textit{prozessname}\texttt{ \&\& echo \dq}\textit{l<EFBFBD>uft
|
|
|
|
|
schon}\texttt{\dq}
|
|
|
|
|
|
|
|
|
|
Der Grund daf<61>r ist, da<64> unter Umst<73>nden in der Ausgabe von \texttt{ps} auch
|
|
|
|
|
das \texttt{grep}-Kommando samt Parameter (\textit{prozessname}) aufgelistet
|
|
|
|
|
wird. So findet das \texttt{grep}-Kommando sich quasi selbst.
|
|
|
|
|
|
|
|
|
|
Abhilfe schafft das folgende Konstrukt:
|
|
|
|
|
|
|
|
|
|
\texttt{ps aux | grep \dq}\textit{[p]rozessname}\texttt{\dq~\&\& echo
|
|
|
|
|
\dq}\textit{l<EFBFBD>uft schon}\texttt{\dq}
|
|
|
|
|
|
|
|
|
|
Das p ist jetzt als eine Zeichenmenge (regul<75>rer Ausdruck) angegeben worden.
|
|
|
|
|
Jetzt sucht \texttt{grep} also nach dem String \textit{prozessname}, in der
|
|
|
|
|
Ausgabe von \texttt{ps} erscheint das \texttt{grep}-Kommando allerdings mit
|
|
|
|
|
\textit{[p]rozessname} und wird somit ignoriert.
|
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
\index{grep=\texttt{grep}|)}
|
|
|
|
|
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
|
|
|
|
\subsection{sed}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\subsection{awk}
|
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
TODO!!
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
|
|
|
|
\subsection{sort}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{tee}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{wc}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
2002-02-25 16:17:18 +00:00
|
|
|
|
\index{Pipe|)}
|
|
|
|
|
|
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
\section{Sonstige Befehle}\label{sonstige_befehle}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 16:53:41 +00:00
|
|
|
|
Eine Reihe weiterer Befehle k<>nnte in verschiedenen Lagen hilfreich sein.
|
|
|
|
|
Einige davon werden im Folgenden in loser Folge vorgestellt.
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 15:32:33 +00:00
|
|
|
|
\subsection{script}\label{script}\index{script=\texttt{script}|(textbf}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
2001-07-02 15:32:33 +00:00
|
|
|
|
Dieses Kommando eignet sich vorz<72>glich f<>r das Debuggen fertiger Skripte. Man
|
|
|
|
|
ruft es in Verbindung mit einem Dateinamen auf. Dieser Aufruf startet eine neue
|
|
|
|
|
Shell, in der man beliebige Kommandos ausf<73>hren kann. Wenn man fertig ist,
|
2001-07-02 16:53:41 +00:00
|
|
|
|
beendet man den script-Befehl durch die Eingabe von \texttt{exit},
|
|
|
|
|
\texttt{logout} oder Druck der Tastenkombination \Ovalbox{CTRL}+\Ovalbox{d}
|
|
|
|
|
(EOF).
|
2001-07-02 15:32:33 +00:00
|
|
|
|
|
|
|
|
|
Script schreibt alle Ein- und Ausgaben die an dem Terminal vorgenommen werden
|
|
|
|
|
in die angegebene Datei. So kann man auch interaktive Skripte relativ leicht
|
|
|
|
|
debuggen, da sowohl Ein- als auch Ausgaben in dem Logfile sichtbar sind.
|
2002-03-22 15:21:32 +00:00
|
|
|
|
\index{script=\texttt{script}|)}
|
2001-07-02 12:52:18 +00:00
|
|
|
|
|
|
|
|
|
\subsection{seq}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{expr}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{bc}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{kill}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{sleep}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
|
|
|
|
|
|
|
|
|
\subsection{who}
|
|
|
|
|
|
|
|
|
|
TODO!!!
|
2002-03-22 15:21:32 +00:00
|
|
|
|
|
|
|
|
|
\subsection{chpasswd}\label{script}\index{chpasswd=\texttt{chpasswd}|(textbf}
|
|
|
|
|
|
|
|
|
|
Mit diesem Kommando bietet sich dem Administrator des Systems die M<>glichkeit,
|
|
|
|
|
scriptgesteuert die Pa<50>w<EFBFBD>rter f<>r neue Benutzer zu vergeben. Manuell <20>ndert man
|
|
|
|
|
ein Pa<50>wort mit dem Kommando \texttt{passwd}\index{passwd=\texttt{passwd}},
|
|
|
|
|
allerdings l<>scht (flusht) dieses Programm die Standard-Eingabe, bevor es das
|
|
|
|
|
neue Pa<50>wort erwartet. Somit lassen sich Pa<50>w<EFBFBD>rter mit \texttt{passwd} nur
|
|
|
|
|
interaktiv <20>ndern\footnote{Es gibt auch einen anderen Weg: Man kann
|
|
|
|
|
\texttt{passwd} auch mittels \texttt{expect} fernsteuern. Allerdings ist diese
|
|
|
|
|
Methode weniger elegant.}.
|
|
|
|
|
|
2002-03-22 16:33:28 +00:00
|
|
|
|
Das Kommando wird in der Form
|
|
|
|
|
|
|
|
|
|
\texttt{echo }\textit{name}\texttt{:}\textit{pass}\texttt{ | chpasswd}
|
|
|
|
|
|
|
|
|
|
aufgerufen. Es ist auch m<>glich, dem Programm eine Datei mit vielen Name /
|
|
|
|
|
Pa<EFBFBD>wort-Kombinationen an die Standard-Eingabe zu <20>bergeben:
|
|
|
|
|
|
|
|
|
|
\texttt{cat }\textit{passwoerter.txt}\texttt{ | chpasswd}
|
|
|
|
|
|
|
|
|
|
Allerdings sollte dabei aus Sicherheitsgr<67>nden darauf geachtet werden, da<64>
|
|
|
|
|
diese Datei nicht allgemein lesbar ist.
|
2002-03-22 15:21:32 +00:00
|
|
|
|
|
|
|
|
|
\index{chpasswd=\texttt{chpasswd}|)}
|