|
|
Linux-Einführung
Weitere Befehle |
|
| Die Bash | Shell-Programmierung |
wc [option].. [argument ..]
Option Bedeutung -c Anzahl der Zeichen -l Anzahl der Zeilen -w Anzahl der Worte $ wc *.html
651 1916 20562 Bash.html
975 2483 25884 Befehle1.html
911 2327 23986 Dateisystem.html
418 1055 10272 Einfuehrung.html
508 1541 15799 ErsteSchritte.html
113 439 4567 Literatur.html
71 168 2056 Uebersicht.html
71 168 2056 index.html
3718 10097 105182 insgesamt
less [option] [datei] ..
Befehl Bedeutung h Gibt eine Onlinehilfe aus <space>, f Blättert eine Seite weiter b Blättert eine Seite zurück <enter>, <Pfeil nach unten> Blättert eine Zeile weiter <Pfeil nach oben> Blättert eine Zeile zurück /muster , ?muster Sucht das Muster vorwärts bzw rückwärts n, N Sucht das nächste bzw. vorige Vorkommen des Suchmusters q Beendet das Programm
cat [option].. [datei] ..
Hat man zum Beispiel acht Dateien, »text1« bis »text8« und möchte diese hintereinander in eine Datei »text« kopieren: cat text[1-8] >text
Option Bedeutung --help Gibt eine Liste aller Optionen aus -v Zeigt auch nichtdarstellbare Zeichen an
split [option].. [datei [prefix]]
Die im letzten Beispiel zusammengefügte Datei »text« soll in Teilstücke zu jeweils 50 Zeilen zerlegt werden: split -l 50 text text-neu.
Option Bedeutung -b size Größe der Outputdateien in Byte (-b 1024), Kilobyte (-b 2k) oder Megabyte (-b 1m) -l n, -n n Zeilen pro Outputdatei
Beide Beispiel in einer pipe zusammengefaßt:
cat text[1-8] | split -l 50 - text-new.
tee [option].. datei
Im vorigen Beispiel wird keine Datei »text« erzeugt. Mit tee ist dies möglich:
Option Bedeutung -a Fügt an die Datei an
cat text[1-8] | tee text | split -l 50 - text-new.
cut [option].. [datei] ..
Spalten und Felder sind dabei durch Kommata getrennte Listen. Ihre Elemente können auch in der Form m-n angegeben werden.
Option Bedeutung -c spalten Gibt die angegebene(n) Spalte(n) aus -f felder Gibt die angegebenen Felder aus -d zeichen Trennzeichen zwischen den einzelnen Feldern. Default ist TAB.
root:x:0:0:root:/root:/bin/bashcut -d ':' -f 1,6 /etc/passwd druckt den Login-Namen und die HOME-Directory:
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash
news:x:9:13:News system:/etc/news:/bin/bash
root:/root
bin:/bin
daemon:/sbin
lp:/var/spool/lpd
news:/etc/news
paste [option].. datei ..
Will man Zeilen nach komplexeren Regeln zusammenfügen, so lohnt ein Blick auf join.
Option Bedeutung -d zeichen Angabe eines anderen Trennzeichens
sort [option].. [datei] ..
sort /etc/passwd sortiert die Datei aufsteigend.
Option Bedeutung +pos1 [-pos2] Sortiert nach den Feldern pos1 bis ausschliesslich pos2 -b Ignoriert Leerzeichen am Anfang von Sortierfeldern -n Sortiert numerisch -o datei Gibt in eine Datei aus -r Dreht die Sortierreihenfolge um -t zeichen Gibt das Trennzeichen zwischen den Feldern an
adabas:x:36:100:Adabas-D Database Admin:/usr/lib/adabas:/bin/bashsort -r /etc/passwd sortiert die Datei absteigend.
amanda:x:37:6:Amanda Admin:/var/lib/amanda:/bin/bash
at:x:25:25::/var/spool/atjobs:/bin/bash
basti:x:501:100:Sebastian Bader:/home/basti:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
zope:x:64:2:Zope Server:/var/lib/zope:/bin/falsesort +2 -n -r -t ':' /etc/passwd sortiert die Datei nach dem dritten Feld numerisch absteigend.
yard:x:29:29:YARD Database Admin:/usr/lib/YARD:/bin/bash
wwwrun:x:30:65534:Daemon user for apache:/var/lib/wwwrun:/bin/bash
virtuoso:x:45:100:Virtuoso Admin:/opt/virtuoso-lite:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash
basti:x:501:100:Sebastian Bader:/home/basti:/bin/bash
stefan:x:500:100:Stefan Ost:/home/stefan:/bin/bash
cyrus:x:96:12:User for Imapd:/usr/cyrus:/bin/bash
zope:x:64:2:Zope Server:/var/lib/zope:/bin/false
uniq [option].. datei
Option Bedeutung -d Gibt nur mehrfach vorkommende Zeilen aus -u Gibt nur genau einmal vorkommende Zeilen aus
head [option].. [datei] ..
head ist praktisch bei großen Dateien und wenn man weiß, dass relevante Informationen am Dateianfang stehen. In pipes kann man die Ausgabemenge reduzieren. So wurden die 5 Zeilen der sort-Beispiele mit einer head-pipe erzeugt:
Option Bedeutung -n n, -n Gibt die ersten n Zeilen aus
sort +2 -n -r -t ':' /etc/passwd | head -5
tail [option].. [datei]...
Sehr praktisch ist die -f Option, die Dateiergänzungen sofort anzeigt:
Option Bedeutung -n n, -n Gibt die letzten n Zeilen aus. Wenn n mit einem + beginnt, wird ab Zeile n ausgegeben -f Fügt an die Ausgabe an, wenn die Datei wächst
tail -f /var/log/messageszeigt neue Systemmeldungen sofort an, indem das Programm auf Änderungen in der Datei wartet und diese ausgibt.
ps [option]..
Option Bedeutung -e Gibt alle Prozesse aus -l "long" -f "full" -u user nur die Prozesse des angegebenen Benutzers
===== ux02 (ost) /dfs/u/o/ost =====Fast alles über die Prozessumgebung liefert die Option e in Verbindung mit einem doppelten w (Die Ausgabe ist der besseren Lesbarkeit wegen umformatiert):
ost> ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Aug11 ? 00:00:48 init [3]
root 2 1 0 Aug11 ? 00:00:11 [kswapd]
root 3 1 0 Aug11 ? 00:00:00 [kflushd]
root 4 1 0 Aug11 ? 00:00:07 [kupdate]
bin 324 1 0 Aug11 ? 00:00:12 portmap
root 346 1 0 Aug11 ? 00:00:00 rpc.statd
root 366 1 0 Aug11 ? 00:00:25 /usr/sbin/sshd
root 405 1 0 Aug11 ? 00:00:19 syslogd -m 0
root 414 1 0 Aug11 ? 00:00:00 klogd
daemon 446 1 0 Aug11 ? 00:00:00 /usr/sbin/atd
root 460 1 0 Aug11 ? 00:00:03 crond
root 478 1 0 Aug11 ? 00:00:00 inetd
root 553 1 0 Aug11 ? 00:00:00 gpm -t ps/2
root 674 1 0 Aug11 tty2 00:00:00 /sbin/mingetty tty2
root 675 1 0 Aug11 tty3 00:00:00 /sbin/mingetty tty3
root 676 1 0 Aug11 tty4 00:00:00 /sbin/mingetty tty4
root 677 1 0 Aug11 tty5 00:00:00 /sbin/mingetty tty5
root 678 1 0 Aug11 tty6 00:00:00 /sbin/mingetty tty6
root 708 1 0 Aug11 tty1 00:00:00 /sbin/mingetty tty1
root 830 1 0 Aug11 ? 00:00:16 [rpciod]
root 831 1 0 Aug11 ? 00:00:00 [lockd]
root 10609 1 0 Aug14 ? 00:00:00 /usr/sbin/sendmail -q1h
root 11551 1 0 Aug15 ? 00:00:00 lpd
xfs 21886 1 0 Aug21 ? 00:00:09 xfs -droppriv -daemon
root 7578 1 0 Aug31 ? 00:00:01 /usr/bin/kdm
root 973 366 0 08:28 ? 00:00:00 /usr/sbin/sshd
holters 977 973 0 08:28 pts/1 00:00:00 -ksh
root 1005 977 0 08:28 pts/1 00:00:00 su -
root 1009 1005 0 08:28 pts/1 00:00:00 -bash
root 3196 366 0 15:15 ? 00:00:00 /usr/sbin/sshd
ost 3199 3196 0 15:15 pts/2 00:00:00 -bash
ost 3247 3199 0 15:26 pts/2 00:00:00 ps -ef
===== ux02 (ost) /dfs/u/o/ost =====
ost> ps eww
PID TTY STAT TIME COMMAND
3199 pts/2 S 0:00 -bash HOME=/dfs/u/o/ost USER=ost LOGNAME=ost PATH=/usr/bin:/bin:/usr/bin
MAIL=/var/spool/mail/ost SHELL=/usr/local/bin/bash SSH_CLIENT=128.176.184.62 627 22
SSH_TTY=/dev/pts/2 TERM=kvt
3262 pts/2 R 0:00 ps eww LESSOPEN=|/usr/bin/lesspipe.sh %s HISTSIZE=1000 HOSTNAME=ux02 LOGNAME=ost
SSH_TTY=/dev/pts/2 MAIL=/dfs/u/o/ost/.briefkasten PAGER=less TERM=kvt HOSTTYPE=i386
PATH=/usr/bin:/bin:/usr/bin:/usr/X11R6/bin:/dfs/a/urz/bin:/dfs/u/o/ost/bin
KDEDIR=/usr HOME=/dfs/u/o/ost INPUTRC=/etc/inputrc SHELL=/usr/local/bin/bash
PS1====== $HOSTNAME ($LOGNAME) $PWD =====? ${PWD##?*/}>
PS2=> FMHOME=/dfs/a/urz/frame/version_5.5 PS4=[$LINENO] USER=ost LANGUAGE=de
LESSCHARSET=latin1 PGPPATH=/usr/local/ost/.pgp LANG=en_US SSH_CLIENT=128.176.184.62 627 22
HISTFILE=/dfs/u/o/ost/.history/history.ux02 MAILHOST=pylartes.uni-muenster.de
OSTYPE=Linux SHLVL=1 LS_COLORS= EDITOR=vi _=/bin/ps
kill process-idschickt dem Prozess ein Signal, das, wenn der Prozess es nicht abfängt, zu seinem »Tode« führt.
kill -9 process-idschickt ein Signal, das der Prozess nicht ignorieren kann und ihn beendet. Sterben Prozesse auch dann nicht, so warten sie in der Regel auf ausstehende I/O-Operationen.

find verzeichnis .. [attribut].. aktion
Attribut Bedeutung -name name Sucht nach Dateien mit dem angegebenen Namen -newer datei Sucht nach Dateien, die neuer sind als datei
Einige typische Beispiele:
Aktion Bedeutung -print, -ls Gibt den Dateinamen aus -exec befehl .. \;
-ok befehl .. \;Führt mit den gefundenen Dateien die angegebenen Befehle aus. Dabei wird in den Befehlen {} durch den Dateinamen ersetzt. -ok bewirkt, dass vor der Befehlsausführung nachgefragt wird.
grep gibt es in drei Varianten:
Suchmuster Passt auf Tiger Die Zeichenkette Tiger ^Tiger Tiger am Zeilenanfang. Tiger$ Tiger am Zeilenende. ^Tiger$ Tiger ist das einzige Wort auf der Zeile. [tT]iger tiger oder Tiger. T[aeiou]ger 5 Zeichen, davon 4 wie angegeben. Das zweite Zeichen ist ein beliebiger Vokal. T[^aeiou]ger 5 Zeichen, davon 4 wie angegeben. Das zweite Zeichen ist jedes Zeichen außer einem Vokal. ^...$ Jede Zeile, die genau drei Zeichen enthält. ^\. Jede Zeile, die mit einem Punkt beginnt. Der \ maskiert wie gewohnt. ^[^.] Jede Zeile, die nicht mit einem Punkt beginnt. Tiger.* Tiger, gefolgt von einer auch leeren beliebigen Zeichenfolge: Tiger, Tigerin, Tigerhöhle, ... [A-Z][A-Z]* Ein oder mehrere Großbuchstaben [A-Z].* Ein Großbuchstabe, gefolgt von einer auch leeren, beliebigen Zeichenfolge. [A-Z]* Eine auch leere Folge von Großbuchstaben.
grep [option].. muster [datei] ..
Option Bedeutung -i Ignoriert Groß- und Kleinschreibung -v Gibt die Zeilen aus, auf die das Muster nicht passt -n Gibt zusätzlich die Zeilennummern aus -l Gibt die Namen der Dateien mit Übereinstimmungen aus -L Gibt die Namen der Dateien ohne Übereinstimmungen aus -c Zählt die Anzahl der Übereinstimmungen
Wenn man keine Option angibt, wird jedes Zeichen der Zeichenfolge,
das
in »Satz1« vorkommt, wird durch das korrespondierende
Zeichen
in »Satz2« ersetzt. Kommt das Zeichen in
»Satz1«
nicht vor, so bleibt es unverändert. (siehe abschließendes
Beispiel).
Wenn »Satz1« länger ist als »Satz2«, wird
das letzte Zeichen in »Satz2« so oft wiederholt, bis beide
Zeichenketten gleich lang sind.
tr [option].. Satz1 [Satz2]
Option Bedeutung -d Entfernt die Zeichen in Satz1 aus der Zeichenfolge -s Entfernt mehrfache Vorkommen der Zeichen in Satz1 -c Ersetzt die Zeichen, die nicht in Satz1 vorkommen
tr -s '\n'
ersetzt doppelte oder mehrfache Leerzeilen durch eine einzige.
tr ' :.,;()"' '\n\n\n\n\n\n\n\n' <Eingabe.txt | # 1, 2
grep -v '^$' | # 3
tr 'A-ZÖÜÄ' 'a-zöüä' | # 4
sort | # 5
uniq -c # 6
Wenn man einen PostScript-Drucker besitzt, oder auf eine bestehende PostScript-Drucker-Infrastruktur (wie im ZIV) zurückgreifen kann, hat man unter Linux keine Probleme. Sowohl lokale als auch remote Drucker können benutzt werden. Remote-Drucker können von Unix- oder Windows-Servern betrieben werden.
Hat man keinen PostScript-Drucker, so muss der Datenstrom durch ein geeignetes Programm (ghostscript) übersetzt werden. Für lokale Drucker kann man das automatisieren, siehe die SuSE-Drucker-Konfiguration mit dem Dienstprogramm yast.
Gedruckt wird aus der Anwendung heraus: Netscape, Acrobat-Reader, emacs, usw. können PostScript-Druckaufträge generieren.
Für Text-Dateien, wie etwa C-Programme oder E-Mails, ist a2ps
(ascii to postscript) nützlich. a2ps kennt etwa die Syntax
von C-Programmen und formatiert die Seiten entsprechend.
| Vorlesungsübersicht | Shell-Programmierung |