Springe zum Hauptinhalt

Archiv
next up previous contents
Next: Standard- E/A und Fileumlenkung Up: Bourne-Shell als Kommando- und Previous: Literaturverzeichnis

Kommandos

  • Kommando: Auftrag an das System zur Ausführung einer Funktion. Im Normalfall resultiert hieraus die Ausführung eines Programmes, nur wenige Funktionen sind fest in der Shell ,,verdrahtet`` (built-in-commands).
  • Kommandoaufruf: Folge von ein oder mehreren Worten, die untereinander durch Leerzeichen oder Tabulatorzeichen getrennt sind


    cmd_name [arg1 ... argn ]


    wobei cmd_name den Namen des Kommandos (d.h. des aufzurufenden Programmes) angibt und die restlichen Worte (falls vorhanden) die Kommandoargumente spezifizieren, d.h. zusätzlich Informationen an das Programm übergeben

    • Beispiele:
      $ ls              Listen der Filenamen im aktuellen Verzeichnis
      kap01.tex
      kap02.tex
      kap03.tex
      kap04.tex
      kap05.tex
      abbildungen
      $
      $ ls -l          "lange Liste"
      total 106
      -rw-rw----   1 stb      urz      1802 Feb 23 13:41 kap01.tex
      -rw-rw----   1 stb      urz      4681 Feb 23 14:25 kap02.tex
      -rw-rw----   1 stb      urz      4165 Feb 23 13:29 kap03.tex
      -rw-rw----   1 stb      urz      2898 Feb 23 13:26 kap04.tex
      -rw-rw----   1 stb      urz      3101 Feb 23 13:26 kap05.tex
      drwxrwx---   1 stb      urz       512 Feb  9 16:20 abbildungen
      $
      $ ls abbildungen
      bild01.fig
      bild02.fig
      bild03.fig
      bild04.fig
      bild05.fig
      bild06.fig
      bild07.fig
      $ vi kap01.tex
      
  • Mehrere Kommandos können durch Semikolon auf einer Zeile eingegeben werden, sie werden sequentiell nacheinander abgearbeitet:
    $ cd sort; pg sort.c sort.h subr.c; cd
    
  • Bemerkungen:
    • Arbeitsweise der Shell
    • Argumente werden an das Programm durchgereicht
    • ,,Prompt``-Zeichen
  • Hintergrundprozesse
    $ cmd &          
               
    $ cmd1 & cmd2   $\Rightarrow$ cmd1   als Hintergrundprozeß
               
          cmd2   als Vordergrundprozeß
    • Beispiele:
      $ cc prog.c &
      632
      $ ps
        PID TT STAT  TIME COMMAND
        630 p3 S     0:00 sh
        632 p3 S     0:00 cc prog.c
        634 p3 R     0:00 ps
      $
      $ ls & ps
      652
      kap01.tex
      kap02.tex
      kap03.tex
      kap04.tex
      kap05.tex
      kap06.tex
      kap07.tex
      kap08.tex
      kap09.tex
      prog.c
        PID TT STAT  TIME COMMAND
        640 p4 S     0:00 /usr/openwin/bin/xview/shelltool
        641 p4 IW    0:00 -bin/csh (csh)
        643 p4 IW    0:00 -sh -c umask 006; cd ~bur;newgrp urzbur (csh)
        645 p4 S     0:00 -bin/csh (csh)
        651 p4 S     0:00 sh
        652 p4 R     0:00 ls
        653 p4 R     0:00 ps
         
      $ ps & ls
      654
      kap01.tex
      kap02.tex
      kap03.tex
      kap04.tex
      kap05.tex
      kap06.tex
      kap07.tex
      kap08.tex
      kap09.tex
      prog.c
        PID TT STAT  TIME COMMAND
        640 p4 S     0:02 /usr/openwin/bin/xview/shelltool
        641 p4 IW    0:00 -bin/csh (csh)
        643 p4 IW    0:00 -sh -c umask 006; cd ~bur;newgrp urzbur (csh)
        645 p4 IW    0:00 -bin/csh (csh)
        651 p4 S     0:00 sh
        654 p4 R     0:00 ps
      $
      
    • Bemerkungen:
      • Simultane Kommandoausführung
      • während der Verarbeitung eines Vordergrundkommandos ,,schläft`` die Shell
      • Prozeßnummer des Hintergrundprozesses $\Rightarrow$ Abbruch möglich
      • (evtl.) ,,gemischte`` Ausgaben am Terminal
      • vermeiden: Terminaleingabe für Hintergrundprogramm
        Beispiel: (evtl.) folgendes Script inputst ausführen lassen:
        $ cat inputtst
        
        :
        #
        while true
        do
            echo -n "Soll die Verarbeitung fortgesetzt werden? [j/n]:"
            read ans
            case $ans in
                j|J)    echo JA;continue;;
                n|N)    echo NEIN;break;;
                  *)    echo $ans : FEHLERHAFTE EINGABE;continue;;
            esac
        done
        
        $ inputtst
        soll die Verarbeitung fortgesetzt werden? [j/n]:j
        JA
        Soll die Verarbeitung fortgesetzt werden? [j/n]:n
        NEIN
        $
        $ inputtst & 
        
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
        soll die Verarbeitung fortgesetzt werden? [j/n]:: FEHLERHAFTE EINGABE
         ...
        

next up previous contents
Next: Standard- E/A und Fileumlenkung Up: Bourne-Shell als Kommando- und Previous: Literaturverzeichnis