Asgar13 Geschrieben 28. März 2011 Geschrieben 28. März 2011 Hallo, ich habe ein Shellscript, welches die ganzen Ausgaben in eine logdatei schreiben soll. LOGDATEI=test.log ls -la >> $LOGDATEI java -help >> $LOGDATEI tftp 192.168.1.1 >> $LOGDATEI Beim dritten Fall schreibt er mir das Ganze in die Shell, statt in die LOGDATEI. (Egal, ob es fehlschlägt oder nicht). Ich möchte aber alles in der Log-Datei haben. Wo ist der Fehler/ Was mache ich falsch?
tennessee Geschrieben 28. März 2011 Geschrieben 28. März 2011 mich würde mal interessieren wozu Du ungefilterten Output von stdout für diese Befehle in eine Logdatei schreiben willst? Versuch mal das: tftp 192.168.1.1 >> $LOGDATEI 2>&1 &
Asgar13 Geschrieben 28. März 2011 Autor Geschrieben 28. März 2011 Danke, funktioniert. Ich finde so sieht es eleganter aus, wenn bei einem erfolgreichen durchlaufen nur da steht Punkt 1 funktioniert, Punkt 2 funktioniert ... Nach dem Fehler kann man ja in der Logdatei schauen, außerdem bleibt eine .log-Datei erhalten und man kann nach einem Neustart den Fehler im Internet suchen.
lilith2k3 Geschrieben 28. März 2011 Geschrieben 28. März 2011 Naja, das wäre die Antwort auf die Frage, warum überhaupt stdout abgegriffen wird. Und warum nun "ungefiltert"?
Asgar13 Geschrieben 30. März 2011 Autor Geschrieben 30. März 2011 Ich will das noch filtern, bloß wie, weiß ich noch nicht, benutze erst einmal google.
Asgar13 Geschrieben 31. März 2011 Autor Geschrieben 31. März 2011 Habe beim Filtern das Problem, dass diese Variante nicht funktioniert: grep -v -C 5 text kennt jemand dafür einen funktionierenden Befehl?
schepp Geschrieben 31. März 2011 Geschrieben 31. März 2011 was funktioniert daran nicht? Bei mir tut es genau das, was es soll.
Asgar13 Geschrieben 1. April 2011 Autor Geschrieben 1. April 2011 Bei mir macht der beim Zusammenspiel gar nicht. Mache ich z.B. ls -la | grep -v . Dann zeigt er mir alles, außer das Punktverzeichnis an ->ok Mache ich z.B.ls -la | grep -C 2 . Dann zeigt er mir den Bereich2 über und unter der Datei . ->ok Bei beiden ls -la | grep -v -C 2 . Zeigt er mit alle Verzeichnisse an -> fail
schepp Geschrieben 4. April 2011 Geschrieben 4. April 2011 Wenn du den Punkt so schreibst steht er für das aktuelle Verzeichnis. Wenn du ihn als Anfang des Dateinamens verwenden willst musst du ihn escapen. Beispiel unter Ubuntu: la -a | grep -v -C 2 '^\.'
Asgar13 Geschrieben 4. April 2011 Autor Geschrieben 4. April 2011 Dateienverzeichnis: insgesamt 27912 drwxr-sr-x 12 a nogroup 4096 31. Mär 13:46 . drwxr-sr-x 78 a nogroup 4096 4. Apr 08:51 .. drwxr-xr-x 4 a nogroup 4096 3. Okt 2009 boot -rw-r--r-- 1 a nogroup 118225 9. Feb 15:22 cao_xtc_functions.php Den Punkt habe mal als Beispiel genommen, mit den anderen Dateien z.B. boot funktioniert der Befehl auch nicht.
schepp Geschrieben 4. April 2011 Geschrieben 4. April 2011 Welches Ergebnis erwartest du denn wenn du in diesem Verzeichnis "ls -la | grep -v -C 2 boot" ausführst? Ich erwarte, dass du das ganze Verzeichnis gelistet bekommst., weil boot ja durch das -C 2 vom .. gezeigt wird.
Asgar13 Geschrieben 4. April 2011 Autor Geschrieben 4. April 2011 "Ich erwarte, dass du das ganze Verzeichnis gelistet bekommst." Damit hast du recht. Siehe post vom 1.4.2011 Ich hatte ehr erwartet, dass er den Bereich von -C 2 nimmt und ihn aus der Liste entfernt. Funktioniert das mit grep? Wenn ja, bitte die variante posten, wenn nein, einfach 'nein' posten. (Habe das jetzt über sed gelöst)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden