Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

"escape"-Zeichen escapen

3 views
Skip to first unread message

Helmut Hullen

unread,
Dec 14, 2009, 11:03:00 AM12/14/09
to
Hallo alle miteinander,

Wenn ich

cd /usr/sbin
/bin/ls -1 | grep ^rpc\.

eingebe, dann wird mir auch "rpcinfo" angezeigt; erst mit

/bin/ls -1 | grep ^rpc\\.

wird "rpcinfo" nicht angezeigt. Warum muss ich das "escape"-Symbol noch
mal extra "escapen"?
Gilt jedenfalls f�r GNU-Grep 2.5.0 und 2.5.4.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

Michael Schindler

unread,
Dec 14, 2009, 11:13:33 AM12/14/09
to

Helmut Hullen wrote:

> cd /usr/sbin
> /bin/ls -1 | grep ^rpc\.

Hier nimmt die Shell das "escape"-Symbol weg.
Das grep sieht nur "^rpc."

> /bin/ls -1 | grep ^rpc\\.

Beim 2."escape"-Symbol gelangt dieses zum grep.
grep sieht jetzt also "^rpc\.".
Damit ist der Punkt für das grep jetzt wörtlich zu nehmen.

Gruß

--

echo "zvpunry....@zngrean.qr" | tr A-Za-z N-ZA-Mn-za-m

Achim Peters

unread,
Dec 14, 2009, 3:02:32 PM12/14/09
to
Helmut Hullen wrote:
> Wenn ich
>
> cd /usr/sbin
> /bin/ls -1 | grep ^rpc\.
>
> eingebe, dann wird mir auch "rpcinfo" angezeigt; erst mit
>
> /bin/ls -1 | grep ^rpc\\.
>
> wird "rpcinfo" nicht angezeigt. Warum muss ich das "escape"-Symbol noch
> mal extra "escapen"?

grep-Argumente o. ᅵ. setze ich immer in "", sonst gibt das nur ᅵrger.

$ touch rpcinfo

$ touch rpc.test

$ ls -1 | grep ^rpc.
rpc.test
rpcinfo

$ ls -1 | grep ^rpc\\.
rpc.test

$ ls -1 | grep "^rpc\."
rpc.test

Bye
Achim

Helmut Hullen

unread,
Dec 14, 2009, 4:25:00 PM12/14/09
to
Hallo, Achim,

Du meintest am 14.12.09:

>> Wenn ich
>>
>> cd /usr/sbin
>> /bin/ls -1 | grep ^rpc\.
>>
>> eingebe, dann wird mir auch "rpcinfo" angezeigt; erst mit
>>
>> /bin/ls -1 | grep ^rpc\\.
>>
>> wird "rpcinfo" nicht angezeigt. Warum muss ich das "escape"-Symbol
>> noch mal extra "escapen"?

[...]

> $ ls -1 | grep "^rpc\."
> rpc.test

Tats�chlich!
Seltsam ist das trotzdem ...

Danke sch�n!

David Haller

unread,
Dec 14, 2009, 11:44:39 PM12/14/09
to
On 14 Dec 2009 17:03:00 +0100, Helmut Hullen <Hel...@hullen.de> wrote:
> Wenn ich
>
> cd /usr/sbin
> /bin/ls -1 | grep ^rpc\.
>
> eingebe, dann wird mir auch "rpcinfo" angezeigt; erst mit
>
> /bin/ls -1 | grep ^rpc\\.
>
> wird "rpcinfo" nicht angezeigt. Warum muss ich das "escape"-Symbol noch
> mal extra "escapen"?

RTFM. set -x.

Da du nicht quotest frisst schon die shell ein '\' weg. Im ersten Fall
bekommt grep das nie zu sehen. Kurzum: Quoten!

/bin/ls | grep '^rpc\.'

Durch's nicht-quoten muᅵt du "escapen", daᅵ du kirre davon wirst.

-dnh

--
Wieviele Deutsche sind im Kampf gegen den islamistischen Terrorismus schon ge-
storben? Allein die Raucher, die finanzieren das ja alles. Extra Aufschlag auf
die Tabaksteuer [..] Ist doch die perfekte Ironie, oder? Selbstmordattentᅵter
finanzieren den Kampf gegen den Terror. -- Volker Pispers, Bis neulich (2007)

Message has been deleted

David Haller

unread,
Dec 15, 2009, 4:08:44 PM12/15/09
to
Tilo Strack <t.st...@arcor.de> wrote:

> David Haller wrote:
>> On 14 Dec 2009 17:03:00 +0100, Helmut Hullen <Hel...@hullen.de> wrote:
>>> Wenn ich
>>>
>>> cd /usr/sbin
>>> /bin/ls -1 | grep ^rpc\.
>>>
>>> eingebe, dann wird mir auch "rpcinfo" angezeigt; erst mit
[..]
>> RTFM. set -x.
>
> Vorsicht, zumindest die bash gibt (gab?) da mitunter herrlichen
> Blᅵdsinn aus. Jaja, bash und scripte, ich weiss...

Ist mir noch nie aufgefallen. Und zumindest hier hᅵtte es auch
geholfen:

$ set -x; /bin/ls -1 | grep ^rpc\.
+ /bin/ls -1
+ grep '^rpc.'

Und es hat den groᅵen Vorteil, daᅵ man (fremde) Scripte nicht ᅵndern
muᅵ, sondern diese einfach per 'bash -x' aufrufen kann.

> Ein einfaches echo kann ebenso Erleuchtung bringen.

Meist ja ;)

-dnh

--
"Ein WoKo ist eine Einheit.
Ein WoKo beschreibt die kleinstmoegliche Strecke zwischen zwei
Fettnaepfchen." [Juergen Poehlert in dagᅵ]

Message has been deleted

Thomas Rachel

unread,
Dec 16, 2009, 10:12:29 AM12/16/09
to
Tilo Strack schrieb:

> Aber:
>
> $ bash
> bash-4.0$ set -x
> bash-4.0$ echo bla
> + echo bla
> bla
> bash-4.0$ echo "bla"
> + echo bla
> bla
> bash-4.0$ echo 'bla'
> + echo bla
> bla
> bash-4.0$ echo '"bla"'
> + echo '"bla"'
> "bla"
> bash-4.0$ echo "'bla'"
> + echo ''\''bla'\'''
> 'bla'
>
> WTF!?
> Die ksh hier[tm] macht's richtig.

und was ist an obigem falsch? Das ist die einzig sinnvolle Weise, einen
String zu quoten: ersetze alle enthaltenen ' durch '\'' und umschließe
den String mit zwei '.

hier also: aus den ' werden '\'', vorn dran ein ' und hintendran ein '
und schon hat man

' '\'' bla '\'' '

(Leerzeichen zur Verdeutlichung)

bzw. eben ''\''bla'\''' .


Thomas

Thomas Rachel

unread,
Dec 16, 2009, 10:22:39 AM12/16/09
to
Tilo Strack schrieb:

> bash-4.0$ echo "'bla'"
> + echo ''\''bla'\'''
> 'bla'
>
> WTF!?
> Die ksh hier[tm] macht's richtig.

Eben noch vergessen:

Was gibt denn ksh bei

echo \"\'

aus? Bei bash ist es

+ echo '"'\'''


Thomas

Message has been deleted
Message has been deleted
0 new messages