Ist es in Ordnung, dass „Find“ doppelte Schrägstriche anzeigt?

Ist es in Ordnung, dass „Find“ doppelte Schrägstriche anzeigt?

Ist es ein Fehler, wenn ich Folgendes find ./path/here/bekomme:

./path/here//foo
./path/here//bar

Ich weiß, finddass ich den Pfad ohne den abschließenden Schrägstrich angeben soll, aber es kann doch sicher den Pfad erkennen, den die Tab-Vervollständigung hinterlässt, und seine Ausgabe entsprechend anpassen. Gibt es einen Grund, warum es das nicht tut?

Antwort1

Technisch gesehen ist es ein Fehler, dennPOSIX-ZuständeDas

Alle Pfadnamen für andere Dateien in der Hierarchie bestehen aus der Verkettung des aktuellen Pfadoperanden, einem <Schrägstrich>wenn der aktuelle Pfadoperand nicht mit einem endetund der Dateiname relativ zum Pfadoperanden

Aberder doppelte Schrägstrich macht keinen Unterschied, daher sind ./path/here//foound ./path/here/fooimmer dieselbe Datei. (Bei einigen Unix-Varianten macht ein doppelter Schrägstrich einen Unterschied, wenn er am Anfang des Pfads steht. Wenn das bei Ihnen der Fall ist, findwird dieser Fall hoffentlich speziell behandelt.)

Antwort2

Zur Info: Ein Grund, warum man find some/dir/anstelle von verwenden könnte, find some/dirist, wenn some/dires sich eigentlich um einen symbolischen Link zu einem Verzeichnis handelt und Sie findDateien in dem Verzeichnis suchen möchten, auf das dieser symbolische Link verweist.

Aber in diesem Fall gibt es eine bessere Alternative:

find -H some/dir

-Hist eine Option, die von einigen POSIX-Dienstprogrammen ( ls, cp, chmod...) unterstützt wird und die das Dienstprogramm anweist, symbolischen Links zu folgen, die als Argumente übergeben werden (und nur diesen, nicht zu verwechseln mit -L/ -follow, das dazu führt, finddassjedenSymlink, die als Argumente übergebenen, aber auch die während der Verzeichnisdurchquerung gefundenen).

Das ist immer noch nicht funktional gleichwertig mit find some/dir/dem Fall, in dem some/dires sich eigentlich nicht um ein Verzeichnis handelt. In diesem Fall find some/dir/würde es mit einemKein VerzeichnisFehler, während find -H some/dirdiese Nicht-Verzeichnisdatei aufgelistet wird.

verwandte Informationen