Hallo,
Gruß
noisefloor
Ehemaliger
![]() Anmeldungsdatum: Beiträge: 28316 |
|||||||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 6018 |
Habe einige Syntaxfehler korrigiert. Vielleicht sollte man das Argument für -name in allen Beispielen in Anführungszeichen bringen. Es schadet nämlich nicht, wenn sie in Verbindung mit Platzhaltern fehlen aber schon. |
||||||
Ehemaliger
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 28316 |
|||||||
![]() Anmeldungsdatum: Beiträge: 141 |
Ich hab die Ausgabeumleitung in eine Datei von "-printf Datei" in "> Datei" geändert, da mit der alten Variante je Treffer Datei auf der Standardausgabe ausgegeben wurde und nicht wie gewollt die Treffer in die Datei Datei geschrieben wurden. Gruß Thomas |
||||||
Anmeldungsdatum: Beiträge: Zähle... |
Aber -fprint Datei Korrigiert. |
||||||
Ehemaliger
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 28316 |
Hallo, gut Danke. ☺ Die Version von arima teppei ist "richtiger", weil das Gruß, noisefloor |
||||||
![]() Anmeldungsdatum: Beiträge: 17432 |
(Ich hoffe ich interpretiere das richtig, daß man bei Wikiartikeln auch alte Threads aus der Versenkung holt - sie sind ja dauerhaft verlinkt.) 2 Ärgernisse: Das kleine vom Ende des Artikels zuerst: find /home/user -type f -name "*.txt" -exec grep Ubuntu "{}" \;
Das stimmt nicht. Find ruft grep auch in Dateinamen mit Blank ohne Anführungsstriche korrekt auf - find weiß was der Dateiname ist, und ruft die Programme selbst korrekt auf. Man möge ein Gegenbeispiel präsentieren wenn man kann. Bis dahin habe ich den Artikel korrigiert: find /home/user -type f -name "*.txt" -exec grep Ubuntu {} \; So mein neuer Text darunter:
Schlimmer ist der Beginn des Artikels:
Das widerspricht der Hilfe, dem empirischen Befund, leitet in die Irre, und teils ins Verderben. Die manpage sagt: SYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
Eckige Klammern sagen, daß diese Teile optional sind - also außer dem Wort find alles. Eine Unterscheidung Suchkriterium/Aktion gibt es in der Art nicht, und v.a. keine vorgeschriebene Reihenfolge, und wie man hier http://forum.ubuntuusers.de/post/2395741/ sieht können die Folgen verheerend sein. Ich weiß auch nicht, wieso man im Wiki sich einer eigenen Syntax mit <spitzen Klammern> befleißigt - will man die User oder die Wikischreiber überlasten - wieso verwendet man nicht die man-Schreibweise mit eckigen Klammern? Dann hätten beide Seiten die Möglichkeit diese Syntax zu lernen, und zu lernen, daß es etwas bedeutet, und verläßlich ist, und nicht so nach Gefühl - hier machen wir mal Klammern hin, ist vielleicht optional. Meine Korrektur sieht so aus:
|
||||||
Ehemaliger
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 28316 |
Hallo, kannst du beides gerne korrigeren. ☺
Die Aussage stimmt so in der Form nicht. Dazu gab es vor 2 oder 3 Jahren (?) schon mal eine Diskussion, u.a. mit dir (?). Jedenfalls gibt eine keine verbindliche Regelung (ja, das gibt es auch im Wiki von ubuntuusers!), wie sowas dargestellt wird. Irgendwie sollte man optionale Parameter kennzeichnen - nur leider hat in der Shell ja fast alles ( <> [] {} ) eine Bedeutung... Gängig und IMHO auch sinnvoll ist seit eingier Zeit, alles GROSS zu schreiben, also find SUCHPFAD -OPTIONEN Das ist "relativ" eindeutig. Kannst du das auch hier übernehmen? ☺ Gruß, noisefloor |
||||||
![]() Anmeldungsdatum: Beiträge: 17432 |
In der Shell haben die Zeichen eine Bedeutung, ja. Ich meine damals hieß es, es gäbe ein Buch, welches < und > verwendet. Es könnte auch vom Kontext abhängen, was gut und was weniger gut ist. In find SUCHPFAD -OPTIONEN würde ich SUCHPFAD und OPTIONEN erstmal als etwas auffassen, was mit eigenen Werten gefüllt werden muß, während find so stehen bleiben muß. find SUCHPFAD -delete -delete dagegen ist ein Schlüsselwort, welches genau so geschrieben werden muß. Ich bin aber zuwenig mit dem Wiki beschäftigt um einen Überblick zu haben, und will nicht, nur weil hier und da die Schreibweise mit eckigen Klammern üblich ist, diese durchsetzen mit meinem kl. Horizont. Ärgerlicher ist ja, dass da eine Aussage stand, die nicht stimmte. Dann regt man sich gerne über andere Dinge auf, die einem sonst so ins Auge fallen, und über die man sich überhaupt gerne aufregt. "Schlag Deinen Bruder nicht, und räum mal das Zimmer auf, und zum Friseur könntest Du auch mal wieder" - so in der Art. |
||||||
Ehemaliger
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 28316 |
Hallo,
Sehe ich auch so. Kannst du IMHO so machen. Gruß, noisefloor |
||||||
![]() Anmeldungsdatum: Beiträge: 1925 |
Ich würde gerne diesen Artikel generalüberholen.
Meine Idee ist etwas aufwendiger um es im orig. Artikel zu ändern, bitte in die Baustelle RapaNui P.S. Es ist zwar fast 1 Jahr her und nicht falsch, dennoch möchte ich gerne Antworten.
Das stimmt in soweit, dass
das stimmt so nicht. Wird Beispiele: find . -maxdepth 1 -type f -name ".bashrc" -exec grep "^#" {} \; mit Ergebnis: # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). # ~/.bash_logout: executed by bash(1) when login shell exits. .......... und jetzt den Unsinn: find . -maxdepth 1 -type f -name ".bashrc" -exec grep "^#" foo{1,2} \; mit Ergebnis: grep: foo1: Datei oder Verzeichnis nicht gefunden grep: foo2: Datei oder Verzeichnis nicht gefunden Also könnte man schon sagen: Der Platzhalter für die ermittelten Dateien/Verzeichnisse {} sollte vor der Shell versteckt werden, z.B. so: '{}'. Saludos |
||||||
![]() Anmeldungsdatum: Beiträge: 17432 |
Wieso schneidest Du auch beim Zitieren ab, was ursprünglich dort stand:
Nur die Zeichenfolge
hat eine bestimmte Bedeutung für find, die man in der manpage nachschlagen kann. Von
ist da nirgends die Rede. Wenn Du also {1,2} maskieren willst bist Du herzlich dazu eingeladen - es hat halt nichts mit find zu tun.
Du müßtest entweder zeigen, daß es einen Unterschied macht, ob ich das {} maskiere oder nicht, oder dass es einen Rechner gibt, auf dem man die Zeit die man beim maskieren verliert wieder hereinholt, weil die Shell da irgendwas nicht mehr zu interpretieren versucht. Oder worauf möchtest Du hinaus? |
||||||
![]() Anmeldungsdatum: Beiträge: 1925 |
Hola, user unknown schrieb:
Zuerst entschuldige ich mich dafür, dass ich falsch abgeschnitten habe. Das find auch ohne die Maskierung von {} korrekt arbeitet hab ich ja bestätigt. Auch das mein 2. Beispiel Unsinn ist habe ich mMn deutlich gemacht. Hintergrund ist, in den Manpag zu find wird eben auch der Hinweis gegeben: The string `{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a `\') or quoted to protect them from expansion by the shell. und selbst in der dt. Manpage steht die Klammern und das Semikolon müssen in der Kommandozeile für find quotiert werden, damit sie nicht von der Shell bearbeitet werden.
Da ich mich an einer Überarbeitung des Artikels versuche habe ich dies eben auch aufgenommen, allerdings ohne den Mein Aufhänger war mehr die Aussage:
Der 2. Teilsatz trifft voll zu, es klappt nicht. Die Aussage zum Shellcode finde ich zweideutig, Du hast Recht und die Manpageauthoren haben auch Recht. Der Shell ist es egal ob die Anweisung für das Programm find gedacht ist, wenn in ihr Kommandos ausgeführt werden und sie die Anweisungen kennt (hier: brace expansion), dann versucht sie auch eine Interpretation. Aber lassen wir das, es ist eigentlich (hier in diesem Fall) nur Haarspalterei.
Eigentlich auf das: Soll ich den Hinweis im Artikel aufnehmen oder nicht, darum geht es mir, z.Zt. sieht das in meiner Offline-Version so aus: Hinweis:Der Platzhalter "{}" sollte und das Semikolon ";" muss quotiert/maskiert werden, damit die Shell[4] diese Anweisungen an find übergibt und nicht selber interpretiert, z.B. so: '{}' \; Dabei ist zu beachten, dass zwischen dem {} und dem ; ein Leerzeichen gesetzt wird. Details und Einschränkungen zu allen vorhandenen Optionen findet man in der Manpage[2] sowie den Infoseiten zu find. Da der Artikel noch nicht in der Baustelle ist kannst Du ihn ja noch nicht kritisch begutachten. Das Thema Wenn der Artikel dann mal in der Baustelle ist, würde ich mich freuen, wenn Du ihn unter die Lupe nehmen würdest - ich hoffe ich hab da nicht zu viel Mist gebaut. Saludos, RapaNui P.S. Bitte find in die Baustelle verschieben, Danke. |
||||||
![]() Anmeldungsdatum: Beiträge: 17432 |
Ja, wieso bringst Du denn Beispiele die Du selbst unsinnig findest?
Das steht da, aber was bedeutet es? Dass die Shell die {} frisst bevor find sie verarbeitet, oder wenn find die Ergebnisse mit -exec ... {} verarbeitet? Vielleicht
? Vielleicht gibt es Konflikte mit einer anderen Shell? Mit der bash, vorher jedenfalls nicht. Und die dt. Übersetzung ist bei allem was ich von Englisch weiß falsch, denn 'might need' heißt m.W. 'könnte ... benötigen' und nicht 'müssen'.
Welche Shell hast Du denn geprüft?
Nein, das ist 'den Widersprüchen auf den Grund gehen' also ein kritisches Verfahren. Meist hat die manpage ja Recht, aber das muss nicht immer so sein.
'might need to be' heißt nicht 'sollte', sondern 'es könnte nötig sein', soweit mein Englisch reicht.
Wen könnten die noch mehr verwirren? Könnten noch verwirrter sein? Verwirrter werden? Es könnten mehr Verwirrte werden? Ich kann gerade nicht folgen.
Es grenzt was ab? Jetzt wird es albern! Was immer Du damit meinst; es gibt keinen Grund irgendwas abzugrenzen, selbst wenn das der Fall wäre, was ich bestreite. Die Maskierung fügt ein zusätzliches Gedöhns hinzu, von dem man wissen möchte, wozu es gut sein soll, und bisher wurde nicht gezeigt, wozu es gut sein könnte - also läßt man es weg. Es sei denn, man kann es doch zeigen. Ansonsten ist es ein Staubfänger, eine Christopherusplakette am Amaturenbrett, ein Glücksbringer-Voodoo; funktionslos, aber soll helfen.
Die Lupe geht bei mir irgendwie automatisch an, wenn ich ins Wiki schaue - ich weiß auch nicht wieso. ☺ |
||||||
Ehemaliger
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 28316 |