Interaktive Programme benutzen zur Ein- und Ausgabe die vordefinierten Textdateien:
Standardeingabe (standard input) [Tastatur] |
||
↓ | ||
interaktives Programm | ||
↓ | ↓ | |
Standardausgabe (standard output) [Bildschirm] |
Standardfehlerausgabe (standard error) [Bildschirm] |
[] benennt die Voreinstellung, die durch Umlenken geändert werden kann.
Metazeichen | |
< dateiName | # Standardeingabe |
> dateiName | # Standardausgabe |
>& dateiName | # Standardaus- und -fehlerausgabe |
Fehlerausgabe getrennt ausgeben für bash | |
kommando 2> fehlerDatei | |
Ausgabe und Fehlerausgabe trennen für tcsh | |
(kommando > ausgabeDatei) >& fehlerDatei | |
Beispiele | |
cat /etc/passwd | # Ausgabe auf: |
cat /etc/passwd > dat | # Ausgabe auf: |
cat dat1 dat2 > res | # Ausgabe auf: |
more nicht.da >& fehler | # Ausgabe auf: |
cat < in > out | # |
Hinweis | |
Alle Programme, die nur die Standarddateien für Ein- und Ausgabe benutzen, können ohne Änderung zur Dateiverarbeitung benutzt werden! |
|
→ |
|
|
→ |
|
Skizzieren Sie die Graphik der Standarddateien für folgende Befehle:
ls -al > datei |
cat > datei |
bash < bash.in |
cat < Datei.txt >& Alles.txt |
find ~progbau -name "*[mM][aA][rR][gG]*" > out |
find ~progbau -name "*html" 2>err # bash |
Verketten von Programmen zu Pipelines: Ausgabetext von Standardausgabe umlenken auf Standardeingabe des nachfolgenden Programmes:
Eingabe | Ausgabe | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
↓ | ↑ | |||||||||
kommando1 | kommando2 | kommando3 | kommando4 | |||||||
Text↓ | Text↑ | Text↓ | Text↑ | Text↓ | ↑Text | |||||
→ pipe → | → pipe → | → pipe → |
Doug McIlroy: Write programs that do one thing and do it well. Write programs to work together.
Piping auf der Kommandozeile mit dem Metazeichen | | |
kommando1 argumente1opt
|
kommando2 argumente2opt |
|
Beispiel | Funktion |
ls -l | more | # große Verzeichnisse seitenweise ansehen |
ls /usr/bin/ | wc -w | # Anzahl der Verzeichniseinträge zählen |
ls -l | lpr | # Verzeichnisliste drucken |
Anzahl der Namen ... | |
aus /usr/bin/ mit b beginnend | |
|
|
aus /dev/, die eine Ziffer enthalten | |
|
|
Anzahl der StudentInnen am FB Informatik | |
|
|
Handwerk: Pipes stufenweise aufbauen und testen!! |
wc zum Zählen von Bytes, Zeichen, Wörtern und Zeilen (s. man-pages)
# Wie behandelt der Kommandointerpreter die folgende Eingabe?
ls -d /home/inf/*[23][0-9][0-9][0-9] | wc -w > res
Name | Inhalt | Name | Inhalt | |
* | * | !! | abcdef | |
rf * | !! | $$-- | $$ | |
!! | -- | !rm | rm -rf * | |
;echo $$ $! | !!! | ###### | #?# |
Die Dateien sind gzipte tar-Archive mit den Klausurunterlagen.
Kommandointerpreter können personalisiert werden durch Aliase und Belegung von Laufzeitvariablen.
Variable steuern das Laufzeitverhalten der definierenden Shell und aufgerufener Programme. Variable sind lokal zu ihrer Shell.
Setzen, Löschen, Anzeigen | |
varName=wert | # Variable definieren/setzen - keine Leerzeichen! |
unset varName | # Löschen |
echo $varName | # Anzeigen |
echo ${varName} | # {} zur genauen Abgrenzung |
set | # zeigt alle Variable an |
Beispiele | |
maria=anna | # Namen klein geschrieben |
echo maria | # |
echo ${maria}-maria | # |
Variable sind lokal | |
name=Edith | |
sh | # Neue Shell starten |
echo $name | # Fehlermeldung |
Variable werden global mittels export | |
NAME=Edith | # Name groß geschrieben |
export NAME | # wird global |
ksh | # Neue Shell starten |
echo $NAME | # Edith |
Namen und Umfang vordefinierter Variablen variieren zwischen Shells.
Vorkonfiguration häufig benutzter Befehle.
Setzen, Löschen, Anzeigen | |
alias befehlsName='wert' | # Setzen: Leerzeichen sind signifikant! |
unalias befehlsName | # Löschen |
alias | # zeigt alle Einträge an |
Setzen, Löschen, Anzeigen | |
alias rm='rm -i' | # tcsh: alias rm 'rm -i' |
alias dir='ls -l' | # tcsh: alias dir 'ls -l' |
Quiz | |
# m als alias für more | |
# mrore als alias für more | |
# ll als alias für ls -l |
Interpreter speichern die letzten HISTSIZE (history) Kommandos. Ausgabe mittels Kommando history.
Kürzel | Bedeutung |
!! | letztes Kommando |
!name | letztes Kommando mit Präfix name |
!n | Kommando Nummer n gemäß history |
!$ | letzter Parameter des letzten Kommandos |
ctrl-r | Suchen |
Befehl | Funktion |
ls -l *html | |
pwd | |
!! | |
!ls | |
!-1 | |
echo hallo | |
echo !$ Welt |
Initialisierungsdatei ~/.bashrc für bash und ~/.tcshrc für tcsh.
Testen von Änderungen in der Konfigurationsdatei durch Starten einer neuen Shell, oder mittels des source Kommandos, das in der aktiven Shell die Konfiguration neu einliest: source ~/.bashrc
history -c löscht Einträge, etwa um Passwörter nicht im Klartext abgelegt zu lassen.
echo $path | # Inhalt anzeigen |
(/bin/ /usr/bin/) | # Liste! |
set path=($path . ~/bin/) | # Liste ergänzen |