Kleine Verbesserungen, neue Kommandos exec und type.

This commit is contained in:
rschaten
2005-02-22 21:30:40 +00:00
parent f72918f75d
commit 577cdbfcd1
5 changed files with 127 additions and 35 deletions

View File

@@ -134,6 +134,7 @@ Datei kann viel mehr sein als nur ein paar Daten im Filesystem.
\item \texttt{rm} (\ref{rm}): Dateien löschen
\item \texttt{rmdir} (\ref{rmdir}): Verzeichnisse löschen
\item \texttt{touch} (\ref{touch}): Eine leere Datei anlegen, bzw. das Zugriffsdatum einer Datei ändern
\item \texttt{type} (\ref{type}): Art eines Kommandos feststellen
\item \texttt{which} (\ref{which}): Ausführbare Dateien suchen
\item \texttt{xargs} (\ref{xargs}): Ausgaben eines Kommandos als Parameter eines anderen Kommandos benutzen
\end{itemize}
@@ -161,6 +162,7 @@ kleinsten geeigneten Hammer nehmen.
\begin{itemize}
\item \texttt{awk} (\ref{awk}): In einer Pipe editieren
\item \texttt{cut} (\ref{cut}): Teile einer Zeile ausschneiden
\item \texttt{exec} (\ref{exec}): Dateideskriptoren umhängen
\item \texttt{grep} (\ref{grep}): In einer Pipe suchen
\item \texttt{sed} (\ref{sed}): In einer Pipe editieren
\item \texttt{sort} (\ref{sort}): Zeilenweises Sortieren
@@ -185,6 +187,7 @@ F
Verfügung.
\begin{itemize}
\item \texttt{exec} (\ref{exec}): Kommandos ausführen
\item \texttt{kill} (\ref{kill}): Signal an einen Prozeß schicken
\item \texttt{killall} (\ref{killall}): Signal an mehrere Prozesse schicken
\item \texttt{ps} (\ref{ps}): Prozeßliste ausgeben
@@ -400,8 +403,11 @@ k
verkettet werden.
Außerdem kann man mit einem Aufruf in der Art
\lstinline|cat datei.txt | kommando| Daten an ein Programm übergeben, das nur
von der Standardeingabe lesen kann (Filter).
\lstinline!cat datei.txt | kommando! Daten an ein Programm übergeben, das nur
von der Standardeingabe lesen kann (Filter). Das geht zwar auch durch eine
Umleitung (siehe Abschnitt \ref{datenstrom}), wird aber in dieser Form von
vielen als lesbarer angesehen. Vorteil der Umleitungs-Methode ist, daß nicht
erst ein externes Kommando ausgeführt werden muß.
\begin{dinglist}{43}
\item GNU-\texttt{cat} verfügt über eine Reihe von Parametern, um die Ausgabe
@@ -667,6 +673,12 @@ der Praxis oft als sehr hilfreich:
\LTXtable{\textwidth}{tab_kommandos_echo_parameter.tex}
\begin{dinglist}{43}
\item Die Steuerzeichen, die nach einem \texttt{-e} angegeben werden können
sind nicht in allen Shells gleich. Das sollte berücksichtigt werden, wenn das
Skript portabel bleiben soll.
\end{dinglist}
\index{echo=\texttt{echo}|)}
@@ -697,6 +709,28 @@ Array-Elementes ausgegeben werden:
\index{eval=\texttt{eval}|)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{exec}\label{exec}\index{exec=\texttt{exec}|(textbf}
Dieses Kommando hat zwei wesentliche Einsatzgebiete:
Wenn das laufende Skript nur benutzt wird um ein anderes Programm zu starten,
beispielsweise um die Umgebungsvariablen geeignet zu belegen, sollte das
Programm mit \texttt{exec} ausgeführt werden. Der Effekt ist, daß sich die
Shell in der das Skript ausgeführt wird beendet und die Kontrolle vollständig
an das neue Programm übergibt. So vermeidet man einen überflüssigen Prozeß, der
lediglich auf die Beendigung seiner Kinder wartet.
Der zweite Anwendungsfall ist etwas für den fortgeschrittenen Benutzer: Man
kann mit \texttt{exec} Dateideskriptoren umhängen. Damit ist gemeint, daß zum
Beispiel die Standardausgabe mittels \lstinline|exec >5| auf den
Dateideskriptor mit der Nummer 5 gelegt werden kann. Auf diesem Weg kann mit
mehreren Datenströmen jongliert werden. Die Beispiele in Anhang
\ref{dateien_die_es_nicht_gibt} verdeutlichen die Anwendung.
\index{exec=\texttt{exec}|)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{expr}\label{expr}\index{expr=\texttt{expr}|(textbf}
@@ -792,7 +826,7 @@ f
\textbf{Alternative 2:} Sucht man nach einer ausführbaren Datei, die im Pfad
vorhanden ist (`Wo liegt eigentlich Firefox?'), dann sucht man mittels
\texttt{which} (Abschnitt \ref{which}).
\texttt{which} (Abschnitt \ref{which}) oder \texttt{type} (\ref{type}).
Siehe auch: Abschnitt \ref{beispiele_suchen_dateien}.
@@ -1733,14 +1767,28 @@ entkr
\lstinline|trap 'echo "Ctrl-C ist ausser Kraft."' 2|
Eine Sonderbehandlung macht die Shell, wenn als Signal \texttt{DEBUG} angegeben
wird. Dann wird nach jedem ausgeführten Kommando der Trap ausgelöst. Dieses
Feature wird wie der Name schon erahnen läßt zum Debuggen benutzt, ein Beispiel
findet sich in Abschnitt \ref{fehlersuche}.
Eine Sonderbehandlung machen viele Shells, wenn als Signal \texttt{DEBUG}
angegeben wird. Dann wird nach jedem ausgeführten Kommando der Trap ausgelöst.
Dieses Feature wird wie der Name schon erahnen läßt zum Debuggen benutzt, ein
Beispiel findet sich in Abschnitt \ref{fehlersuche}.
\index{trap=\texttt{trap}|)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{type}\label{type}\index{type=\texttt{type}|(textbf}
Das in die Shell eingebaute Kommando \texttt{type} gibt Auskunft über die Art
eines ausführbaren Kommandos. So kann man herausfinden ob beim Absetzen des
Befehls ein externes Programm gestartet, eine Shell-Funktion ausgeführt oder
ein Alias benutzt wird.
Sucht man nur nach einer ausführbaren Datei, hilft \texttt{which} (Abschnitt
\ref{which}).
\index{type=\texttt{type}|)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{uniq}\label{uniq}\index{uniq=\texttt{uniq}|(textbf}
@@ -1813,6 +1861,8 @@ Dateien auf das Suchwort passen wird die erste Fundstelle ausgegeben, also die
Datei die tatsächlich ausgeführt würde. Mit \texttt{-a} werden alle Fundstellen
ausgegeben.
Einen ähnlichen Zweck erfüllt auch \texttt{type} (Abschnitt \ref{type}).
\index{which=\texttt{which}|)}