Linux-Test

Streams (Ströme), Pipes und Redirections (Umleitungen)



In dieser Fragengruppe kann man testen, wie sicher man im Umgang mit Streams (Strömen), Pipes und Redirections (Umleitungen) ist. Insbesondere geht es um das Umlenken von Standard-Input, Standard-Output und Standard-Error, Pipen der Ausgaben eines Befehls in einen nachfolgenden Befehl, das Verwenden der Ausgabe eines Befehls als Argument für einen anderen und das Umlenken der Ausgabe sowohl in eine Datei als auch an die Standard-Ausgabe.


  1. Bei welcher Anweisung wird die Standard-Ausgabe (stdout) des Kommandos cmd in die Datei "datei" geschrieben bzw. falls "datei" bereits existiert an den Inhalt angehängt?
    cmd | datei
    cmd; datei
    cmd >> datei
    cmd > datei

  2. Wie wird die Standardausgabe in der Bash-Shell angesprochen?


  3. Wie lautet die Standarddatei der Bash-Shell für den Standardfehler?


  4. Welches der folgenden Kommandos sendet die Ausgabe von Kommando1 zu Kommando2?
    Kommando1 | Kommando2
    Kommando1 && Kommando2
    Kommando1 || Kommando2
    Kommando1 > Kommando2
    Kommando1 >> Kommando2

  5. Wie kann man Fehlerkanal und Ausgabe vertauschen?
    kommando 3>&2 2>&1 1>&3
    Kommando 1>&3 2>&1 3>&2
    Kommando 1>&2 2>&1
    Kommando 2>&1 1>&2
    Fehlerkanal und Ausgabe kann man nicht vertauschen, da sie immer getrennt bleiben müssen.

  6. Welche der folgenden Anweisungsfolgen schreiben sowohl das Ergebnis von "pwd" als auch das Ergebnis von "ls -l" in die Datei verzeichnis.txt?
    pwd ; ls -l > verzeichnis.txt
    (pwd ; ls -l) > verzeichnis.txt
    { pwd ; ls -l; } > verzeichnis.txt
    pwd > verzeichis.txt; ls -l >> verzeichnis.txt

  7. Welche der folgenden Zeichenfolgen dient dazu stdout und stderr in eine Datei umzulenken?
    &&
    <&
    |&
    >&

  8. Aufgabe für Spezialisten:
    Welche der folgenden Kommandozeilen schreibt die Ergebnisse eines Kommandos "Kommando" in eine Datei "Ergebnisse" und übergibt die Fehlerausgaben an einen Prozess mit dem Namen Nachbearbeitung, der dann seine Ausgabe in die Datei "Fehler.log" schreibt.
    Kommando 2> Ergebnisse 3>&1 1>&2 2>&3 3>&- | Nachbearbeitung > Fehler.log
    Kommando 2> Ergebnisse 3>&1 1>&2 2>&3 | Nachbearbeitung > Fehler.log
    Kommando 2> Ergebnisse 3>&1 1>&2 2>&3 | Nachbearbeitung 2> Fehler.log
    Kommando 3>&1 1>&2 2> Ergebnisse 2>&3 | Nachbearbeitung > Fehler.log
    Kommando 3>&1 1>&2 2>&3 2> Ergebnisse | Nachbearbeitung 2> Fehler.log

  9. Welches der folgenden Kommandos sendet die Ausgabe von Kommando in die Datei "Daten-File", wobei eine bereits bestehende Datei gelöscht wird?
    Kommando | Daten-File
    Kommando && Daten-File
    Kommando || Daten-File
    Kommando > Daten-File
    Kommando >> Daten-File

  10. Welches der folgenden set-Optionen schützt eine bestehende Datei davor durch Datei-Umlenkung überschrieben zu werden?
    set noclobber
    set -o noclobber
    set +o noclobber
    set +o nowrite
    set nowrite

  11. In welchen der folgenden Kommandozeilen wird die Standardfehlerausgabe (stderr) und die Standardausgabe (stdout) vertauscht?
    cat a b c d 3>&1 1>&2 2>&3 3>&- | less
    (ls; ls foobar) >fehler.txt 3>&2 2>&1 1>&3
    (pwd; ls foobar) >fehler.txt 1>&3 2>&1 3>&2 3>&-
    (pwd; ls foobar) >fehler.txt 1>&3 3>&2 2>&1 3>&-

  12. Wie kann man sowohl die Fehlerausgabe als auch die Standardausgabe in die Datei "Alle_Ausgaben" lenken?
    (ls foobar; ls) 2>&1 >Alle_Ausgaben
    (ls foobar; ls) >Alle_Ausgaben 2>&1
    (ls foobar; ls) >>Alle_Ausgaben 2>&1
    (ls foobar; ls) >Alle_Ausgaben 1>&2

  13. Wenn die Shell-interne Option "noclobber" gesetzt ist, dann gilt folgendes:
    Versucht man mittels cp eine Datei auf eine bereits bestehende zu kopieren, erfolgt eine Warnung.
    Versucht man mittels mv eine Datei auf eine bereits bestehende zu kopieren, erfolgt eine Warnung.
    Bei der Umlenkung der Standardausgabe mittels ">" in eine Datei, gibt es eine Fehlermeldung, wenn diese Datei bereits existiert.

  14. Welches der folgenden Kommandos erzeugt eine benamte Pipe mit dem Namen npipe?
    mkpipe npipe
    mkfifo npipe
    kommando |npipe
    lnpipe npipe

  15. Wie kann man die noclobber-Option der Shell abschalten?
    Man kann sie nur von Befehl zu Befehl abschalten, da sie immer standardmäßig eingeschaltet ist.
    set -o noclobber
    set +o noclobber
    set +o nowrite
    clobber --off

  16. Welcher der folgenden Kommandos überschreibt auf jeden Fall ohne Nachzufragen die Datei "Chancenlos"?
    echo "Ich ueberschreibe dich." > Chancenlos
    echo "Ich ueberschreibe dich." >> Chancenlos
    echo "Ich ueberschreibe dich." 2> Chancenlos
    echo "Ich ueberschreibe dich." >| Chancenlos
    echo "Ich ueberschreibe dich." |> Chancenlos

  17. Wie kann man die Fehlerausgaben eines Skriptes "beispiel.sh" an eine Datei "logdatei.txt" anhängen?
    ./beispiel.sh 2>> logdatei.txt
    ./beispiel.sh 1>> logdatei.txt
    ./beispiel.sh 2> logdatei.txt
    ./beispiel.sh 1> logdatei.txt

  18. Welche der folgenden Kommandozeilen schreiben die Ergebnisse des "ls -l"-Kommandos in die Dateien Datei1 und Datei2
    ls -l | tee Datei1 Datei2
    ls -l | tee Datei1 > Datei2
    ls -l | tee Datei1 Datei2
    ls -l | tee Datei1 | tee Datei2
    ls -l > Datei1 | tee Datei2

  19. Mit welchem Kommando wird der Standardeingabekanal (stdin) geschlossen?
    1<&-
    0<&-
    close(stdin)
    close("stdin")

  20. Welche Aussagen bzgl. des folgenden Kommandos >> Ausgabe Programm < Eingabe sind korrekt?
    Die Umlenkung ">> Ausgabe" darf nicht am Anfang stehen, sondern muss am Ende oder vor "< Eingabe" kommen.
    Die Eingabe für das Kommando "Programm" kommt von der Datei "Eingabe"
    Die Ausgabe des Kommandos "Programm" wird in die Datei "Ausgabe" geschrieben
    Die Position von ">> Ausgabe" ist falsch, deshalb wird ein Schreiben in die Datei "Ausgabe" nicht erfolgen. Stattdessen wird die Ausgabe an stdout weitergeleitet.

  21. Für welche der folgenden Kommandos gilt in der Bash-Shell: Falls eine Datei "filename" existiert, wird deren Inhalt gelöscht. Anschließend existiert eine Datei mit leerem Inhalt. Wenn keine Datei "filename" existiert, wird eine mit leerem Inhalt erzeugt.
    : > filename
    rm -f filename; touch filename
    > filename
    cat filename > /dev/null
    mv filename > /dev/null

  22. Was passiert in folgendem Kommando? foobar >foo 2>&1
    Die Standardausgabe von foobar wird in die Datei "foo" geschrieben, während die Standardfehlerausgabe nach "&1" geschrieben wird.
    Sowohl die Standardausgabe als auch die Standardfehlerausgabe werden in die Datei "foo" geschrieben.
    Das Kommando ergibt keinen Sinn, da der Fehlerkanal nicht mehr wegen der vorigen Umlenkung in die Datei "foo" in die Standardausgabe geschrieben kann.

  23. Man hat die Aufgabe mittels "cat shell.txt tutorial.txt" die beiden Dateien "shell.txt" "tutorial.txt" zu konkatenieren. Das Ergebis möchte man in die Datei shell_tutorial.txt schreiben. Welche der folgenden Kommandos realieren die Aufgabe?
    cat shell.txt tutorial.txt > shell_tutorial.txt
    cat shell.txt >shell_tutorial.txt tutorial.txt
    cat >shell_tutorial.txt shell.txt tutorial.txt
    >shell_tutorial.txt cat shell.txt tutorial.txt

  24. Ein Shell-Skript soll keine Fehlerausgaben liefern. Mit welcher Anweisung am Anfang des Skriptes kann man dies erreichen?
    exec 2>/dev/null
    2>&3
    exec 2>&1

Übersicht:

© James Wilson - Fotolia.com

© Bild: James Wilson

Bei Fragen mit Vierecken zum Ankreuzen können eine oder mehrere Alternativen korrekt sein.

Bei den Fragen mit Kreisen zum Ankreuzen ist immer nur eine Alternative möglich!


Wenn Sie schnell und effizient Linux oder eine Programmiersprache wie C/C++, Python, PHP oder Perl erlernen wollen, finden Sie sicherlich einen passenden Kurs bei Bodenseo. Die Kurse und Schulungen finden am Bodensee statt, einer der schönsten Regionen von Deutschland.

© Bernd Klein, Bodenseo, Linux-Kurse und Schulungen