Viele Aenderungen
This commit is contained in:
@ -240,8 +240,8 @@ awk '
|
||||
print $2;
|
||||
}' datei.txt
|
||||
|
||||
# Alternativ k<>nnen die Kommandos auch in eine eigene Datei gespeichert und
|
||||
# <20>ber den Parameter -f eingebunden werden:
|
||||
# Alternativ k<>nnen die Kommandos auch in eine eigene Datei gespeichert
|
||||
# und <20>ber den Parameter -f eingebunden werden:
|
||||
awk -f script.awk datei.txt
|
||||
\end{lstlisting}
|
||||
|
||||
@ -313,8 +313,8 @@ Hier ein paar Einfache Beispiele f
|
||||
# Datens<6E>tze mit mehr als zwei Feldern ausw<73>hlen:
|
||||
NF > 2
|
||||
|
||||
# Das dritte und das zweite Feld jeder Zeile ausgeben, deren erstes Feld den
|
||||
# String 'WICHTIG' enth<74>lt:
|
||||
# Das dritte und das zweite Feld jeder Zeile ausgeben, deren erstes Feld
|
||||
# den String 'WICHTIG' enth<74>lt:
|
||||
$1 ~ /WICHTIG/ { print $3, $2 }
|
||||
|
||||
# Die Vorkommen von 'muster' z<>hlen, und deren Anzahl ausgeben:
|
||||
@ -328,19 +328,20 @@ length($0) < 23
|
||||
# enthalten:
|
||||
NF == 7 && /^Name:/
|
||||
|
||||
# Alle Felder der Eingabedaten zeilenweise in umgekehrter Reihenfolge ausgeben:
|
||||
# Alle Felder der Eingabedaten zeilenweise in umgekehrter Reihenfolge
|
||||
# ausgeben:
|
||||
{
|
||||
for (i = NF; i >= 1; i--)
|
||||
print $i
|
||||
}
|
||||
|
||||
# Die Gr<47><72>e aller TeX-Dateien addieren, die Summe in kB umrechnen und ausgeben,
|
||||
# verarbeitet die Ausgabe von 'ls -l':
|
||||
# Die Gr<47><72>e aller TeX-Dateien addieren, die Summe in kB umrechnen und
|
||||
# ausgeben, verarbeitet die Ausgabe von 'ls -l':
|
||||
/.*tex/ { summe += $5 }
|
||||
END { summe /= 1024; print "Die Gr<47><72>e aller TeX-Files betr<74>gt", summe, "kB" }
|
||||
END { summe /= 1024; print "Die Gr<47><72>e aller TeX-Files:", summe, "kB" }
|
||||
|
||||
# Pipe-Separierte Liste aller gemounteten Partitionen und derer F<>llst<73>nde
|
||||
# ausgeben, verarbeitet die Ausgabe von 'df':
|
||||
# Pipe-Separierte Liste aller gemounteten Partitionen und derer
|
||||
# F<>llst<73>nde ausgeben, verarbeitet die Ausgabe von 'df':
|
||||
BEGIN { OFS="|" }
|
||||
/^\/dev\// { print $1,$5 }
|
||||
|
||||
@ -705,15 +706,20 @@ hier ein paar praktische Beispiele:
|
||||
\begin{lstlisting}
|
||||
# Suche alle Eintr<74>ge in bzw. unter dem aktuellen Verzeichnis:
|
||||
find .
|
||||
|
||||
# Suche alle normalen Dateien mit der Endung txt unter /home:
|
||||
find /home -type f -name \*.txt
|
||||
# Suche alle Eintr<74>ge au<61>er symbolischen Links, in die jeder schreiben darf:
|
||||
|
||||
# Suche alle Eintr<74>ge au<61>er symbolischen Links, in die jeder schreiben
|
||||
# darf:
|
||||
find / \! -type l -perm 777
|
||||
# Suche alle Dateien unter dem Homeverzeichnis, deren Gr<47><72>e 10000000 Bytes
|
||||
# <EFBFBD>bersteigt und gib sie ausf<73>hrlich aus:
|
||||
|
||||
# Suche alle Dateien unter dem Homeverzeichnis, deren Gr<47><72>e 10000000
|
||||
# Bytes <20>bersteigt und gib sie ausf<73>hrlich aus:
|
||||
find ~ -size +10000000c -exec ls -l {} \;
|
||||
# Suche alle Eintr<74>ge im Homeverzeichnis, die innerhalb der letzten zwei Tage
|
||||
# ge<EFBFBD>ndert wurden:
|
||||
|
||||
# Suche alle Eintr<74>ge im Homeverzeichnis, die innerhalb der letzten zwei
|
||||
# Tage ge<67>ndert wurden:
|
||||
find ~ -mtime -2
|
||||
\end{lstlisting}
|
||||
|
||||
@ -790,7 +796,8 @@ Es gibt verschiedene Wege, das Signal abzusetzen. Welchen man w
|
||||
Geschmackssache. Hier ein paar Beispiele:
|
||||
|
||||
\begin{lstlisting}
|
||||
# Die folgenden Befehle sind gleichwertig. Alle senden ein HUP an Proze<7A>-ID 42:
|
||||
# Die folgenden Befehle sind gleichwertig. Alle senden ein HUP an
|
||||
# Proze<7A>-ID 42:
|
||||
kill -1 42
|
||||
kill -HUP 42
|
||||
kill -SIGHUP 42
|
||||
@ -798,7 +805,8 @@ kill -s 1 42
|
||||
kill -s HUP 42
|
||||
kill -s SIGHUP 42
|
||||
|
||||
# virtueller Selbstmord: Alle Prozesse umbringen, die man umbringen kann:
|
||||
# virtueller Selbstmord:
|
||||
# Alle Prozesse umbringen, die man umbringen kann:
|
||||
kill -9 -1
|
||||
|
||||
# SIGTERM an mehrere Prozesse senden:
|
||||
@ -1073,8 +1081,8 @@ ps -ely
|
||||
ps ax
|
||||
ps axu
|
||||
|
||||
# Proze<7A>baum ausgeben. Das ist in Skripten weniger Sinnvoll, wird hier aber
|
||||
# angegeben weil es so eine praktische Funktion ist... :-)
|
||||
# Proze<7A>baum ausgeben. Das ist in Skripten weniger Sinnvoll, wird hier
|
||||
# aber angegeben weil es so eine praktische Funktion ist... :-)
|
||||
ps -ejH
|
||||
ps axjf
|
||||
|
||||
@ -1229,12 +1237,12 @@ kommando1 | sed 's/alt/neu/' | kommando2
|
||||
# Aufruf mit einer zu bearbeitenden Datei:
|
||||
sed 's/alt/neu/' datei.txt
|
||||
|
||||
# Wenn mehr als ein Kommando ausgef<65>hrt werden soll, mu<6D> der Parameter -e
|
||||
# verwendet werden:
|
||||
# Wenn mehr als ein Kommando ausgef<65>hrt werden soll, mu<6D> der Parameter
|
||||
# -e verwendet werden:
|
||||
sed -e 's/alt/neu/' -e '/loeschen/d' datei.txt
|
||||
|
||||
# Man kann auch mehrere Kommandos mit einem -e aufrufen, wenn sie durch ein
|
||||
# Semikolon getrennt werden:
|
||||
# Man kann auch mehrere Kommandos mit einem -e aufrufen, wenn sie durch
|
||||
# ein Semikolon getrennt werden:
|
||||
sed 's/alt/neu/; /loeschen/d' datei.txt
|
||||
|
||||
# In einem Skript kann das Kommando auch <20>ber mehrere Zeilen gehen:
|
||||
@ -1242,8 +1250,8 @@ sed '
|
||||
s/alt/neu/
|
||||
/loeschen/d' datei.txt
|
||||
|
||||
# Alternativ k<>nnen die Kommandos auch in eine eigene Datei gespeichert und
|
||||
# <20>ber den Parameter -f eingebunden werden:
|
||||
# Alternativ k<>nnen die Kommandos auch in eine eigene Datei gespeichert
|
||||
# und <20>ber den Parameter -f eingebunden werden:
|
||||
sed -f script.sed datei.txt
|
||||
\end{lstlisting}
|
||||
|
||||
@ -1330,10 +1338,12 @@ sed 's/rot/blau/' # Ersetzt nur das erste Vorkommen in jeder Zeile
|
||||
sed 's/rot/blau/4' # Ersetzt nur das vierte Vorkommen in jeder Zeile
|
||||
sed 's/rot/blau/g' # Ersetzt nur jedes Vorkommen in jeder Zeile
|
||||
|
||||
# 'rot' durch 'blau' ersetzen, aber NUR in Zeilen die auch 'gelb' enthalten:
|
||||
# 'rot' durch 'blau' ersetzen, aber NUR in Zeilen die auch 'gelb'
|
||||
# enthalten:
|
||||
sed '/gelb/s/rot/blau/g'
|
||||
|
||||
# 'rot' durch 'blau' ersetzen, AUSSER in Zeilen die auch 'gelb' enthalten:
|
||||
# 'rot' durch 'blau' ersetzen, AUSSER in Zeilen die auch 'gelb'
|
||||
# enthalten:
|
||||
sed '/gelb/!s/rot/blau/g'
|
||||
|
||||
# 'rosa', 'hellrot' und 'magenta' durch 'pink' ersetzen:
|
||||
@ -1344,9 +1354,10 @@ gsed 's/rosa\|hellrot\|magenta/pink/g' # nur in GNU sed
|
||||
# lies: 'ersetze jeden Zeilenanfang durch f<>nf Leerzeichen'
|
||||
sed 's/^/ /'
|
||||
|
||||
# F<>hrende Blanks (Leerzeichen, Tabulatoren) von den Zeilenanf<6E>ngen l<>schen:
|
||||
# ACHTUNG: An Stelle des \t mu<6D> der Tabulator gedr<64>ckt werden, die Darstellung
|
||||
# als \t versteht nicht jedes sed!
|
||||
# F<>hrende Blanks (Leerzeichen, Tabulatoren) von den Zeilenanf<6E>ngen
|
||||
# l<EFBFBD>schen:
|
||||
# ACHTUNG: An Stelle des \t mu<6D> der Tabulator gedr<64>ckt werden, die
|
||||
# Darstellung als \t versteht nicht jedes sed!
|
||||
sed 's/^[ \t]*//'
|
||||
|
||||
# Schliessende Blanks vom Zeilenende l<>schen, siehe oben:
|
||||
@ -1612,6 +1623,30 @@ Kommando gibt zm Beispiel eine Fehlermeldung aus wenn sein Skript ein Signal 1
|
||||
Die Zeile ist dem Beispiel aus Abschnitt \ref{traps} entnommen, dort findet
|
||||
sich auch nochmal eine ausf<73>hrliche Erkl<6B>rung.
|
||||
|
||||
Ein weiterer n<>tzlicher Einsatz f<>r \texttt{trap} ist es, Signale zu
|
||||
ignorieren. Das kann gew<65>nscht sein, wenn eine Folge von Kommandos in einem
|
||||
Skript auf keinen Fall unterbrochen werden darf. Um zu verhindern da<64> ein
|
||||
\Ovalbox{CTRL}-\Ovalbox{C} des Benutzers das Skript beendet wird folgendes
|
||||
Konstrukt eingesetzt:
|
||||
|
||||
\begin{lstlisting}
|
||||
trap '' 2 # Signal 2 ist Ctrl-C, jetzt deaktiviert.
|
||||
kommando1
|
||||
kommando2
|
||||
kommando3
|
||||
trap 2 # Reaktiviert Ctrl-C
|
||||
\end{lstlisting}
|
||||
|
||||
Vielleicht w<>re es aber auch dem Benutzer gegen<65>ber freundlicher, auf das
|
||||
entkr<EFBFBD>ftete Signal hinzuweisen:
|
||||
|
||||
\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<65>hrten Kommando der Trap ausgel<65>st. Dieses
|
||||
Feature wird wie der Name schon erahnen l<><6C>t zum Debuggen benutzt, ein Beispiel
|
||||
findet sich in Abschnitt \ref{fehlersuche}.
|
||||
|
||||
\index{trap=\texttt{trap}|)}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user