Springe zum Hauptinhalt

Archiv
next up previous contents
Next: Pipelineverarbeitung Up: Bourne-Shell als Kommando- und Previous: Kommandos

Standard- E/A und Fileumlenkung

  • Shell stellt jedem Programm, das sie aufruft, drei E/A- Verbindungen (Kanäle) bereit:
    • Standardeingabefile (standard input -- stdin)
    • Standardausgabefile (standard output -- stdout)
    • Diagnoseausgabefile (standard error -- stderr)
  • Programme, die ihre E/A über diese logischen Verbindungen erledigen, brauchen sich um das Öffnen bzw. Schließen nicht kümmern

    Beispiel: Funktionen der C-Standardbibliothek:

    getchar(), scanf() $\Rightarrow$ Lesen von stdin
    putchar(), printf() $\Rightarrow$ Schreiben nach stdout
    fprintf() $\Rightarrow$ Schreiben nach stderr
    Beispiele für Programme, die ihre Informationen auf stdout ausgeben:

    $ ls, ps, who, date, echo, cat

    Beispiele für Programme, die von stdin lesen und nach stdout ausgeben:

    $ sh, sort, cat, wc, tr

  • Normalerweise sind diese 3 Standardfiles dem Terminal des betreffenden Nutzers zugeordnet, sie können jedoch auf einfache Weise auf beliebige Files ,,umgelenkt`` werden (i/o redirection):

    Beispiel: für Fileumlenkung

    $ ls >tmpfile
    
    $ wc -l <tmpfile
        11
    $ cat tmpfile
    kap01.tex
    kap02.tex
    kap03.tex
    kap04.tex
    kap05.tex
    kap06.tex
    kap07.tex
    kap08.tex
    kap09.tex
    rahmen.tex
    tmpfile
    $
    
    allgemeine Notation:
    <ifile Lesen ifile
    >ofile Schreiben ofile, falls ofile bereits existierte, so wird es überschrieben
    >>ofile Fortschreiben von ofile


    Problem: cmd <file >file ?!

  • Shell als Kommando:


    File shellproc enthalte Folge von Kommandos


    $ sh <${\it shellproc}$

        ...

  • Bemerkungen:
    • Ausnutzung von zwei Tatsachen
      1.
      Shell ist ,,gewöhnliches`` Programm
      2.
      Shell liest von der Standardeingabe
    • Ablauf: ,,aktuelle`` Shell ruft sich quasi selbst auf (Kopie) und wartet, bis diese neue Shell-Instanz das File shellproc gelesen hat (EOF) und die darin enthaltenen Kommandos ausgeführt worden sind
    • es existieren noch weitere Möglichkeiten zur Ausführung von Shell-Scripts (s. Abschnitt Shell-Scripts)
    • shellproc kann mit dem Editor vi erzeugt werden, hier jedoch Nutzung von cat plus Fileumlenkung (,,primitive Texterfassung``):
      $ cat >shellproc
      ls >tmpfile
      wc -l <tmpfile
      rm tmpfile
      <CRTL-D>
      $
      
    • Es existieren weitere (selten benutzte) Möglichkeiten der Fileumlenkung; den logischen E/A-Kanälen sind sogenannte Filedeskriptoren (fd_nr) zugeordnet, z.B.
        $\Rightarrow$ stdin
      1 $\Rightarrow$ stdout
      2 $\Rightarrow$ stderr
      1.
      Umlenken Ausgabekanal fd_nr nach ofile:

      fd_nr >ofile


      z.B. 2>diagnose $\Rightarrow$ stderr in diagnose umgelenkt


      2.
      Umlenken Eingabekanal fd_nr auf ifile:


      fd_nr <ifile


      3.
      Umlenken Standardausgabe in Ausgabekanal:


      fd_nr >&fd_nr


      4.
      Umlenken Standardeingabe auf Eingabekanal


      fd_nr <&fd_nr


      5.
      Verallgemeinerung:


      ${\it fd\_nr_{1} \gt\&fd\_nr_{2} }$


      ${\it fd\_nr_{1} <\&fd\_nr_{2} }$


      z.B. 2>&1 $\Rightarrow$ Standardfehlerausgabe auf Standardausgabe gemischte Ausgaben


      6.
      stdin, stdout schließen


      >&- bzw. <&-


      7.
      ,,here``-Dokumente


      <<wort    darauf wird später im Zusammenhang mit Shell-Scripts eingegangen.


next up previous contents
Next: Pipelineverarbeitung Up: Bourne-Shell als Kommando- und Previous: Kommandos
  • Skulptur der Justizia vor einem Gebäude

    Schulterschluss für ein Studium der Rechtswissenschaften an der TU Chemnitz

    Neue Website der TU Chemnitz zeigt, dass sich Vertreterinnen und Vertreter aus der Justiz, der Anwaltschaft, der Wirtschaft und der Wissenschaft einig sind, wie man in Chemnitz durch neue Studienangebote in den Rechtswissenschaften dem zunehmenden Bedarf an Juristinnen und Juristen in Sachsen wirkungsvoll begegnen kann …

  • Drei Männer stehen nebeneinander. Ein Mann in der Mitte hält eine Urkunde in den Händen.

    Peter Bernshausen ist neuer Kanzler der TU Chemnitz

    Mit der Bestellung durch das Sächsische Staatsministerium für Wissenschaft, Kultur und Tourismus übernimmt Peter Bernshausen ab 1. November 2024 die Leitung der Zentralen Universitätsverwaltung …

  • Grafik mit Vernetzungssymbolen

    Tag des wissenschaftlichen Nachwuchses am 28. November 2024

    Der „Tag des wissenschaftlichen Nachwuchses“ der TU Chemnitz steht in diesem Jahr im Zeichen der vielfältigen Wege zur Promotion und zu unterschiedlichen Karriereoptionen nach der Promotion – Kostenfreie Teilnahme ist nach Online-Anmeldung möglich …

  • Blick auf ein buntes Bild an einem Gebäudeanbau.

    Neue Kunst im „Erfenschlag“

    Studierende und Beschäftigte der TU Chemnitz schufen durch Malen auf dem Wasser ein Kunstwerk, das nun einen Gebäudeanbau auf dem Gelände des südlichsten Uni-Standorts ziert …