From bd36939a901ea3c6f3b3ffe6d6b5a1128720f612 Mon Sep 17 00:00:00 2001 From: rschaten Date: Wed, 10 Apr 2002 09:50:30 +0000 Subject: [PATCH] =?UTF-8?q?ps-Trick=20bei=20grep=20eingef=FCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- werkzeugkasten.tex | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/werkzeugkasten.tex b/werkzeugkasten.tex index 8ab1cbc..0526861 100644 --- a/werkzeugkasten.tex +++ b/werkzeugkasten.tex @@ -219,6 +219,28 @@ Die folgende Tabelle stellt einige der vielen Parameter vor: \LTXtable{\textwidth}{tab_kommandos_grep_parameter.tex} +Im Zusammenhang mit grep stößt fast jeder Shell-Skripter früher oder später auf +das Problem, daß er irgendwas davon abhängig machen will, ob ein bestimmter +Prozeß 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äuft +schon}\texttt{\dq} + +Der Grund dafür ist, daß unter Umstä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äuft schon}\texttt{\dq} + +Das p ist jetzt als eine Zeichenmenge (regulä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. + \index{grep=\texttt{grep}|)}