ubuntuusers.de

stderr und stdout umleitungen

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

Keylam

Avatar von Keylam

Anmeldungsdatum:
29. November 2015

Beiträge: 9

habe schon zu diesem Thema das Forum, Google durchgesucht, keines der Seiten/Threads hat mir geholfen. Ich hab hier eine Aufgabe vor mir bei dem ich den Befehl

1
grep -C 0 pluto /etc/*

ausführen muss und den befehl so ändern muss das

(1)

"alle Fehlermeldungen (also alle Meldungen unter stderr) in einer Datei unter /tmp ausgegeben werden. Die Datei trägt Ihre unix-id als Dateinamen und ein .stderr als Endung. (Lautet die unix-id beispielsweise 1234 so soll die Datei /tmp/1234.stderr verwendet werden.)"

so wie ich es verstanden habe, will er das ich alle Meldungen bei dem "Keine Berechtigung" und "Datei oder Verzeichnis nicht gefunden" steht, in die eine Datei im /tmp abspeichern soll, wieso steht dann im Klammern "Alle Meldungen unter stderr"

1
grep -C 0 pluto /etc/* |* 2>> /tmp/1000.stderr

ich weiss aber nicht, wie ich es schaffe diese beiden Fehlermeldungen auch in die Datei reinbekomme.

(2)

"Zusätzlich sollen hingegen positive Treffer (also Ausgaben auf stdout) im Terminal angezeigt werden und parallel in einer Datei unter /tmp ausgegeben werden. Diese trägt ebenfalls Ihre unix-id als Dateinamen und ein .stdout als Endung"

Mit freundlichen Grüßen

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Willkommen hier im Forum!

Keylam schrieb:

habe schon zu diesem Thema das Forum, Google durchgesucht, keines der Seiten/Threads hat mir geholfen.

Es tut mir Leid, aber ich fürchte, dann hast Du Dich kaum bemüht.

so wie ich es verstanden habe, will er das ich alle Meldungen bei dem "Keine Berechtigung" und "Datei oder Verzeichnis nicht gefunden" steht, in die eine Datei im /tmp abspeichern soll, wieso steht dann im Klammern "Alle Meldungen unter stderr"

Das kann Dir am besten die Quelle der Aufgabenstellung beantworten.

1
grep -C 0 pluto /etc/* |* 2>> /tmp/1000.stderr

Was soll das tun? Und was denkst Du tut es?

ich weiss aber nicht, wie ich es schaffe diese beiden Fehlermeldungen auch in die Datei reinbekomme.

Wir sind hier allerdings keine Hausaufgabenhilfe, sondern es gibt Hilfe zur Selbsthilfe. In dem Sinne verweise ich Dich auf unser Wiki und halte mich ansonsten vornehm zurück. Die Aufgabe ist wirklich ziemlich leicht (ich nehme mal an, dass es vorher entsprechende Unterweisungen gab - ansonsten hat das Netz auch reichlich dazu).

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Keylam,

auch von mir ein herzliches Willkommen !

Das entscheidende Stichwort ist ja wohl "Dateiumleitung".
Kleiner Tip: Hast Du damit schon mal unsere Forensuche bemüht ? 😉 (Da habe ich es nämlich auch schon 25 Mal erklärt ...)

Einen lieben Gruß zum 1. Advent,

track

Keylam

(Themenstarter)
Avatar von Keylam

Anmeldungsdatum:
29. November 2015

Beiträge: 9

so nach bisschen recherchieren, hatte auch viel zu tun, schreibe ich erst jetzt

1
grep -C 0 pluto /etc/* 2> /tmp/...

aber die Datei hat nur die hälfte von Befehl den ich ohne 2> ausführe und auch die Einträge die eigentlich keine Fehlermeldungen sind enthalten.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Was meinst Du damit ? - denn bei mir funktioniert es eigentlich genau so, wie es soll:

track@track:~$ grep -C 0 pluto /etc/*  >  grep.1.txt
grep: /etc/at.deny: Keine Berechtigung
grep: /etc/blkid.tab: Datei oder Verzeichnis nicht gefunden
grep: /etc/chatscripts: Keine Berechtigung
grep: /etc/group-: Keine Berechtigung
grep: /etc/gshadow: Keine Berechtigung
grep: /etc/gshadow-: Keine Berechtigung
grep: /etc/motd: Datei oder Verzeichnis nicht gefunden
grep: /etc/mtab.fuselock: Keine Berechtigung
grep: /etc/passwd-: Keine Berechtigung
grep: /etc/shadow: Keine Berechtigung
track@track:~$ grep -C 0 pluto /etc/* 2>  grep.2.txt
/etc/bash_completion:        manual pluto ranbits rsasigkey \
track@track:~$ head grep.1.txt
/etc/bash_completion:        manual pluto ranbits rsasigkey \
track@track:~$ head grep.2.txt
grep: /etc/at.deny: Keine Berechtigung
grep: /etc/blkid.tab: Datei oder Verzeichnis nicht gefunden
grep: /etc/chatscripts: Keine Berechtigung
grep: /etc/group-: Keine Berechtigung
grep: /etc/gshadow: Keine Berechtigung
grep: /etc/gshadow-: Keine Berechtigung
grep: /etc/motd: Datei oder Verzeichnis nicht gefunden
grep: /etc/mtab.fuselock: Keine Berechtigung
grep: /etc/passwd-: Keine Berechtigung
grep: /etc/shadow: Keine Berechtigung 

Was erwartest Du, dass er bei Dir tun soll, und was tut er bei Dir tatsächlich ?

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Keylam schrieb:

aber die Datei hat nur die hälfte von Befehl den ich ohne 2> ausführe und auch die Einträge die eigentlich keine Fehlermeldungen sind enthalten.

Ich bin mir nicht sicher, was genau Du mit "Befehl" meinst. Meinst Du vielleicht "Ausgaben"? Und: Das kann eigentlich nicht sein - es sei denn, Du benutzt nicht den grep, den wir anderen benutzen, und Deiner verhält sich anders.

Keylam

(Themenstarter)
Avatar von Keylam

Anmeldungsdatum:
29. November 2015

Beiträge: 9

track schrieb:

Was erwartest Du, dass er bei Dir tun soll, und was tut er bei Dir tatsächlich ?

LG,

track

also ich führe den Befehl

1
grep -C 0 pluto /etc/* 2> /tmp/1000.stderr

aus und wenn ich in den ordner /tmp wechsel und

1
head grep -C 0 pluto /etc/* 2> /tmp/1000.stderr

ausführe, gibt mit die Konsole das hier aus

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Keylam@keylam:~$ grep -C 0 pluto /etc/* 2> /tmp/1000.stderr
keylam@keylam:~$ cd /tmp
keylam@keylam:/tmp$ head 1000.stderr
grep: /etc/acpi: Ist ein Verzeichnis
grep: /etc/alternatives: Ist ein Verzeichnis
grep: /etc/apm: Ist ein Verzeichnis
grep: /etc/apparmor: Ist ein Verzeichnis
grep: /etc/apparmor.d: Ist ein Verzeichnis
grep: /etc/apport: Ist ein Verzeichnis
grep: /etc/apt: Ist ein Verzeichnis
grep: /etc/aptdaemon: Ist ein Verzeichnis
grep: /etc/at-spi2: Ist ein Verzeichnis
grep: /etc/authbind: Ist ein Verzeichnis

ich möchte aber das die Konsole, das hier ausgibt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
track@track:~$ head grep.2.txt
grep: /etc/at.deny: Keine Berechtigung
grep: /etc/blkid.tab: Datei oder Verzeichnis nicht gefunden
grep: /etc/chatscripts: Keine Berechtigung
grep: /etc/group-: Keine Berechtigung
grep: /etc/gshadow: Keine Berechtigung
grep: /etc/gshadow-: Keine Berechtigung
grep: /etc/motd: Datei oder Verzeichnis nicht gefunden
grep: /etc/mtab.fuselock: Keine Berechtigung
grep: /etc/passwd-: Keine Berechtigung
grep: /etc/shadow: Keine Berechtigung 

also nur die Fehlermeldungen, bei dem Keine Berechtigung vorkommen oder Datei oder Verzeichnis nicht gefunden, diese müssen angezeigt werden.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Keylam schrieb:

1
head grep -C 0 pluto /etc/* 2> /tmp/1000.stderr

Was soll das Deiner Meinung nach tun? Außerdem ist es nicht das, was Du unten ausführst. Bitte achte ein wenig darauf, dass Du auch das Korrekte hier postest (siehe Richtig fragen), sonst machst Du es uns Helfern unnötig schwer.

ausführe, gibt mit die Konsole das hier aus

1
2
3
4
Keylam@keylam:~$ grep -C 0 pluto /etc/* 2> /tmp/1000.stderr
keylam@keylam:~$ cd /tmp
keylam@keylam:/tmp$ head 1000.stderr
...

also nur die Fehlermeldungen, bei dem Keine Berechtigung vorkommen oder Datei oder Verzeichnis nicht gefunden, diese müssen angezeigt werden.

Dann filtere doch den Inhalt der Datei mit den Fehlermeldungen.

Alternativ könntest Du natürlich das ursprüngliche Kommando so ausführen, dass Du grep nur auf Dateien loslässt, für die Du Leseberechtigung hatst.

Keylam

(Themenstarter)
Avatar von Keylam

Anmeldungsdatum:
29. November 2015

Beiträge: 9

rklm schrieb:

Keylam schrieb:

1
head grep -C 0 pluto /etc/* 2> /tmp/1000.stderr

Was soll das Deiner Meinung nach tun? Außerdem ist es nicht das, was Du unten ausführst. Bitte achte ein wenig darauf, dass Du auch das Korrekte hier postest (siehe Richtig fragen), sonst machst Du es uns Helfern unnötig schwer.

ausführe, gibt mit die Konsole das hier aus

1
2
3
4
Keylam@keylam:~$ grep -C 0 pluto /etc/* 2> /tmp/1000.stderr
keylam@keylam:~$ cd /tmp
keylam@keylam:/tmp$ head 1000.stderr
...

also nur die Fehlermeldungen, bei dem Keine Berechtigung vorkommen oder Datei oder Verzeichnis nicht gefunden, diese müssen angezeigt werden.

Dann filtere doch den Inhalt der Datei mit den Fehlermeldungen.

Alternativ könntest Du natürlich das ursprüngliche Kommando so ausführen, dass Du grep nur auf Dateien loslässt, für die Du Leseberechtigung hatst.

sorry, war ein Fehler meinerseits es sollte eigentlich

1
head 1000.stderr

heißen, welcher dann den Inhalt von 1000.stderr ausgibt.

naja, aber bei track funktioniert der Befehl auch,also er hat ja seine Liste gepostet und bei ihm ist es die richtige Ausgabe mit den Fehlermeldungen und ich glaube nicht das, dass herausfiltern als Lösung für die Aufgabe gedacht ist, außerdem hab ich mal mit dem Befehl experimentiert und wenn ich

1
cd Feierabend 2> Fehler.txt

ausführe, dann scheint es auch zu klappen.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Um genauer zu sehen, wie die Befehle tatsächlich ausgeführt werden, kann man vorher set -x einschalten.
In meinem Fall sehe ich dann, dass die ganzen Verzeichnisse bei mir zwar auch an grep übergeben, aber nicht ausgewertet werden.

Meine Frage wäre: hast Du vielleicht ein spezielles grep , dass das bei Dir nicht klappt ?
Was sagt grep --version bei Dir ?

track

Keylam

(Themenstarter)
Avatar von Keylam

Anmeldungsdatum:
29. November 2015

Beiträge: 9

track schrieb:

Um genauer zu sehen, wie die Befehle tatsächlich ausgeführt werden, kann man vorher set -x einschalten.
In meinem Fall sehe ich dann, dass die ganzen Verzeichnisse bei mir zwar auch an grep übergeben, aber nicht ausgewertet werden.

Meine Frage wäre: hast Du vielleicht ein spezielles grep , dass das bei Dir nicht klappt ?
Was sagt grep --version bei Dir ?

track

grep (GNU grep) 2.12
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

ist aber die Version auf dem Hochschulrechner mit dem ich mich über Putty verbinde, ich könnte also nichts ändern also update etc.

und plötzlich funktioniert Virtualbox nicht mehr sonst hätte ich darüber mal versucht ☹

ist der Befehl

1
grep -C 0 pluto /etc/* 2> /tmp/1000.stderr

jetzt richtig oder muss ich noch eine Änderung vornehmen?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Der grep- Befehl ist schon ok, schließlich hat er bei mir genau das ausgeworfen, was Du erwartet hast.
Und an der grep- Version ist auch erstmal nix Besonderes.

Der Punkt scheint die Umgebung zu sein, dass grep in Deinem Fall den Unterschied zwischen den Dateien und Verzeichnissen nicht erkennt.

Aber ob das an Putty liegt ? - komisch. (ich habe jetzt aber keine Putty- Verbindung zum Probieren) Das beste wäre wohl, wenn Du die Frage mal einem Computer-Assistenten an der Hochschule vorlegst. Womöglich kennt der das Problem schon ?

Gut - das geht heute Abend nicht mehr. Wenn Du auf die Schnelle eine "Lösung" brauchst, könntest Du ja tatsächlich die "falschen" Zeilen erstmal nachträglich wegfiltern, wie Robert oben schon vorgeschlagen hat.

LG,

track

p.s.: Telnet kann anscheinend sowohl SSH als auch Telnet ... welches von den beiden benutzt Du ? - dann könntest Du evt. mal einen anderen Client benutzen.

Keylam

(Themenstarter)
Avatar von Keylam

Anmeldungsdatum:
29. November 2015

Beiträge: 9

wahrscheinlich liegt es dann an der Umgebung, hatte heute die Möglichkeit an dem Rechner zu sitzen, aber egal wie ich oft den Befehl geändert habe, hat nichts gebracht müsste ich wohl einen Computer-Assistenten befragen.

Ich bedanke mich sehr für deine Hilfe und deinen Geduld und wünsch dir frohe Weihnachten ☺

MfG

Antworten |