OT:
tobo hat geschrieben: 07.07.2023 22:39:19
Der zusätzliche Punkt bringt zwar keinen um, trotzdem macht es durchaus Sinn, dass hier übliche System zu verwenden, sofern nichts anderes gefordert wird. Habe oder bediene ich z.B. ein POSIX-System, dann darf ich kein max/mindepth benutzen...
Im Falle von max/mindepth nutze ich bewusst ein Feature, das nur eine bestimmte Implementierung anbietet. Damit binde ich mich zwangslaeufig an diese Implementierung. Die Alternative waere nur, das Problem auf ganz anderem Weg zu loesen, so dass ich das Feature nicht brauche. In manchen Faellen gibt es einen gleichwertigen portableren Weg, dann finde ich es sinnvoll, die portablere Variante zu nutzen, weil man sich damit nichts vergibt. Gibt es keine gleichwertige portablere Variante, dann bindet man sich halt an die jeweilige Implementierung.
Nachteilig fuer das Oekosystem freie Software finde ich dabei ggf. den Aspekt, dass alternative Implementierungen benachteiligt werden. Je oefters beispielsweise die Datumsfunktionserweiterungen von gawk genutzt werden, desto mehr User ersetzen ihren mawk durch gawk ... bis irgendwann nur noch gawk genutzt wird. Das sorgt fuer eine Zentralisierung von Macht, Deutungshoheit und Fehlerrisiko, die IMO dem Oekosystem schadet.
Im Falle des Punktes ist es aber ein anderer Fall, denn hier gewinnt man kein Feature, sondern verliert fuer ein winziges Bisschen Bequemlichkeit die Kompatibilitaet. Das erscheint mir unnoetig.
Hierzu moechte ich eine kleine Geschichte erzaehlen:
`grep RE foo' sucht in der Datei foo. `grep RE' sucht im Standardinput. `grep -r RE bar' sucht rekursiv unterhalb vom Verzeichnis bar. Aber was tut `grep -r RE'?
`grep -r' ist nicht Teil von POSIX, darum ist es nicht standardisiert, folglich tun verschiedene Implementierungen moeglicherweise Unterschiedliches. Und so ist es auch. Ein modernes GNU grep sucht in dem Fall rekursiv im aktuellen Verzeichnis. Das ist ein durchaus sinnvoller Fall, aber er fuehrt zu Problemen, die aus meiner Sicht vermeidbar waeren und besser haetten vermieden werden sollen.
Frueher hat GNU grep ohne Dateiargument naemlich im Standardinput gesucht, egal ob `-r' angegeben war oder nicht. Das ist auch das was BSD grep tut. Inhaltlich macht es keinen Sinn `-r' anzugeben und in stdin zu suchen, darum wohl hat GNU grep irgendwann diesen Fall geaendert. Die Folge: Vor gut einem Jahr sitze ich mal an einem alten Debian und suche rekursiv in einem riesigen Verzeichnis die Nadel im Heuhaufen ... ich warte und warte und das rekursive grep wird nicht fertig ... konnte es auch nicht, da es nie im Verzeichnis gesucht hat, sondern auf Eingabe von stdin gewartet hat.
Im Vergleich zu einem einzigen solchen Fehler im Leben, finde ich das explizite Eingeben von einem Punkt, wenn man das aktuelle Verzeichnis meint, fuer vernachlaessigbar billig -- Zeit, Frust und Denkleistung sparend.
Die Loesung bei FreeBSD finde ich am besten: Dort gibt grep eine Warnung aus, wenn man `-r' ohne Dateiargument verwendet:
Wuerde man `find' heute neu entwerfen, dann haette es eine gewisse Logik, es ohne Dateiargument aufrufbar zu machen. Andererseits wiederum muss man auch sehen, dass `find' ein spezielles, irregulaeres Aufrufdesign hat, das es von anderen Tools unterscheidet. Kann man das Konzept des Aufrufdesigns dann immer noch mit einem Satz erklaeren oder verkompliziert man es, indem man eine Sonderregel hinzufuegt? Um die Tools zu beherrschen, muessen wir ja nicht nur Switches auswendig lernen, sondern auch das Aufrufkonzept jedes Tools. Bei den meisten ist es einheitlich, aber jeden Sonderfall (dd, tr, find, ...) muessen wir uns separat merken. Eine Aenderung, die fuer Gelegenheitsuser etwas bequemer zu sein scheint, wird so ein bisschen zusaetzliche Komplexitaet fuer das Gesamtsystem. Das widerspricht Unix insofern, dass dort eine moeglichst niedrige Gesamtkomplexitaet und ein moeglichst einfaches Verstaendnis aller Dinge ein zentrales Ziel waren.
Wie man sieht, ist so ein Punkt fuer mich keine Kleinigkeit, sondern es oeffnet sich eine ganze Welt dahinter.
@tobo: Ich weiss, dass wir bei diesen Dingen teilweise unterschiedliche Ansichten und einen unterschiedlichen Fokus haben. Das ist in Ordnung so. Dieser Post ist auch nicht an dich gerichtet geschrieben, sondern an die interessierten sonstigen Mitleser, als Anstoss fuer ein paar eigene Gedanken.