Hallo! On 01 Feb 2004 at 15:01 +0100, Thorsten Haude wrote: > * Elmar W. Tischhauser wrote (2004-02-01 14:43): > >On 01 Feb 2004 at 01:48 +0100, Thorsten Haude wrote: > >> * Andreas Metzler wrote (2004-02-01 00:32): > >> >Thorsten Haude <debian@thorstenhau.de> wrote: > >> >> * Elmar W. Tischhauser wrote (2004-01-31 12:56): > >> > > >> >>>'.[^.]*' ist präziser und damit weniger gefährlich. > >> > > >> >> Ich weiß nicht. Ich bin überrascht, das die Shell überhaupt Regexe > >> >> kann, wenn man die mit Fileglobs mischt, kann es sicher schnell > >> >> sportlich werden. > >> > > >> >Das ist keine regex sondern Globbing, eben "Punkt, ein nicht-Punkt, > >> >beliebig viele (0 oder mehr) beliebige Zeichen" und nicht "beliebiges > >> >Zeichen, nicht-Punkt beliebig oft (0 oder mehr)". > > > >> Nee, das ist schon eine Zeichenklasse wie man sie aus Regexen kennt, > >> also wird gemischt, also schlecht. > > > >Wie Andreas dir schon erklärt hat, wird da nichts "gemischt", sondern > >lediglich das ganz normale Globbing verwendet. Siehe dazu zum Beispiel > >auch 'man bash', Stichwort "Pattern Matching". > Siehe dazu auch Posix, wo das für Fileglobbing ausdrücklich > ausgenommen ist. Diese Art der Zeichenklassen ist regexisch. Wenn du damit meinst, dass glob(7) nur [!abc], aber nicht [^abc] spezifiziert, hast du Recht. Allerdings reden wir hier (der OP wollte ja Dateien löschen) von konkretem Pattern Matching in konkreten Shells; die bash akzeptiert explizit beide Formen: ,-----[ man bash, EXPANSION, Pattern Matching ] | If the first character following the [ is a ! or a ^ then any | character not enclosed is matched. `---------------------------------------------- Wenn ich mich richtig erinnere, fordert die (t)csh sogar die Verwendung von ^, für eine reine Bourne-Shell dürfte wiederum ! das Richtige sein. Welche Muster der OP also einsetzen kann, hängt von der von ihm verwendeten Shell ab. Und bei einer bash kann man [^.] durchaus verwenden, ohne sich undefiniertes Verhalten einzufangen. > Ich benutze solche Muster für rm nicht, ohne sie vorher mit einem ls > zu testen. Oder mit echo, genau. Ich bin da auch gerne vorsichtig. Vor allem, wenn man das Muster in ein Skript übernimmt und sich dann später blind darauf verlässt :-) Gruß, Elmar -- [ GnuPG: D8A88C0D / 2407 063C 1C92 90E9 4766 B170 5E95 0D7F D8A8 8C0D ] ······································································· Sicher ist, dass nichts sicher ist. Selbst das nicht. -- Ringelnatz
Attachment:
pgp5xgIO1zYhP.pgp
Description: PGP signature