![](https://seccdn.libravatar.org/avatar/735ea797d876adb026ae955e8adbf597.jpg?s=120&d=mm&r=g)
On Don, 12 Sep 2002 at 21:22 (+0200), Johannes Studt wrote: [...]
pc:/scripts # ps -ef|grep [t]est root 27385 23748 0 21:16 pts/0 00:00:00 grep test pc:/scripts # ps -ef|grep [t]est. pc:/scripts #
Warum bringt das Konstrukt "ps -ef|grep [x]yz" nur dann den gewünschten Erfolg, wenn im gegrepten String ein Punkt "." enthalten ist? Mit meinem Grep nach prog.jar funktioniert das, aber wenn ich auf selbige Methode ein normales Programm testen will, falle ich auf die Nase, weil grep sich selbst findet. *ratlos*
Ich vermute mal, dass in Deinem Verzeichnis /scripts eine Datei namens test liegt. In diesem Fall wird der reguläre Ausdruck [t]est durch die Shell zu test expandiert. Der Sinn des Konstrukts [t]est liegt ja darin, dass grep sich nicht selbst findet - wenn meine Vermutung stimmt, kriegt grep aber gar nicht mehr [t]est zu sehen, sondern eben test, und da verjagst Du Dich sozusagen selber ;-) Der Punkt ist ein Sonderzeichen für grep und bedeutet *ein beliebiges Zeichen*. Die Konfusion entsteht hier, weil die [] für die Shell und grep die gleiche Bedeutung haben. Auf die Schnelle hilft: ps -ef | grep "[t]est" Dann expandiert die Shell nicht mehr den Dateinamen. man 7 regex Jan P.S.: Ich würde es mir abgewöhnen, Dateien *test* zu nennen. Das sorgt nur für Verwirrung, weil test ein Shell-Builtin ist.