12.04

Änderungen am grep Befehl

Written by  on Januar 24, 2015
Ich bin kürzlich über ein Script gestolpert, dass sich nach der Umstellung von Ubuntu 12.04 auf Ubuntu 14.04 plötzlich ganz anders verhalten hat.
Sinngemäß sah der Abschnitt so aus:
echo test | grep -ir test
Was vielleicht auffällt, ist das der -r Parameter hier unnötig ist. Bisher wurde das einfach ignoriert. Aber seit einiger Zeit ist das anders, der -r  Parameter gilt jetzt auch so wie angegeben, wenn gar kein Pfad angegeben wurde. Es wird einfach rekursiv alles vom aktuellen Verzeichnis aus durchsucht.
Verhalten Alte Version:
# echo test | grep -ir test
test
Verhalten Neue Version:
> echo test | grep -ir test
.bashrc: test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
Was ist also passiert? Und vorallem wann?
Ein Blick in das Changelog zeigt, dass das schon länger geändert wurde, aber halt erst langsam in den Distributionen angekommen ist:
* Noteworthy changes in release 2.11 (2012-03-02) [stable]
...
** New features

 If no file operand is given, and a command-line -r or equivalent
 option is given, grep now searches the working directory. Formerly
 grep ignored the -r and searched standard input nonrecursively.
 An -r found in GREP_OPTIONS does not have this new effect.
...