[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: find-Kommando



Am 24. Februar 2010 19:12 schrieb Tobias Nissen <tn@movb.de>:
> Mario 'BitKoenig' Holbe wrote:
>> Rudolf Henze <rudo.henze@googlemail.com> wrote:
>>>       find . -type f -exec file '{}' \;
>>> Dass man das Semikolon escapen muss, damit es nicht als
>>> Befehlstrenner erkannt wird verstehe ich ja. Aber wozu denn {} in
>>> einfachen Anf=FChrungszeichen setzen?
>>
>> Aus demselben Grund. Ist halt nur ne andere Art des Escapens.
>>
>>       find . -type f -exec file \{\} \;
>> oder
>>       find . -type f -exec file '{}' ';'
>> waeren aequivalent.
>>
>> Genauso wie ; ein von der Shell interpretiertes Sonderzeichen ist,
>> sind es auch { und } - die oeffnen bzw. schliessen einen
>> Funktionsblock. $ foo() { echo bar; }
>>       $ foo
>>       bar
>>       $
>
> Es muss ja nicht gleich ein Funktionsblock sein, kann ja auch einfach
> die Grouping-Syntax sein.
>
> Aber ich finde einfach kein Beispiel für ein ungequotetes {}, welches
> ein ungewünschtes Verhalten produziert.
>
> Eine Funktionsdeklaration der Form
>
>  a() {}
>
> geht nicht. Auch eine Gruppierung der Form
>
>  {}
>
> ist in sh, dash oder bash nicht drin.
>
> Mit ner alten bash unter Solaris geht sowas wie
>
>  find . -exec echo {}_foo \;
>
> nicht. Aber da tut's auch ein gequotetes {} nicht.

Ok, dann gehe ich einfach mal davon aus, dass der Manpage
Autor ein Erbsenzähler war.

>
> Nun sind { und } laut POSIX "shell punctuation characters" und dass die
> gesondert behandelt werden müssen, ist verständlich. Aber ich würde
> gerne mal ein Beispiel für einen Fall sehen, in dem es mit einem
> ungequoteten {} zu einem unerwartetem Verhalten kommt.
>
Aber mich hätte auch interessiert, was man im Allgemeinen unter
 "punctuation characters" versteht. Mit [:punct:] hat das nix zu tun, oder doch?

Rudolf


-- 
http://rettedeinefreiheit.de/
Gegen Freiheitsberaubung in Deutschland


Reply to: