Halloechen !! Ich habe folgendes Problem. Ich moechte einen Dateiinhalt (/etc/shadow) bis auf: name:hdasdHHfk kuerzen. Das heisst, !!! vor !!! dem zweiten Doppelpunkt soll bis zum Zeilenende jede Zeile geloescht werden. Grund ist eine .htaccess eingebunden Passwortdatei. Wenn jemand ein solches Script hat, wollte ich fragen, ob er dies mir zusenden kann, da ich mich mit awk und sed nicht auskenne. Ich moechte dieses Script dann automatisch per crontab jeden Tag starten. Wuerde mich freuen, wenn mir jemand helfen koennte. mfg ralf
Am Samstag, 6. März 2004 01:07 schrieb Ralf Thomas:
Halloechen !! Ich habe folgendes Problem. Ich moechte einen Dateiinhalt (/etc/shadow) bis auf: name:hdasdHHfk kuerzen. Das heisst, !!! vor !!! dem zweiten Doppelpunkt soll bis zum Zeilenende jede Zeile geloescht werden. Grund ist eine .htaccess eingebunden Passwortdatei. Wenn jemand ein solches Script hat, wollte ich fragen, ob er dies mir zusenden kann, da ich mich mit awk und sed nicht auskenne. Ich moechte dieses Script dann automatisch per crontab jeden Tag starten.
Nix awk oder sed - und erst recht nicht nen extra Skript. Solche schweren Geschütze musst Du nicht auffahren: cut -f1,2 -d: /etc/shadow >/pfad/zu/deiner/datei BTW: Dir ist schon bewusst, dass Du u. U. ein Loch in die Systemsicherheit reisst? /etc/shadow ist nicht umsonst nur für root lesbar und Feld 2 ist das Passwort. Du lieferst damit (wenn die Ausgabedatei nicht auch entspr. geschützt ist) jedem Passwort-Cracker Munition für nen netten Wörterbuchangriff. Jan P.S.: Deine !-Taste prellt.
Hallo, Am Sat, 06 Mar 2004, Jan Trippler schrieb: [..]
cut -f1,2 -d: ...
<mode type="ObPeeve"> Schon witzig. Ich wuerde das _NIE_ so schreiben ;) Denn die Felder, die man mit -f selektiert werden doch erst durch das Argument der Option -d definiert! Ich schreibe also grundsaetzlich erst '-d': cut -d : -f1,2 Vgl.: cut -d : -f1 /etc/passwd cut -f1 /etc/passwd -d : cut -d / -f1 /etc/passwd cut -f1 /etc/passwd -d / cut -d x -f1 /etc/passwd cut -f1 /etc/passwd -d x Und jetzt stell dir das mit ner 5 zeiligen Dateiliste statt /etc/passwd vor... Du siehst erstmal nur "cut -f1 dateien...." Besonders krank finde ich aber, wenn man sich auf GNUisms verlaesst und Optionen am Ende der Argumentliste angibt, speziell wenn diese lang sind. Da wuensche ich mir manchmal ein implizites '--' vor dem ersten non-option Argument, damit z.B. ein grep -E '(foo|bar|baz)' lange liste von Dateien -q nicht geht. </mode> -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Am Samstag, 6. März 2004 03:14 schrieb David Haller:
Am Sat, 06 Mar 2004, Jan Trippler schrieb: [..]
cut -f1,2 -d: ...
<mode type="ObPeeve"> Schon witzig.
Ich wuerde das _NIE_ so schreiben ;) Denn die Felder, die man mit -f selektiert werden doch erst durch das Argument der Option -d definiert! Ich schreibe also grundsaetzlich erst '-d':
cut -d : -f1,2
Es ist aber allgemeiner Usus, dass die Reihenfolge der Optionen egal ist - kein (vernünftiges) Programm fängt an zu arbeiten, ehe es nicht die Optionen (z. B. per getopt) ausgewertet hat. Klar ist natürlich, dass die Argumente direkt hinter den passenden Optionen stehen, aber ich habe ja auch nicht cut -f : -d 1,2 geschrieben (was definitiv falsch wäre und einen Fehler verursachen würde). Ich habs gerade probiert: nicht mal bei tar (wo ich es noch am ehesten vermutet hätte, weil da c|t|x den Modus des Kommandos festlegen) spielt es eine Rolle. Im Moment fällt mir nur cpio ein, der den Arbeitsmodus (i|o|p) als erste Option haben will - und das macht ja auch einen gewissen Sinn. Wenn es Dir so übersichtlicher ist, dann benutze cut so, wie Du es möchtest, aber eine Reihenfolge der Optionen als richtiger als eine andere festlegen zu wollen ist IMHO (bei der übergroßen Mehrheit der Programme) schlicht Unsinn. Im Beispiel cut könnte man auch so diskutieren, dass zuallererst mal stehen sollte, _was_ man überhaupt haben will (-f oder -c), weil z. B. bei -c die Option -d überhaupt nicht sinnvoll ist.
Vgl.: cut -d : -f1 /etc/passwd cut -f1 /etc/passwd -d : cut -d / -f1 /etc/passwd cut -f1 /etc/passwd -d / cut -d x -f1 /etc/passwd cut -f1 /etc/passwd -d x [...]
Diese Syntax habe ich ja auch nicht benutzt - das geht vielleicht mit GNU-Programmen gut, aber nicht allgemein mit Unix-Programmen.
Besonders krank finde ich aber, wenn man sich auf GNUisms verlaesst und Optionen am Ende der Argumentliste angibt, speziell wenn diese lang sind.
s. o. - das ist sicher krank (und vor allem nicht portabel), hat aber nichts mit der Form des cut zu tun, die ich anwende. Da wuensche ich mir manchmal ein implizites
'--' vor dem ersten non-option Argument, damit z.B. ein
grep -E '(foo|bar|baz)' lange liste von Dateien -q
nicht geht.
Spätestens wenn die erste Datei in der Liste ist, die mit - anfängt, hat man sowieso keine Chance mehr, Optionen hinten anzuhängen. Jan
participants (3)
-
David Haller
-
Jan.Trippler@t-online.de
-
Ralf Thomas