Sie sind auf Seite 1von 211

Version 4.

Linux-Grundlagen
für Anwender und Administratoren

$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

tuxcademy – Linux- und Open-Source-Lernunterlagen für alle


www.tuxcademy.org info@tuxcademy.org
info@lpi.org

https://www.tuxcademy.org/

grd1:d0ad6b9d16863aeb:2015-08-04
grd1:a13e1ba7ab759bab:2015-08-04
grd1:HnLafg42pqEurl5k7wWY8u

http://www.tuxcademy.org info@tuxcademy.org

http://creativecommons.org/licenses/by-sa/4.0/

anselm@tuxcademy.org
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

Inhalt

help --help

vi emacs

vi
4 Inhalt

cd
ls
mkdir rmdir

cp
ln ln -s
more less
find
locate slocate

grep

cat tac
head tail
od hexdump

tr expand unexpand
fmt pr

sort uniq
cut paste

sleep echo date


5

tar
cpio
gzip
bzip2
xz
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

Tabellenverzeichnis

vi
vi
vi
vi
ex vi
emacs
emacs
emacs
emacs

ls
ls
cp
more
less
find
find

grep

cat
tac
od
tr
tr
pr
nl
wc
sort
join

jobs
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

Abbildungsverzeichnis

vi
vi
emacs

tee
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

Vorwort

Kapitel

Lernziele
Voraussetzungen

C Übungsaufgaben

Schreibmaschinenschrift
fetter
Schreibmaschinenschrift
12 Vorwort

-f
-a -b
Wichtige Konzepte
Definitionen

info@tuxcademy.org

LPIC-1-Zertifizierung
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

1
Einführung

Inhalt

Lernziele

Vorkenntnisse

grd1-einfuehrung.tex (a13e1ba7ab759bab)
14 1 Einführung

1.1 Was ist Linux?

1.2 Die Geschichte von Linux

Bell Laboratories

C
VAX

System V

SVR4
1.2 Die Geschichte von Linux 15

Bild 1.1:

Minix

gcc bash emacs


16 1 Einführung

55MiB
Linux 2.0
Linux 2.1
50MiB Linux 2.2
Linux 2.3
Linux 2.4
Linux 2.5
45MiB Linux 2.6

40MiB

35MiB

30MiB

25MiB

20MiB

15MiB

10MiB

5MiB
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007

Bild 1.2: linux-*.tar.gz

Übungen
C 1.1

C 1.2

1.3 Freie Software, »Open Source« und die GPL

GPL
Free Software Foundation
Freie Software

Open Source
1.3 Freie Software, »Open Source« und die GPL 17

EULAs

B
GPLv3

Public Domain

B
18 1 Einführung

GPL und Geld

Andere »freie« Lizenzen

B
1.3 Freie Software, »Open Source« und die GPL 19

Freiheits-Kriterien
Debian Free Software Guidelines

Mehrfach-Lizenzierung
20 1 Einführung

Übungen
C 1.3

C 1.4

1.4 Linux – Der Kernel


Betriebssystemkern

Versionen

stabile Versionen

Entwicklungs-Versionen
1.4 Linux – Der Kernel 21

Kernel 2.6

Release-Kandidat

B
-mm -mm-Baum

Version 3.0

ftp.kernel.org »offizielle« Kernels

Distributions-Kernels

Kernel-Struktur
22 1 Einführung

Module

Hardwareerkennung

Übungen
C 1.5

1.5 Die Eigenschaften von Linux

Prozessoren

Hardware

Multitasking

B
1.5 Die Eigenschaften von Linux 23

mehrere Benutzer

Virtualisierung

Effizienz

POSIX, System V und BSD

Dateisysteme

TCP/IP-Stack

Grafikumgebungen

Software

Embedded-Bereich
24 1 Einführung

Sicherheitslücken

Linux in Firmen

Öffentliche Verwaltung

Unterstützung durch IT-Firmen


1.6 Linux-Distributionen 25

Übungen
C 1.6

1.6 Linux-Distributionen

Distributionen

Red Hat und Fedora

SUSE

/etc/sysconfig
26 1 Einführung

Übernahme durch Novell

Attachmate
Micro Focus

YaST

Debian-Projekt

Grundlage

main
non-free contrib

Versionen
1.6 Linux-Distributionen 27

Benutzer
wählen Entwickler

Projektverantwortliche
Projektführer
ernennt ernennt

Technisches Komittee Projektsekretär


ernennt/anerkennen

Delegierte anerkennen

Release Team Paketbetreuer / Portierer

FTP Masters DAM NM Team / Fürsprecher bewerben Antragsteller

Sicherheitsteam Richtlinienkommittee Dokumentation / Übersetzer

Pressesprecher Web/List/...masters Qualitätssicherung

Administratoren CD Team etc.

lige
etc. etc.
iwil
Fre Software in the
Public Interest
(SPI)

Bild 1.3:

unstable

testing
testing
stable

stable

Ableger-Projekte

Ubuntu

Ziel von Ubuntu

unstable
28 1 Einführung

Ubuntu vs. Debian

Ubuntu vs. SUSE/Red Hat

Weitere Distributionen

Gemeinsamkeiten

bash

Übungen
C 1.7

http://www.distrowatch.org/
1.6 Literaturverzeichnis 29

Zusammenfassung

Literaturverzeichnis
DFSG http://www.debian.org/social_contract

GPL-Urteil06
http://www.jbb.de/urteil_lg_frankfurt_gpl.pdf

GPL91
http://www.gnu.org/licenses/gpl.html

LR89

Rit84

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

RT74

TD01
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

2
Die Bedienung des Linux-Systems

Inhalt

Lernziele

Vorkenntnisse

grd1-bedienung.tex (a13e1ba7ab759bab)
32 2 Die Bedienung des Linux-Systems

Bild 2.1:

2.1 Anmelden und Abmelden

Zugangsberechtigung

hugo
geheim

B
2.1 Anmelden und Abmelden 33

Anmelden in einer grafischen Umgebung

Abmelden in einer grafischen Umgebung

Anmelden auf der Textkonsole

rechner login: _

rechner

Password: _

B
34 2 Die Bedienung des Linux-Systems

Abmelden auf der Textkonsole


logout

$ logout

Übungen
C 2.1

C 2.2

2.2 An- und Ausschalten

Rechner ausschalten

Übungen
C 2.3

2.3 Der Systemadministrator

root root
2.3 Der Systemadministrator 35

root
root

root
root
Grafische Oberfläche als root:
riskant

/bin/su -
root su root Identität von root annehmen

root exit

E su
/bin/su -

su root
su

su

# Eingabeaufforderung für root


$ >

root

sudo

$ sudo chown hugo datei.txt

datei.txt hugo

B root und KDE


root

root
root

B
kdesu kdesu
root
36 2 Die Bedienung des Linux-Systems

Bild 2.2:

Übungen
C 2.4 su
id
root

# id
uid=0(root) gid=0(root) groups=0(root)

C 2.5
su

C 2.6
id

Kommandos in diesem Kapitel


exit bash 35
id id 36
kdesu
help:/kdesu 35
logout “ bash 34

su su 35
sudo
sudo 35
2.3 Der Systemadministrator 37

Zusammenfassung

root

root
su
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

3
Keine Angst vor der Shell

Inhalt

Lernziele

Vorkenntnisse

grd1-shell1.tex (a13e1ba7ab759bab)
40 3 Keine Angst vor der Shell

3.1 Warum?

3.2 Was ist die Shell?

Bourne-Shell

C-Shell
3.2 Was ist die Shell? 41

Korn-Shell

bash Bourne-Again-Shell

B Shells: normale Programme

Shellskripte

Programmiersprache

exit Shell verlassen

B Wechseln zwischen Shells

sh
sh
bash
ksh
csh
tcsh

csh tcsh

B
echo $0
42 3 Keine Angst vor der Shell

Übungen
C 3.1
/etc/shells

C 3.2
echo $0
bash echo $0

3.3 Kommandos
3.3.1 Wozu Kommandos?

xterm
konsole

hugo@red:/home > _

hugo red
/home

3.3.2 Wie sind Kommandos aufgebaut?

Syntax

Wörter
Erstes Wort: Kommando

Parameter

A
Groß- und Kleinschreibung

B
3.3 Kommandos 43

- Optionen

-a -l -F -alF

lange Optionen

bla --fasel --blubb

Argumente

Befehlsstruktur

3.3.3 Arten von Kommandos

exit cd
44 3 Keine Angst vor der Shell

/bin /usr/bin

Extern oder intern?


type

$ type echo
echo is a shell builtin
$ type date
date is /bin/date

echo

$ echo Ha, wackrer Tell! Das gleicht dem Waidgesellen!


Ha, wackrer Tell! Das gleicht dem Waidgesellen!

date

$ date
Mo 12. Mär 09:57:34 CET 2012

echo date
Hilfe
help

$ help type
type: type [-afptP] name [name ...]
For each NAME, indicate how it would be interpreted if used as a
command name.

If the -t option is used, `type' outputs a single word which is one of


`alias', `keyword', `function', `builtin', `file' or `', if NAME is an

Übungen
C 3.3
alias echo rm test

3.3.4 Noch mehr Spielregeln

Leerzeichen

$&;(){}[]*?!<>«
3.3 Kommandos 45

Maskierung

' ' " "

$ touch 'Neue Datei'

Neue Datei Neue


Datei

Kommandos in diesem Kapitel


bash “

bash 41
csh “ csh 41

date date 44
echo
bash echo 44
help bash bash 44
konsole “ help:/konsole 42

ksh “ ksh 41

sh “ sh 41

tcsh “

tcsh 41
type bash 44
xterm “ xterm 42

Zusammenfassung
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

4
Hilfe

Inhalt

help --help

Lernziele

Vorkenntnisse

grd1-hilfe.tex (a13e1ba7ab759bab)
48 4 Hilfe

4.1 Hilfe zur Selbsthilfe

4.2 Der help-Befehl und die --help-Option


Interne bash-Kommandos help

$ help exit
exit: exit [n]
Exit the shell with a status of N.
If N is omitted, the exit status
is that of the last command executed.
$ _

Option --help bei ex-


ternen Kommandos --help

B --help -h -
?
4.3 Die Handbuchseiten 49

Tabelle 4.1:

4.3 Die Handbuchseiten


4.3.1 Überblick

man Kommando man

man bash

4.3.2 Struktur
Gliederung von Handbuchseiten

grep
50 4 Hilfe

Tabelle 4.2:

groff

grep
grep

groff

/usr/share/man man

B
MANPATH man
manpath
MANPATH

4.3.3 Kapitel
Kapitel

man
man 1 crontab crontab
man 5 crontab crontab

crontab
crontab crontab
man -a -a man

4.3.4 Handbuchseiten anzeigen


Anzeigeprogramm man less

man:/
#
4.4 Die Info-Seiten 51

apropos Stichwortsuche
man -k

whatis whatis
Namenssuche

whatis
man -f

Übungen
C 4.1 ls
man

C 4.2

C 4.3

man
groff -Tascii -man | less
groff -Tps -man | gv -

4.4 Die Info-Seiten

Hypertext

Bild 4.1:
52 4 Hilfe

info
info

emacs
info:/

groff

Übungen
C 4.4 ls
info

C 4.5

4.5 Die HOWTOs

apropos

Problemorientier-
te Dokumentation
HOWTOs

HOWTOs als Paket


/usr/
share/doc/howto /usr/share/doc/HOWTO

HOWTOs im Netz
Linux Documentation Project http://www.tldp.org

4.6 Weitere Informationsquellen

weitere Dokumentation /usr/share/doc /usr/share/doc/packages


4.6 Weitere Informationsquellen 53

WWW
USENET

http://www.tldp.org/

http://www.linux.org/

http://www.linuxwiki.de/

http://lwn.net/

http://freecode.com/

http://www.linux-knowledge-portal.de/

FAQ

B http://groups.google.de/

B
comp.os.linux.* de.comp.os.unix.linux.*

de.comp.os.unix.shell
de.comp.os.unix.linux.misc

B majordomo@vger. Mailinglisten
kernel.org
subscribe LISTE

http://vger.kernel.org/vger-lists.html

Suchmaschinen
54 4 Hilfe

Freie Dokumentation

Kommandos in diesem Kapitel


apropos “

apropos 50
groff groff 50
help bash bash 48
info info 52
less less 50
man man 48
manpath manpath 50
whatis
whatis 51

Zusammenfassung
help
--help
man apro-
pos whatis
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

5
Editoren: vi und emacs

Inhalt

vi

Lernziele
vi emacs

Vorkenntnisse

grd1-editoren.tex (a13e1ba7ab759bab)
56 5 Editoren: vi und emacs

5.1 Editoren

Was tut ein Editor?

x u

Unterschied zu Text-
verarbeitungen

B
groff

Syntaxhervorhebung B

Übungen
C 5.1

5.2 Der Standard – vi


5.2.1 Überblick
vi

vi: heute meist Klon


vim
5.2 Der Standard – vi 57

elvis vi

vi
Einer der ersten Bildschirmedito-
ren

vi

vi
ex

Niedrige Anforderungen an Tas-


tatur

vi

vi
vi
vi

vi

B vi
ed
ed vi ed

ed
EDLIN ed
ed

ed

ed

sed

sed
ed

5.2.2 Grundlegende Funktionen


Das Pufferkonzept vi Puffer
vi

vi
58 5 Editoren: vi und emacs

Bild 5.1: vi

vi

Arbeitsmodi vi
Arbeitsmodi

vi

vi
vi
vi

B vi

Kommandomodus vi
5.2 Der Standard – vi 59

Bild 5.2: vi

Tabelle 5.1: vi

A
i
I
o
O
60 5 Editoren: vi und emacs

Tabelle 5.2: vi

h
l
k
j
0
$
w
b
f
Strg f
Strg b
G
G

B vi
Esc :set showmode

a i
Eingabemodus o vi
-- INSERT --

Esc
vi
Z Z

: q!

Kommandozeilenmodus : vi

vi
vi
ex
ex
: w : x
: wq
Z Z

Bewegung im Text

vi
5.2 Der Standard – vi 61

Tabelle 5.3: vi

x
X
r

d w
d $
d 0
d f

d d
d G
d 1 G

Tabelle 5.4: vi

c w
c $
c 0
c f

c / abc abc

Löschen von Zeichen d

3 Wiederholungsfaktor
x

u undo

Überschreiben von Zeichen c


d c Überschreiben

Esc

5.2.3 Erweiterte Funktionen


Textteile ausschneiden, kopieren und einfügen

vi
c y
62 5 Editoren: vi und emacs

p P

vi
26 Zwischenspeicher

a z

” c y 4 w
c ” g p g

Textsuche mit regulären Ausdrücken


vi

/
? vi

n N

Suchen und Ersetzen


vi
ex

: , s/ / /g

Textbereich

:5,$s/rot/blau/

rot blau

:5,$s/rot/blau/g
5.2 Der Standard – vi 63

Tabelle 5.5: ex vi

: w

: w!

: e
: e #
: r

: !
vi
: r!

: s/ /

: q vi
: q! vi
: x : wq
vi

rot blau
Brotmaschine Bblaumaschine

B . $

:/^ANFANG/,/^ENDE/s/rot/blau/g

rot blau ANFANG


ENDE

& Rückbezug auf Gefundenes

: s/Zebra/&fink

Befehle im Kommandozeilenmodus
ex

Übungen
C 5.2 vim
vim
64 5 Editoren: vi und emacs

5.3 Der Herausforderer – Emacs


5.3.1 Überblick
emacs

Emacs-Ableger jove

vi

Diverse Funktionen

vi

5.3.2 Grundlegende Funktionen


Puffer vi emacs

mehrere Puffer vi emacs

emacs

Strg
x c
Esc

vi

Esc x tetris Esc x doctor


vi Makefile
5.3 Der Herausforderer – Emacs 65

Bild 5.3: emacs

Tabelle 5.6: emacs

-:---
-:**-
-:%%-

B Esc

Alt

Start, Ende und Hilfe emacs Startbildschirm

emacs
Strg h

emacs
Menüleiste

Statuszeile

emacs *scratch*
66 5 Editoren: vi und emacs

All

vi

Strg x u
Strg x Strg c emacs

Texte laden und speichern emacs


Strg x
Strg f

emacs
Tab
Strg x Strg v

Strg x i

Strg x Strg s

Strg x Strg w

Strg x b
Strg x Strg b

Bewegung im Text

Löschen von Zeichen

5.3.3 Erweiterte Funktionen


Textteile ausschneiden und einfügen
5.3 Der Herausforderer – Emacs 67

Tabelle 5.7: emacs

Strg f

Strg b
Strg n
Strg p
Esc f
Esc b
Strg a
Strg e
Esc a
Esc e
Strg v
Esc v
Esc <
Esc >

Tabelle 5.8: emacs

Strg d

Esc d

Strg k
Strg
k
Esc k
Strg w
Strg
68 5 Editoren: vi und emacs

Tabelle 5.9: emacs

Strg t

Esc t

Strg x Strg t

Esc c

Esc u

Esc l

Strg y

Esc y

Korrektur von Tippfehlern

emacs

Textteile suchen
emacs
Strg s
Strg r

Weitere Funktionen

Unterstützung be- emacs


stimmter Dateitypen
.c

Neue Mail emacs


Esc x rmail

emacs
Verzeichniseditor Strg x d
5.4 Andere Editoren 69

Emacs-Lisp

emacs

Übungen
C 5.3
Strg h t

5.4 Andere Editoren

kate gedit

Kommandos in diesem Kapitel


ed ed 57
elvis “ vi elvis 56

emacs emacs emacs 63
ex vi vi 57
jove emacs jove 64
sed
sed 57
vi vi 56
vim “ vi vim 56

Zusammenfassung

vi
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

6
Dateien: Aufzucht und Pflege

Inhalt

cd
ls
mkdir rmdir

cp
ln ln -s
more less
find
locate slocate

Lernziele

Vorkenntnisse

grd1-dateien.tex (a13e1ba7ab759bab)
72 6 Dateien: Aufzucht und Pflege

6.1 Datei- und Pfadnamen


6.1.1 Dateinamen

Dateien

Erlaubte Zeichen

A
Groß- und Kleinschreibung

x-files X-Files

Endungen

blabla.txt
blabla

B
gcc
.c .s
.o

Sonderzeichen
6.1 Datei- und Pfadnamen 73

A Ortseinstellung

convmv convmv

mv

Portable Dateinamen

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789+-._

X-files
bla.txt.bak
17.Juni
7_of_9

-20°C -
.profile
3/4-Takt
Müll

. Versteckte Dateien
74 6 Dateien: Aufzucht und Pflege

6.1.2 Verzeichnisse

brief.txt

Schrägstrich /
hugo/brief.txt
brief.txt hugo

Verzeichnisbaum

B
root

6.1.3 Absolute und relative Pfadnamen

/home/hugo/brief.txt brief.txt hugo


home home

absolute Pfadnamen
6.2 Kommandos für Verzeichnisse 75

aktuelles Verzeichnis

brief.txt
brief.txt susi/brief.txt
brief.txt susi
relative Pfadnamen

B
/

cd

Abkürzungen
..
/home/hugo
/home

/home/hugo
briefe romane briefe
../romane/werther.txt
werther.txt romane
/home/hugo/romane/werther.txt

PATH
prog

PATH

$ ./prog

/home
/home/hugo hugo

6.2 Kommandos für Verzeichnisse


6.2.1 Das aktuelle Verzeichnis: cd & Co.
cd Verzeichnis wechseln
76 6 Dateien: Aufzucht und Pflege

Tabelle 6.1: ls

ls -F ls -l

-
* -
/ d
@ l

$ cd briefe briefe
$ cd ..

$ cd
$ pwd
/home/hugo

Aktuellen Verzeich- pwd


nisnamen ausgeben
Eingabeaufforderung

hugo@red:~/briefe> _

~/briefe /home/hugo/briefe ~

B cd -
cd

Übungen
C 6.1 cd

C 6.2 bash pushd


popd dirs

6.2.2 Dateien und Verzeichnisse auflisten – ls

ls
Tabellenformat

B
6.2 Kommandos für Verzeichnisse 77

Tabelle 6.2: ls

-a --all
-i --inode
-l --format=long
--color=no
-p -F
-r --reverse
-R --recursive DIR/S
-S --sort=size
-t --sort=time
-X --sort=extension

B
-F -p

Versteckte Dateien
-a -l

Zusatzinformationen

Abkürzungen
l ls -alF ll la
ls

ls -l

$ ls
datei.txt
datei2.dat
$ ls -l
-rw-r--r-- 1 hugo users 4711 Oct 4 11:11 datei.txt
-rw-r--r-- 1 hugo users 333 Oct 2 13:21 datei2.dat

Format der langen Darstellung


-
d

hugo
users

ls -
l
78 6 Dateien: Aufzucht und Pflege

B /tmp
ls -l /tmp ls
/tmp -d
/tmp

ls

ls

Übungen
C 6.3 /boot

C 6.4 ls
ls

C 6.5 ls

6.2.3 Verzeichnisse anlegen und löschen: mkdir und rmdir

Verzeichnisse anlegen mkdir


mkdir

-p

$ mkdir bilder/urlaub
mkdir: cannot create directory `bilder/urlaub': No such file or directory
$ mkdir -p bilder/urlaub
$ cd bilder
$ ls -F
urlaub/

Verzeichnisse löschen rmdir

mkdir

$ rmdir bilder/urlaub
$ ls -F
6.3 Suchmuster für Dateien 79

bilder/

-p

$ mkdir -p bilder/urlaub/sommer
$ rmdir bilder/urlaub/sommer
$ ls -F bilder
bilder/urlaub/
$ rmdir -p bilder/urlaub
$ ls -F bilder
ls: bilder: No such file or directory

Übungen
C 6.6 grd1-test
dir1 dir2 dir3
grd1-test/dir1
hallo hallo grd1-test/dir2
huhu huhu
dir3 rmdir
dir2 rmdir

6.3 Suchmuster für Dateien


6.3.1 Einfache Suchmuster

p
.c prog1 prog2

Suchmuster

Stern

prog1/p*.c

prog1/p1.c
prog1/paulchen.c
prog1/pop-rock.c
prog1/p.c

B echo
80 6 Dateien: Aufzucht und Pflege

$ echo prog1/p*.c

Alle Dateien *

.*

*.*
*.*

Fragezeichen

p?.c

p1.c
pa.c
p-.c
p..c

-l ls *

B
6.3 Suchmuster für Dateien 81

6.3.2 Zeichenklassen

prog[123].c

prog1.c
prog2.c
prog3.c

prog.c
prog4.c 4
proga.c a
prog12.c

Bereiche

prog[1-9].c
[A-Z]brakadabra.txt

prog[A-z].c

progQ.c progx.c prog_


.c man ascii

prog[A-Za-z].c

A
prog[A-Za-z].c

Komplement

prog[!A-Za-z].c

g .
82 6 Dateien: Aufzucht und Pflege

6.3.3 Geschweifte Klammern

{rot,gelb,blau}.txt

rot.txt gelb.txt blau.txt

kartesisches Produkt

{a,b,c}{1,2,3}.dat

a1.dat a2.dat a3.dat b1.dat b2.dat b3.dat c1.dat c2.dat c3.dat

$ mkdir -p umsatz/200{8,9}/q{1,2,3,4}

Übungen
C 6.7
prog.c prog1.c prog2.c progabc.c prog
p.txt p1.txt p21.txt p22.txt p22.dat

prog*.c prog?.c
p?*.txt p[12]* p* *.*

C 6.8 ls ls *

C 6.9

$ ls
-l datei1 datei2 datei3
$ ls *
-rw-r--r-- 1 hugo users 0 Dec 19 11:24 datei1
-rw-r--r-- 1 hugo users 0 Dec 19 11:24 datei2
-rw-r--r-- 1 hugo users 0 Dec 19 11:24 datei3

C 6.10 *
6.4 Umgang mit Dateien 83

Tabelle 6.3: cp

-b

-f
-i
-p
-R

-u

-v

6.4 Umgang mit Dateien


6.4.1 Kopieren, Verschieben und Löschen – cp und Verwandte
cp Dateien kopieren

cp
-Kopie
cp
-i

Zielverzeichnis

$ cp liste liste2
$ cp /etc/passwd .
$ ls -l
-rw-r--r-- 1 hugo users 2500 Oct 4 11:11 liste
-rw-r--r-- 1 hugo users 2500 Oct 4 11:25 liste2
-rw-r--r-- 1 hugo users 8765 Oct 4 11:26 passwd

cp liste
liste2 /etc/passwd

cp
Liste von Quelldateien

COPY *.TXT *.BAK TXT


BAK cp
*.txt *.bak

*.txt brief1.txt
brief2.txt *.bak
*.txt
*.bak

cp *.bak
cp
84 6 Dateien: Aufzucht und Pflege

cp

mv
Datei verschieben/umbenennen

mv cp

-b -f -i -u -v mv
cp

$ mv passwd liste2
$ ls -l
-rw-r--r-- 1 hugo users 2500 Oct 4 11:11 liste
-rw-r--r-- 1 hugo users 8765 Oct 4 11:26 liste2

liste2 passwd
cp mv

Löschen von Dateien rm

rm cp mv
Löschen ist endgültig!

rm *

rm -r *

A rm
-rf /
rm -rf bla *
rm -rf bla*

rm
rm -i

$ rm -i lis*
rm: remove 'liste'? n
rm: remove 'liste2'? y
$ ls -l
-rw-r--r-- 1 hugo users 2500 Oct 4 11:11 liste
6.4 Umgang mit Dateien 85

y n

B j
y

rm

-i -r cp
-v -f rm

Übungen
C 6.11 /etc/
services myservices srv.dat
/tmp

C 6.12 mv -R cp

C 6.13
-file

C 6.14
rm *
-i

$ > -i

rm *

6.4.2 Dateien verknüpfen – ln und ln -s

ln

$ ln liste liste2
$ ls -l
-rw-r--r-- 2 hugo users 2500 Oct 4 11:11 liste
-rw-r--r-- 2 hugo users 2500 Oct 4 11:11 liste2

liste2 Eine Datei mit mehreren Namen

Referenzzähler
ls -l
86 6 Dateien: Aufzucht und Pflege

ls -i

Inode-Nummern

$ ls -i
876543 liste 876543 liste2

ln

A
. ..

rm

$ rm liste
$ ls -li
876543 -rw-r--r-- 1 hugo users 2500 Oct 4 11:11 liste2

B
6.4 Umgang mit Dateien 87

B ln

mv

cp -l Link-Farm

$ mkdir prog-1.0.1
$ cp -l prog-1.0/* prog-1.0.1

B
http://www.rsnapshot.org/ http://www.dirvish.org/

ln

Symbolische Links

vi .vimrc
set backupcopy=auto,breakhardlink
88 6 Dateien: Aufzucht und Pflege

Verweise auf Verzeichnisse

/var/mail
/var/spool/mail

/var/mail
/var/spool/mail /var/mail

ln
-s

$ ln -s /var/log kurz
$ ls -l
-rw-r--r-- 1 hugo users 2500 Oct 4 11:11 liste2
lrwxrwxrwx 1 hugo users 14 Oct 4 11:40 kurz -> /var/log
$ cd kurz
$ pwd -P
/var/log

-s
ln cp -b -f -i -v

rm

$ cd
$ rm kurz
$ ls
liste2

ls -l
-L -H ls

$ mkdir dir
$ echo XXXXXXXXXX >dir/datei
$ ln -s datei dir/symlink
$ ls -l dir
insgesamt 4
-rw-r--r-- 1 hugo users 11 Jan 21 12:29 datei
lrwxrwxrwx 1 hugo users 5 Jan 21 12:29 symlink -> datei
$ ls -lL dir
-rw-r--r-- 1 hugo users 11 Jan 21 12:29 datei
-rw-r--r-- 1 hugo users 11 Jan 21 12:29 symlink
$ ls -lH dir
6.4 Umgang mit Dateien 89

-rw-r--r-- 1 hugo users 11 Jan 21 12:29 datei


lrwxrwxrwx 1 hugo users 5 Jan 21 12:29 symlink -> datei
$ ls -l dir/symlink
lrwxrwxrwx 1 hugo users 5 Jan 21 12:29 dir/symlink -> datei
$ ls -lH dir/symlink
-rw-r--r-- 1 hugo users 11 Jan 21 12:29 dir/symlink

-L -H -L

-H

cp -l cp -s cp und symbolische Links

cp -a
cp -L
cp
-P

Übungen
C 6.15
echo Hallo >~/hallo
link

C 6.16 ~/symlink

C 6.17 .. /

C 6.18
$ ls -ai /
2 . 330211 etc 1 proc 4303 var
2 .. 2 home 65153 root
4833 bin 244322 lib 313777 sbin
228033 boot 460935 mnt 244321 tmp
330625 dev 460940 opt 390938 usr

/ /home

C 6.19 . ..
/

C 6.20

C 6.21 ls -l ~
~

C 6.22 ls -lH ls -lL


90 6 Dateien: Aufzucht und Pflege

Tabelle 6.4: more

b
h
q more
/
!
v vi
Strg l

C 6.23

C 6.24

6.4.3 Dateiinhalte anzeigen – more und less


Darstellung von Textdateien more

--More--

Optionen more -s

-l -n
more
TERM
Einschränkungen more

less less

less
man
man

6.4.4 Dateien suchen – find


sowieso

find
6.4 Umgang mit Dateien 91

Tabelle 6.5: less

e j
f
y k
b
Pos1 g
Ende g
p

h
q less
/
n
?
n
!
v vi
r Strg l

find

$ find . -user hugo -print


./liste

hugo -print

-print

find

Startverzeichnis

B Ausgabe absolut oder relativ?

Verzeichnisliste

Auswahlkriterien
92 6 Dateien: Aufzucht und Pflege

Tabelle 6.6: find

-name

-iname

-user

-group
-user

-type

b
c
d
f
l
p
s
-size
c
k

-size +10k

-atime

min time

-mtime

-ctime

-perm

chmod

-perm -20

-links

-inum

mehrere Auswahlkriterien
find

$ find . \( -type d -o -name "A*" \) -print


6.4 Umgang mit Dateien 93

./.
./..
./bilder
./Abfall
$ _

Aktionen
-print -exec
-ok
Kommando ausführen
-ok -exec
-exec
-exec

-exec

-exec ;

\; find

{}

$ find . -user hugo -exec ls -l '{}' \;


-rw-r--r-- 1 hugo users 4711 Oct 4 11:11 datei.txt
$ _

hugo
ls -l

$ find . -atime +13 -exec rm -i '{}' \;

B
-exec
xargs

Tabelle 6.7: find

!
-a -a
-o -o
94 6 Dateien: Aufzucht und Pflege

$ find . -atime +13 | xargs -r rm -i

xargs

rm

\
-
r xargs rm
find

B find xargs

find -print0
-print

xargs -0

$ find . -atime +13 -print0 | xargs -0r rm -i

Übungen
C 6.25

C 6.26 find

C 6.27
/tmp

6.4.5 Dateien schnell finden – locate und slocate


find

locate

$ locate brief.txt
/home/hugo/Briefe/brief.txt
/home/hugo/Briefe/omabrief.txt
/home/hugo/Briefe/omabrief.txt~

A locate
6.4 Umgang mit Dateien 95

findutils-locate locate

* ? [ ] locate

locate *

$ locate "*/brief.t*"
/home/hugo/Briefe/brief.txt
/home/hugo/Briefe/brief.tab

B locate

$ locate Briefe/oma
/home/hugo/Briefe/omabrief.txt
/home/hugo/Briefe/omabrief.txt~

locate

updatedb

B -e locate

updatedb locate

B cron

updatedb

updatedb

updatedb

up-
datedb /etc/updatedb.conf
/etc/sysconfig/locate

B /etc/cron.daily

updatedb
96 6 Dateien: Aufzucht und Pflege

B
updatedb

updatedb root

updatedb
nobody
nobody

B slocate locate

slocate
slocate updatedb
slocate

B slocate lo-
cate

Übungen
C 6.28 README
README

C 6.29
locate

updatedb
locate

C 6.30 slocate
/etc/shadow
6.4 Umgang mit Dateien 97

Kommandos in diesem Kapitel


cd bash 75
convmv convmv 73
cp cp 82
find
find find 90
less less 90
ln “ ln 85

locate
locate 94
ls ls 76
mkdir mkdir 78
more more 90
mv
mv 84
pwd
pwd bash 76
rm rm 84
rmdir rmdir 78
slocate
slocate 96
updatedb locate updatedb 95
xargs
xargs find 93

Zusammenfassung

cd pwd

ls
mkdir rmdir
cp mv rm

ln
more less

find
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

7
Reguläre Ausdrücke

Inhalt

grep

Lernziele

grep fgrep egrep

Vorkenntnisse

grd1-regex.tex (a13e1ba7ab759bab)
100 7 Reguläre Ausdrücke

7.1 Reguläre Ausdrücke: Die Grundlagen

Zeichen
a
a abc abc
Zeichenklassen
[a-e] a e
a[xy]b axb ayb
[A-Za-z]
Komplement
[^abc] a b c
[!abc] .

\n a.c abc a/c

a
c

Anker
Zeilenanfang ^
$
Zeilenende
xyz$ xyz
xyz\n$

B ^ $

*
Wiederholung

a*.txt
^a.*\.txt$

Vorrang ab* a
b
ab
7.2 Reguläre Ausdrücke: Extras 101

7.2 Reguläre Ausdrücke: Extras

Erweiterungen

\<

\>

( )
a(bc)* a
bc abc*
ab c

Affen(brot|schwanz|kletter)baum
Affenbrotbaum Affenschwanzbaum Affenkletterbaum

?
Boot(smann)?
Boot Bootsmann

+
*

ab{2,4} abb abbb abbbb ab


abbbbb

(ab)\1
abab (ab*a)x\1 ab-
ba abbaxabba
grep

* + ?

^a.*a abacada abacada


aba abaca
*? +? ??
^a.*?a aba
102 7 Reguläre Ausdrücke

Tabelle 7.1:

grep egrep egrep vim emacs

\ ab\+
ab+
\= ?

Tabelle 7.2: grep

-c
-i
-l
-n
-r
-v

7.3 Dateien nach Textteilen durchsuchen – grep

grep

grep-Versionen grep fgrep

egrep

B
grep egrep

grep

Syntax grep

grep

regulärer Ausdruck

\+ \? \{
7.3 Dateien nach Textteilen durchsuchen – grep 103

grep egrep

A
grep

-f Regulärer Ausdruck in Datei

fgrep
egrep

grep Beispiele
frosch.txt
Frosch

$ grep Frosch frosch.txt


Der Froschkönig oder der eiserne Heinrich
Sie sah sich um, woher die Stimme käme, da erblickte sie einen Frosch,
»Sei still und weine nicht«, antwortete der Frosch, »ich kann wohl Rat
»Was du haben willst, lieber Frosch«, sagte sie, »meine Kleider, meine

Frosch
Froschkönig

$ grep '\<Frosch\>' frosch.txt


Sie sah sich um, woher die Stimme käme, da erblickte sie einen Frosch,
»Sei still und weine nicht«, antwortete der Frosch, »ich kann wohl Rat
»Was du haben willst, lieber Frosch«, sagte sie, »meine Kleider, meine
Der Frosch antwortete: »Deine Kleider, deine Perlen und Edelsteine und

Frosch

$ grep ^Frosch frosch.txt


Frosch mag schwätzen, was er will, der sitzt doch im Wasser bei
Frosch.«
Frosch verwandelt worden war, daß er drei eiserne Bänder um sein Herz

/usr/share/dict/words

$ grep -n 'a.*a.*a' /usr/share/dict/words


8:aardvark
21:abaca
22:abacate
104 7 Reguläre Ausdrücke

234831:zygomaticoauricularis
234832:zygomaticofacial
234834:zygomaticomaxillary

B
grep
--color

$ grep --color root /etc/passwd


root:x:0:0:root:/root:/bin/bash

export GREP_OPTIONS='--color=auto' ~/.profile


auto

Übungen
C 7.1 ? +

C 7.2 frosch.txt

C 7.3 /etc/passwd

grep

C 7.4 /usr/share/dict/words
a e i o u

C 7.5

Kommandos in diesem Kapitel


egrep
grep 102
fgrep
fgrep 102
grep grep 101

Zusammenfassung

grep
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

8
Standardkanäle und
Filterkommandos

Inhalt

cat tac
head tail
od hexdump

tr expand unexpand
fmt pr

sort uniq
cut paste

Lernziele

Vorkenntnisse

grd1-filter.tex (a13e1ba7ab759bab)
106 8 Standardkanäle und Filterkommandos

Tabelle 8.1:

stdin
stdout
stderr

8.1 Ein-/Ausgabeumlenkung und Kommandopipelines


8.1.1 Die Standardkanäle
grep

$ grep xyz

grep

$ grep xyz
abc def
xyz 123
xyz 123
aaa bbb
YYYxyzZZZ
YYYxyzZZZ
Strg + d

grep

Standard-Eingabe grep
Standard-Ausgabe

Standard-Fehlerausgabe
grep

Standardkanäle
stdin stdout
8.1 Ein-/Ausgabeumlenkung und Kommandopipelines 107

Bild 8.1:

stderr

Standardkanäle umleiten

/dev/
tty

$ grep xyz /dev/tty

8.1.2 Standardkanäle umleiten


> Standard-Ausgabe umleiten
ls -laF
inhalt

$ ls -laF >inhalt
$ _

inhalt
108 8 Standardkanäle und Filterkommandos

inhalt

Existierende Dateien schützen B


set -o no-
clobber

inhalt less

$ less inhalt
total 7
drwxr-xr-x 12 hugo users 1024 Aug 26 18:55 ./
drwxr-xr-x 5 root root 1024 Aug 13 12:52 ../
drwxr-xr-x 3 hugo users 1024 Aug 20 12:30 fotos/
-rw-r--r-- 1 hugo users 0 Sep 6 13:50 inhalt
-rw-r--r-- 1 hugo users 15811 Aug 13 12:33 pingu.gif
-rw-r--r-- 1 hugo users 14373 Aug 13 12:33 hobby.txt
-rw-r--r-- 2 hugo users 3316 Aug 20 15:14 chemie.txt

inhalt
inhalt

inhalt
ls
ls inhalt

B ls ls
inhalt

ls

ls
inhalt

Standardausgabe
an Datei anhängen
>>

$ date >> inhalt


$ less inhalt
total 7
drwxr-xr-x 12 hugo users 1024 Aug 26 18:55 ./
drwxr-xr-x 5 root root 1024 Aug 13 12:52 ../
drwxr-xr-x 3 hugo users 1024 Aug 20 12:30 fotos/
-rw-r--r-- 1 hugo users 0 Sep 6 13:50 inhalt
-rw-r--r-- 1 hugo users 15811 Aug 13 12:33 pingu.gif
-rw-r--r-- 1 hugo users 14373 Aug 13 12:33 hobby.txt
-rw-r--r-- 2 hugo users 3316 Aug 20 15:14 chemie.txt
Wed Oct 22 12:31:29 CEST 2003

inhalt

` `
Kommandosubstitution
8.1 Ein-/Ausgabeumlenkung und Kommandopipelines 109

$ cat termine
22.12. Geschenke besorgen
23.12. Christbaum besorgen
24.12. Heiligabend
$ date +%d.%m.
23.12.
$ grep ^`date +%d.%m.` termine
23.12. Christbaum besorgen

B
`date` $(date)

< Standard-Eingabe umleiten

$ wc -w <frosch.txt
1255

wc frosch.txt

B <<

cat

$ cat datei1 datei2 datei3 | wc -w

B <<

$ grep Linux <<ENDE


Rosen sind rot,
Veilchen sind blau,
Linux ist super,
das weiß ich genau.
ENDE

grep
ENDE

Linux ist super,

` ` $( )
110 8 Standardkanäle und Filterkommandos

$ cat <<EOF
Heutiges Datum: `date`
EOF

$ cat <<"EOF"
Heutiges Datum: `date`
EOF

<< <<-

kombinierte Umleitung

wortzahl

$ wc -w <frosch.txt >wortzahl
$ cat wortzahl
1255

Standard-Fehler-Kanal

stdin
0< stdout 1> stderr 2>
>&

make >make.log 2>&1

ma-
ke make.log

make >make.log 2>&1


make 2>&1 >make.log

/dev/tty
make.log

Übungen
C 8.1 -U ls
ls -laU
>inhalt inhalt

C 8.2 ls /tmp ls /tmp


>ls-tmp.txt
ls-tmp.txt
8.1 Ein-/Ausgabeumlenkung und Kommandopipelines 111

C 8.3
grep xyz datei >datei

C 8.4 cat bla >>bla


bla

C 8.5

8.1.3 Kommando-Pipelines

Pipes

direkte Verknüpfung mehrerer


| Befehle
ls Pipeline
-laF inhalt less

$ ls -laF | less
total 7
drwxr-xr-x 12 hugo users 1024 Aug 26 18:55 ./
drwxr-xr-x 5 root root 1024 Aug 13 12:52 ../
drwxr-xr-x 3 hugo users 1024 Aug 20 12:30 fotos/
-rw-r--r-- 1 hugo users 449 Sep 6 13:50 inhalt
-rw-r--r-- 1 hugo users 15811 Aug 13 12:33 pingu.gif
-rw-r--r-- 1 hugo users 14373 Aug 13 12:33 hobby.txt
-rw-r--r-- 2 hugo users 3316 Aug 20 15:14 chemie.txt

$ cut -d: -f1 /etc/passwd | sort | pr -2 >userlst

/etc/passwd
:
userlst

Zwischenergebnis abspeichern
tee

tee
-a

$ ls -laF | tee liste | less


total 7
drwxr-xr-x 12 hugo users 1024 Aug 26 18:55 ./
112 8 Standardkanäle und Filterkommandos

Bild 8.2: tee

drwxr-xr-x 5 root root 1024 Aug 13 12:52 ../


drwxr-xr-x 3 hugo users 1024 Aug 20 12:30 fotos/
-rw-r--r-- 1 hugo users 449 Sep 6 13:50 inhalt
-rw-r--r-- 1 hugo users 15811 Aug 13 12:33 pingu.gif
-rw-r--r-- 1 hugo users 14373 Aug 13 12:33 hobby.txt
-rw-r--r-- 2 hugo users 3316 Aug 20 15:14 chemie.txt

liste liste
ls tee

Übungen
C 8.6

8.2 Filterkommandos
Werkzeugkastenprinzip

sort

sort

Filterkommandos

Strg
d
8.3 Dateien lesen und ausgeben 113

Tabelle 8.2: cat

-b

-E $

-n

-s
-T ^I
-v ^
M-
-A -vET

B
Strg d

Strg z

grep

8.3 Dateien lesen und ausgeben


8.3.1 Textdateien ausgeben und aneinanderhängen – cat und tac
cat Dateien verketten

cat
cat

B cat Textdateien

/bin/cat

reset
cat

B cat cat
cat

cat
cat
114 8 Standardkanäle und Filterkommandos

Tabelle 8.3: tac

-b

-r

-s \n

data.txt | grep bla grep bla data.txt


grep
grep bla <data.txt cat

Zeilen in umgekehrter tac cat


Reihenfolge ausgeben

$ tac <<ENDE
Alpha
Beta
Gamma
ENDE
Gamma
Beta
Alpha

tac
cat
Trenner -s tac

$ echo A:B:C:D | tac -s :


D
C:B:A:$ _

A: B: C: D\n :
\n
echo
D\n

-b

tac -s : -b

:D
:C:BA$ _
8.3 Dateien lesen und ausgeben 115

Übungen
C 8.7

8.3.2 Anfang und Ende von Dateien – head und tail

head tail

-n
head -n 20
tail -n 5 daten.txt daten.txt

B
-
head tail

-c
head -c 20
b k m

B head head -c -20

B tail head
+

$ tail -n +3 datei

tail -f
tail

tail -f

Übungen
C 8.8

C 8.9 tail -f
tail -f
echo >>…
tail
tail

C 8.10 tail -f

C 8.11
$ echo Hallo >/tmp/hallo
$ echo "Huhu Welt" >/tmp/hallo
116 8 Standardkanäle und Filterkommandos

Tabelle 8.4: od

-A d o x
n
-j

-N
-t -t
-t
a c d
f o u x

a c

od
z

-v
-w

echo

$ tail -f /tmp/hallo

8.3.3 Mit der Lupe – od und hexdump


cat tac head tail

od od

od

$ od /etc/passwd | head -3
0000000 067562 072157 074072 030072 030072 071072 067557 035164
0000020 071057 067557 035164 061057 067151 061057 071541 005150
0000040 060563 064163 067562 072157 074072 030072 030072 071072
$ _

Zeilenformat

od
Option -t -
t od

$ od -txC /etc/passwd
0000000 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72 6f 6f 74 3a
0000020 2f 72 6f 6f 74 3a 2f 62 69 6e 2f 62 61 73 68 0a
8.3 Dateien lesen und ausgeben 117

0000040 73 61 73 68 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72

x
C
z

$ od -txCz /etc/passwd
0000000 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72 6f 6f 74 3a >root:x:0:0:root:<
0000020 2f 72 6f 6f 74 3a 2f 62 69 6e 2f 62 61 73 68 0a >/root:/bin/bash.<
0000040 73 61 73 68 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72 >sashroot:x:0:0:r<

0a
.
mehrere Typangaben
-t

$ od -txCc /etc/passwd
0000000 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72 6f 6f 74 3a
r o o t : x : 0 : 0 : r o o t :
0000020 2f 72 6f 6f 74 3a 2f 62 69 6e 2f 62 61 73 68 0a
/ r o o t : / b i n / b a s h \n
0000040 73 61 73 68 72 6f 6f 74 3a 78 3a 30 3a 30 3a 72
s a s h r o o t : x : 0 : 0 : r

od -txC -tc /etc/passwd


identische Ausgabezeilen
*

$ od -tx -N 64 /dev/zero
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0000100

/dev/zero od -N
-v

$ od -tx -N 64 -v /dev/zero
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000100

hexdump hd hexdump
od

$ hexdump -o -s 446 -n 64 /etc/passwd

od
od hexdump
hexdump od hexdump
Ausgabeformate
od
118 8 Standardkanäle und Filterkommandos

$ cat hexdump.txt
0123456789ABC XYZabc xyz
$ hexdump -e '"%x-« hexdump.txt
33323130-37363534- -a7a79-$

"%x"
30
0 -

hexdump

hexdump

printf
awk printf

hexdump
printf

$ hexdump -e '"%10x-"' hexdump.txt


33323130- 37363534- a7a79-$

Wiederholungszahl

$ hexdump -e '4 "%x-" "\n"' hexdump.txt


33323130-37363534-42413938-46454443-
4a494847-4e4d4c4b-5251504f-56555453-
5a595857-64636261-68676665-6c6b6a69-
706f6e6d-74737271-78777675-a7a79-

4
"%x"-
Zeilentrenner "\n" hexdump

Byteanzahl

$ hexdump -e '/2 "%x-" "\n"' hexdump.txt


3130-
3332-

7a79-
a-

/2 1/2 %x
8.4 Textbearbeitung 119

Tabelle 8.5: tr

-c
-d
-s

$ hexdump -e '4/2 "%x-" "\n"' hexdump.txt


3130-3332-3534-3736-
3938-4241-4443-4645-

7675-7877-7a79-a-

$ hexdump -e '"%2_ad" "%2.2s" 3/2 " %x" " %1.1s" "\n"'⇤


hexdump.txt
0 01 3332 3534 3736 8
9 9A 4342 4544 4746 H

"%2.2s"
3/2 " %x"
"%1.1s"
"%2_ad"

Übungen
C 8.12 a c
od

C 8.13 /dev/random
od /dev/random r

8.4 Textbearbeitung
8.4.1 Zeichen für Zeichen – tr, expand und unexpand
tr
tr

tr Austauschoperationen
120 8 Standardkanäle und Filterkommandos

Tabelle 8.6: tr

\a
\b
\f
\n
\r
\t
\v
\
\\
[ * ]
[ *]
[:alnum:]
[:alpha:]
[:blank:]
[:cntrl:]
[:digit:]
[:graph:]
[:lower:]
[:print:]
[:punct:]
[:space:]
[:upper:]
[:xdigit:] 0 9 A F a f
[: :]

$ tr AEiü aey <bsp.txt >neu1.txt

bsp.txt
neu1.txt

Bereiche -
-c
Komplement

$ tr -c A-Za-z ' ' <bsp.txt >neu1.txt

bsp.txt

Zeichenklassen B [: :]

[:alpha:]
A-Za-z

tr info tr

Löschen von Zeichen

$ tr -d a-z <bsp.txt >neu2.txt


8.4 Textbearbeitung 121

bsp.txt

$ tr -s '\n' <bsp.txt >neu3.txt

-s »squeeze«

-s
bsp.txt neu3.txt

$ tr -s AE Ä <bsp.txt >neu3.txt

Tabulator

Tab
Tab

Tab

expand Tabulatorzeichen expandieren

-t

-t 4

B -t
expand -t
4,12,32

B -i

unexpand Leerzeichen durch Tabulatorzei-


expand chen ersetzen

-a

Übungen
C 8.14
122 8 Standardkanäle und Filterkommandos

tr

C 8.15 tr

DREI CHINESEN MIT DEM KONTRABASS


DRAA CHANASAN MAT DAM KANTRABASS

C 8.16

C 8.17 tr a z
-

C 8.18 unexpand

8.4.2 Zeile für Zeile – fmt, pr und so weiter

Zeilenumbruch fmt

-w

fmt frosch0.txt
frosch.txt

$ head frosch0.txt
Der Froschkönig oder der eiserne Heinrich

In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so
schön, daß die Sonne selber, die doch so vieles schon gesehen hat,
sich verwunderte, sooft sie ihr ins Gesicht schien.

Nahe bei dem Schlosse war ein großer, dunkler Wald, und mitten darin,
unter einer alten Linde, war ein Brunnen. Wenn nun der Tag recht heiß war,
ging die jüngste Prinzessin hinaus in den Wald und setzte sich an den Rand

$ fmt -w 40 frosch0.txt
Der Froschkönig oder der eiserne
Heinrich

In alten Zeiten, als das Wünschen


noch geholfen hat, lebte einmal ein
König, der hatte wunderschöne
Töchter. Die jüngste von ihnen war
so schön, daß die Sonne selber, die
doch so vieles schon gesehen hat,
sich verwunderte, sooft sie ihr ins
8.4 Textbearbeitung 123

fmt

B fmt

fmt
. ? !

B fmt
fmt

-c

$ fmt -c -w 40 frosch0.txt
Der Froschkönig oder der eiserne
Heinrich

In alten Zeiten, als das Wünschen


noch geholfen hat, lebte einmal
ein König, der hatte wunderschöne
Töchter. Die jüngste von ihnen war
so schön, daß die Sonne selber, die
doch so vieles schon gesehen hat,
sich verwunderte, sooft sie ihr ins

$ fmt -w 100 frosch0.txt


Der Froschkönig oder der eiserne Heinrich

In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so schön, daß die Sonne selber,
die doch so vieles schon gesehen hat, sich verwunderte, sooft sie ihr ins Gesicht schien.

Nahe bei dem Schlosse war ein großer, dunkler Wald, und mitten darin,
unter einer alten Linde, war ein Brunnen. Wenn nun der Tag recht heiß war, ging die jüngste

-c

pr

lpr pr
124 8 Standardkanäle und Filterkommandos

Tabelle 8.7: pr

-h
-l
-n

-o
-t
-w

pr

pr

$ fmt -w 34 frosch.txt | pr -h "Grimms Märchen" -2

2003-10-20 21:03 Grimms Märchen Seite 1

Der Froschkönig oder der eiserne antwortete der Frosch, >>ich kann
Heinrich wohl Rat schaffen. Aber was gibst
du mir, wenn ich dein Spielzeug
In alten Zeiten, als das Wünschen wieder heraufhole?«
noch geholfen hat, lebte einmal
ein König, der hatte wunderschöne >>Was du haben willst, lieber
Töchter. Die jüngste von ihnen war Frosch«, sagte sie, >>meine
so schön, daß die Sonne selber, Kleider, meine Perlen und
die doch so vieles schon gesehen Edelsteine, auch noch die goldene
hat, sich verwunderte, sooft sie Krone, die ich trage.«
ihr ins Gesicht schien.

fmt
pr

Zeilennumerierung nl

$ nl frosch.txt
1 Der Froschkönig oder der eiserne Heinrich

2 In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
3 König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so
4 schön, daß die Sonne selber, die doch so vieles schon gesehen hat,
5 sich verwunderte, sooft sie ihr ins Gesicht schien.

6 Nahe bei dem Schlosse war ein großer, dunkler Wald, und mitten darin,
8.4 Textbearbeitung 125

Tabelle 8.8: nl

-b
a t n
p

t
-d \:
:
-f
-b n
-h -f
-i
-n ln
rn
rz
-p

-v
-w

cat -b
nl

$ nl -b a -n rz -w 5 -v 1000 -i 10 frosch.txt
01000 Der Froschkönig oder der eiserne Heinrich
01010
01020 In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
01030 König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so
01040 schön, daß die Sonne selber, die doch so vieles schon gesehen hat,
01050 sich verwunderte, sooft sie ihr ins Gesicht schien.
01060
01070 Nahe bei dem Schlosse war ein großer, dunkler Wald, und mitten darin,
01080 unter einer alten Linde, war ein Brunnen. Wenn nun der Tag recht heiß war,
01090 ging die jüngste Prinzessin hinaus in den Wald und setzte sich an den Rand

-
b a
-n rz
-w 5 -v 1000
-i 10

nl Zeilennummern pro Seite


\:\:\: \:\: \:

$ cat nl-test
\:\:\:
Kopf der ersten Seite
\:\:
Erste Zeile der ersten Seite
Zweite Zeile der ersten Seite
Letzte Zeile der ersten Seite
\:
126 8 Standardkanäle und Filterkommandos

Tabelle 8.9: wc

-l
-w
-c

Fuß der ersten Seite


\:\:\:
Kopf der zweiten Seite
(Zwei Zeilen hoch)
\:\:
Erste Zeile der zweiten Seite
Zweite Zeile der zweiten Seite
Vorletzte Zeile der zweiten Seite
Letzte Zeile der zweiten Seite
\:
Fuß der zweiten Seite
(Zwei Zeilen hoch)

Kopf- und Fußbereiche


\:\:\:
\:\:
\:
nl

$ nl nl-test

Kopf der ersten Seite

1 Erste Zeile der ersten Seite


2 Zweite Zeile der ersten Seite
3 Letzte Zeile der ersten Seite

Fuß der ersten Seite

Kopf der zweiten Seite


(Zwei Zeilen hoch)

1 Erste Zeile der zweiten Seite


2 Zweite Zeile der zweiten Seite
3 Vorletzte Zeile der zweiten Seite
4 Letzte Zeile der zweiten Seite

Fuß der zweiten Seite


(Zwei Zeilen hoch)

\:

wc
Zeilen, Wörter, Zeichen zählen

wc
8.5 Datenverwaltung 127

$ wc frosch.txt
159 1255 7406 frosch.txt

wc

$ ls | wc -l
13
$ _

wc ls

Übungen
C 8.19 frosch.txt

C 8.20

159 Der Froschkönig oder der eiserne Heinrich


158
157 In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
156 König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so

C 8.21 wc a.txt
b.txt c.txt cat a.txt b.txt c.txt | wc

8.5 Datenverwaltung
8.5.1 Sortierte Dateien – sort und uniq
sort
Standardeinstellung

B sort
LANG LC_ALL
LC_COLLATE de de_DE de_DE.UTF-8

sort

$ … | LC_COLLATE=de_DE.UTF-8 sort
128 8 Standardkanäle und Filterkommandos

LC_ALL LC_COLLATE
LANG

sort
Sortieren in Feldern

-k 2

-k 2,3
-k 2,2
-k

B sort

+ -

+1 +1 -3
+1 -2

Trennmarkierung

POSIX

$ unset LANG LC_ALL LC_COLLATE


$ cat teilnehmer.dat
Schulz Hugo SV Schnaufenberg 123 Herren
Schleicher Detlef TSV Lahmhausen 13 Herren
Flöttmann Fritz Sportfreunde Renntal 217 Herren
Springinsfeld Karlheinz TV Jahnstein 154 Herren
von Traben Gesine TV Jahnstein 26 Damen
Rasbichel Ulla TSV Lahmhausen 117 Damen
Schwitz Sieglinde Sportfreunde Renntal 93 Damen
Rasbichel Katja TSV Lahmhausen 119 Damen
Langbein Leni SV Schnaufenberg 55 Damen
Zielinger Hannes TV Jahnstein 45 Herren
Fluschinsky Käthe Sportfreunde Renntal 57 Damen

$ sort teilnehmer.dat
Fluschinsky Käthe Sportfreunde Renntal 57 Damen
Flöttmann Fritz Sportfreunde Renntal 217 Herren
Langbein Leni SV Schnaufenberg 55 Damen
Rasbichel Katja TSV Lahmhausen 119 Damen
Rasbichel Ulla TSV Lahmhausen 117 Damen
Schleicher Detlef TSV Lahmhausen 13 Herren
8.5 Datenverwaltung 129

Schulz Hugo SV Schnaufenberg 123 Herren


Schwitz Sieglinde Sportfreunde Renntal 93 Damen
Springinsfeld Karlheinz TV Jahnstein 154 Herren
Zielinger Hannes TV Jahnstein 45 Herren
von Traben Gesine TV Jahnstein 26 Damen

$ LC_COLLATE=de_DE sort teilnehmer.dat


Flöttmann Fritz Sportfreunde Renntal 217 Herren
Fluschinsky Käthe Sportfreunde Renntal 57 Damen
Langbein Leni SV Schnaufenberg 55 Damen
Rasbichel Katja TSV Lahmhausen 119 Damen
Rasbichel Ulla TSV Lahmhausen 117 Damen
Schleicher Detlef TSV Lahmhausen 13 Herren
Schulz Hugo SV Schnaufenberg 123 Herren
Schwitz Sieglinde Sportfreunde Renntal 93 Damen
Springinsfeld Karlheinz TV Jahnstein 154 Herren
von Traben Gesine TV Jahnstein 26 Damen
Zielinger Hannes TV Jahnstein 45 Herren

$ sort -k 2,2 teilnehmer.dat


Schulz Hugo SV Schnaufenberg 123 Herren
Schwitz Sieglinde Sportfreunde Renntal 93 Damen
Langbein Leni SV Schnaufenberg 55 Damen
Flöttmann Fritz Sportfreunde Renntal 217 Herren
Zielinger Hannes TV Jahnstein 45 Herren
Rasbichel Katja TSV Lahmhausen 119 Damen
Rasbichel Ulla TSV Lahmhausen 117 Damen
Schleicher Detlef TSV Lahmhausen 13 Herren
Fluschinsky Käthe Sportfreunde Renntal 57 Damen
Springinsfeld Karlheinz TV Jahnstein 154 Herren
von Traben Gesine TV Jahnstein 26 Damen

sort

-b

$ sort -b -k 2,2 teilnehmer.dat


Schleicher Detlef TSV Lahmhausen 13 Herren
Flöttmann Fritz Sportfreunde Renntal 217 Herren
Zielinger Hannes TV Jahnstein 45 Herren
Schulz Hugo SV Schnaufenberg 123 Herren
Springinsfeld Karlheinz TV Jahnstein 154 Herren
Rasbichel Katja TSV Lahmhausen 119 Damen
Fluschinsky Käthe Sportfreunde Renntal 57 Damen
Langbein Leni SV Schnaufenberg 55 Damen
Schwitz Sieglinde Sportfreunde Renntal 93 Damen
von Traben Gesine TV Jahnstein 26 Damen
Rasbichel Ulla TSV Lahmhausen 117 Damen
130 8 Standardkanäle und Filterkommandos

Tabelle 8.10: sort

-b
-d

-f
-i
-k ,
-n

-o datei

-r
-t
-u

-b

genauere Feldbestimmung

$ sort -br -k 2.2 teilnehmer.dat


Fluschinsky Käthe Sportfreunde Renntal 57 Damen
Schulz Hugo SV Schnaufenberg 123 Herren
Flöttmann Fritz Sportfreunde Renntal 217 Herren
von Traben Gesine TV Jahnstein 26 Damen
Rasbichel Ulla TSV Lahmhausen 117 Damen
Schwitz Sieglinde Sportfreunde Renntal 93 Damen
Schleicher Detlef TSV Lahmhausen 13 Herren
Langbein Leni SV Schnaufenberg 55 Damen
Rasbichel Katja TSV Lahmhausen 119 Damen
Springinsfeld Karlheinz TV Jahnstein 154 Herren
Zielinger Hannes TV Jahnstein 45 Herren

teilnehmer.dat -r

-b

-t
andere Trennzeichen

Schulz:Hugo:SV Schnaufenberg:123:Herren
Schleicher:Detlef:TSV Lahmhausen:13:Herren
Flöttmann:Fritz:Sportfreunde Renntal:217:Herren
Springinsfeld:Karlheinz:TV Jahnstein:154:Herren
von Traben:Gesine:TV Jahnstein:26:Damen
Rasbichel:Ulla:TSV Lahmhausen:117:Damen
Schwitz:Sieglinde:Sportfreunde Renntal:93:Damen
Rasbichel:Katja:TSV Lahmhausen:119:Damen
8.5 Datenverwaltung 131

Langbein:Leni:SV Schnaufenberg:55:Damen
Zielinger:Hannes:TV Jahnstein:45:Herren
Fluschinsky:Käthe:Sportfreunde Renntal:57:Damen

LC_COLLATE=de_DE sort -t: -


k2,2

$ sort -t: -k4 teilnehmer0.dat


Rasbichel:Ulla:TSV Lahmhausen:117:Damen
Rasbichel:Katja:TSV Lahmhausen:119:Damen
Schulz:Hugo:SV Schnaufenberg:123:Herren
Schleicher:Detlef:TSV Lahmhausen:13:Herren
Springinsfeld:Karlheinz:TV Jahnstein:154:Herren
Flöttmann:Fritz:Sportfreunde Renntal:217:Herren
von Traben:Gesine:TV Jahnstein:26:Damen
Zielinger:Hannes:TV Jahnstein:45:Herren
Langbein:Leni:SV Schnaufenberg:55:Damen
Fluschinsky:Käthe:Sportfreunde Renntal:57:Damen
Schwitz:Sieglinde:Sportfreunde Renntal:93:Damen

-n
numerischer Vergleich

$ sort -t: -k4 -n teilnehmer0.dat


Schleicher:Detlef:TSV Lahmhausen:13:Herren
von Traben:Gesine:TV Jahnstein:26:Damen
Zielinger:Hannes:TV Jahnstein:45:Herren
Langbein:Leni:SV Schnaufenberg:55:Damen
Fluschinsky:Käthe:Sportfreunde Renntal:57:Damen
Schwitz:Sieglinde:Sportfreunde Renntal:93:Damen
Rasbichel:Ulla:TSV Lahmhausen:117:Damen
Rasbichel:Katja:TSV Lahmhausen:119:Damen
Schulz:Hugo:SV Schnaufenberg:123:Herren
Springinsfeld:Karlheinz:TV Jahnstein:154:Herren
Flöttmann:Fritz:Sportfreunde Renntal:217:Herren

sort

sort

uniq Kommando uniq

uniq

uniq
uniq
uniq

$ cat uniq-test
Hipp
Hopp
132 8 Standardkanäle und Filterkommandos

Hopp
Hipp
Hipp
Hopp
$ uniq uniq-test
Hipp
Hopp
Hipp
Hopp

sort -u

$ sort -u uniq-test
Hipp
Hopp

Übungen
C 8.22 teilnehmer0.dat

C 8.23

C 8.24

C 8.25
01-2002.txt 01-2003.txt 02-2002.txt 02-2003.txt
03-2002.txt 03-2003.txt 04-2002.txt 04-2003.txt

11-2002.txt 11-2003.txt 12-2002.txt 12-2003.txt

sort ls

01-2002.txt
02-2002.txt

12-2002.txt
01-2003.txt

12-2003.txt

C 8.26

8.5.2 Spalten und Felder – cut, paste & Co.


grep
Spalten ausschneiden cut

absolute Spalten
8.5 Datenverwaltung 133

-c

$ cut -c 15,1-5 teilnehmer.dat


SchulH
SchleD
FlöttF
SprinK
von TG

$ cut -c 1-5,2-6,3-7 teilnehmer.dat


Schulz
Schleic
Flöttma
Springi
von Tra

Felder ausschneiden

cut -f

-c -f
Trenner
-d

$ cut -d: -f 1,4 teilnehmer0.dat


Schulz:123
Schleicher:13
Flöttmann:217
Springinsfeld:154
von Traben:26
Rasbichel:117

B --output-delimiter

$ cut -d: --output-delimiter=': ' -f 1,4 teilnehmer0.dat


Schulz: 123
Schleicher: 13
Flöttmann: 217
134 8 Standardkanäle und Filterkommandos

Springinsfeld: 154
von Traben: 26
Rasbichel: 117

B
awk perl
paste

Unterdrückung von -s
Zeilen ohne Felder cut -f
-s

Dateien zeilenwei- paste


se zusammenfügen cut
paste
paste

Dateien parallel durchlaufen paste

Trennzeichen
-d

$ cut -d: -f4 teilnehmer0.dat >startnr.dat


$ cut -d: -f1-3,5 teilnehmer0.dat \
> | paste -d: startnr.dat - >tn-startnr.dat
$ cat tn-startnr.dat
123:Schulz:Hugo:SV Schnaufenberg:Herren
13:Schleicher:Detlef:TSV Lahmhausen:Herren
217:Flöttmann:Fritz:Sportfreunde Renntal:Herren
154:Springinsfeld:Karlheinz:TV Jahnstein:Herren
26:von Traben:Gesine:TV Jahnstein:Damen
117:Rasbichel:Ulla:TSV Lahmhausen:Damen
93:Schwitz:Sieglinde:Sportfreunde Renntal:Damen
119:Rasbichel:Katja:TSV Lahmhausen:Damen
55:Langbein:Leni:SV Schnaufenberg:Damen
45:Zielinger:Hannes:TV Jahnstein:Herren
57:Fluschinsky:Käthe:Sportfreunde Renntal:Damen

sort -n tn-startnr.dat

Dateien nachein- -s
ander durchlaufen

$ cat liste1
Hund
Katze
Maus
$ cat liste2
Ei
Blut
Kakao
8.5 Datenverwaltung 135

Tabelle 8.11: join

-j1 -1

-j2
-2
-j -j1 -j2
-o
0
0

-t

$ paste -s liste*
Hund Katze Maus
Ei Blut Kakao

liste*
liste1 liste2 paste -s

join »Relationales« Zusammenfügen


paste von Dateien

join

join Beispiel

zeiten.dat

$ cat zeiten.dat
45:8445
123:8517
217:8533
93:8641
154:8772
119:8830
13:8832
117:8954
57:9111
26:9129

$ sort -n zeiten.dat >zeiten-s.dat

zeiten-s.dat
join
136 8 Standardkanäle und Filterkommandos

paste join

$ cat tn-startnr.dat
123:Schulz:Hugo:SV Schnaufenberg:Herren
13:Schleicher:Detlef:TSV Lahmhausen:Herren
217:Flöttmann:Fritz:Sportfreunde Renntal:Herren
154:Springinsfeld:Karlheinz:TV Jahnstein:Herren
26:von Traben:Gesine:TV Jahnstein:Damen
117:Rasbichel:Ulla:TSV Lahmhausen:Damen
93:Schwitz:Sieglinde:Sportfreunde Renntal:Damen
119:Rasbichel:Katja:TSV Lahmhausen:Damen
55:Langbein:Leni:SV Schnaufenberg:Damen
45:Zielinger:Hannes:TV Jahnstein:Herren
57:Fluschinsky:Käthe:Sportfreunde Renntal:Damen
$ sort -n tn-startnr.dat \
> | join -t: zeiten-s.dat - >tn-zeiten.dat
$ cat tn-zeiten.dat
13:8832:Schleicher:Detlef:TSV Lahmhausen:Herren
26:9129:von Traben:Gesine:TV Jahnstein:Damen
45:8445:Zielinger:Hannes:TV Jahnstein:Herren
57:9111:Fluschinsky:Käthe:Sportfreunde Renntal:Damen
93:8641:Schwitz:Sieglinde:Sportfreunde Renntal:Damen
117:8954:Rasbichel:Ulla:TSV Lahmhausen:Damen
119:8830:Rasbichel:Katja:TSV Lahmhausen:Damen
123:8517:Schulz:Hugo:SV Schnaufenberg:Herren
154:8772:Springinsfeld:Karlheinz:TV Jahnstein:Herren
217:8533:Flöttmann:Fritz:Sportfreunde Renntal:Herren

tn-zeiten.dat

$ sort -t: -k2,2 tn-zeiten.dat


45:8445:Zielinger:Hannes:TV Jahnstein:Herren
123:8517:Schulz:Hugo:SV Schnaufenberg:Herren
217:8533:Flöttmann:Fritz:Sportfreunde Renntal:Herren
93:8641:Schwitz:Sieglinde:Sportfreunde Renntal:Damen
154:8772:Springinsfeld:Karlheinz:TV Jahnstein:Herren
119:8830:Rasbichel:Katja:TSV Lahmhausen:Damen
13:8832:Schleicher:Detlef:TSV Lahmhausen:Herren
117:8954:Rasbichel:Ulla:TSV Lahmhausen:Damen
57:9111:Fluschinsky:Käthe:Sportfreunde Renntal:Damen
26:9129:von Traben:Gesine:TV Jahnstein:Damen

Übungen
C 8.27 teilnehmer.dat

C 8.28 teilnehmer0.dat
8.5 Datenverwaltung 137

C 8.29 teilnehmer0.dat
,␣

C 8.30

/etc/passwd

Kommandos in diesem Kapitel


cat cat 113
cut cut 132
expand
expand 121
fmt fmt 122
hd hexdump hexdump 117
head head 115
hexdump
hexdump 117
join “ join 135

nl nl 124
od
od 116
paste
paste 134
pr
pr 123
reset “

tset 113
sort sort 127
tac tac 114
tail tail 115
tee
tee 111
tr
tr 119
unexpand “

unexpand 121
uniq
uniq 131
wc wc 126
138 8 Standardkanäle und Filterkommandos

Zusammenfassung

stdin stdout stderr

> >> <

tee

tr
expand unexpand

pr
wc

sort
cut

paste
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

9
Mehr über die Shell

Inhalt
sleep echo date

Lernziele

Vorkenntnisse

grd1-shell2-opt.tex[!scripts] (a13e1ba7ab759bab)
140 9 Mehr über die Shell

9.1 sleep, echo und date

sleep

$ sleep 10

$ _

Argumente ausgeben echo echo

$ w=Welt
$ echo Hallo $w
Hallo Welt
$ echo Hallo ${w}enbummler
Hallo Weltenbummler

echo

B echo -n

$ echo -n Hallo
Hallo$

Datum und Uhrzeit anzeigen date date

date --help man date

B date
TZ

$ date
Thu Oct 5 14:26:07 CEST 2006
$ export TZ=Asia/Tokyo
$ date
Tue Oct 5 21:26:19 JST 2006
$ unset TZ

/usr/share/zoneinfo

Systemzeit stellen
root date
MMTThhmm MM TT
hh mm
9.2 Shell-Variable und die Umgebung 141

$ date
Thu Oct 5 14:28:13 CEST 2006
$ date 08181715
date: cannot set date: Operation not permitted
Fri Aug 18 17:15:00 CEST 2006

B date

Übungen
C 9.1
date

22-10-2003
03-294 (KW43)

12h34m56s

C 9.2

9.2 Shell-Variable und die Umgebung

bla=fasel Variable setzen


bla fasel

$ bla=fasel
$ echo bla
bla
$ echo $bla
fasel

Umgebungsvariable
Shellvariable

export export
142 9 Mehr über die Shell

Tabelle 9.1:

PWD
PS1

UID
HOME
PATH

LOGNAME

$ bla=fasel bla
$ export bla bla

$ export bla=fasel

export

$ export bla blubb


$ export bla=fasel blubb=bli

Variable auflisten export


env

set

B set

B env

$ env bla=fasel bash bla


$ echo $bla
fasel
$ exit
$ echo $bla

$ _

B env

$ bla=fasel bash

env

Variable löschen
unset

export -n
9.3 Arten von Kommandos – die zweite 143

$ export bla=fasel bla


$ export -n bla bla
$ unset bla bla

Übungen
C 9.3

$ bla=fasel bla
$ bash
$ echo $bla
bla
$ exit
$ export bla bla
$ bash
$ echo $bla
fasel
$ exit

C 9.4

$ export bla=fasel bla


$ bash
$ echo $bla
fasel
$ bla=blubb
$ exit
$ echo $bla

9.3 Arten von Kommandos – die zweite


Steuerung der Shell

PATH PATH

$ echo $PATH
/home/hugo/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

$ ls

PATH
144 9 Mehr über die Shell

/home/hugo/bin/ls
/usr/local/bin/ls
/usr/bin/ls
/bin/ls
/usr/games

ls /bin/ls

B
/bin/ls
ls

type
ls

$ type ls
ls is hashed (/bin/ls)

B hash
hash -r

help hash

B PATH

which

$ which grep
/bin/grep

which
PATH

B which
which test /usr/bin/test

type

whereis

$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /etc/passwd.org /usr/share/passwd⇤
/usr/share/man/man1/passwd.1.gz /usr/share/man/man1/passwd.1ssl.gz⇤
/usr/share/man/man5/passwd.5.gz

whereis
9.4 Die Shell als komfortables Werkzeug 145

Übungen
C 9.5
PATH
PATH

C 9.6
fgrep sort
mount xterm

C 9.7
crontab

9.4 Die Shell als komfortables Werkzeug

Kommandoeditor

set -o vi set -o emacs

Kommandoabbruch

Strg c

Die »Vorgeschichte«

Strg r

B
~/.bash_history

HISTFILE

B
HISTSIZE
HISTFILESIZE
HISTFILE
146 9 Mehr über die Shell

!!
!-
!-2 !
history
!xyz
xyz !?xyz xyz

^
$
-
*
-

!-2:$
!!:0-
!333^

^$*-%

B history

$ history 33

history -c
help
history
9.4 Die Shell als komfortables Werkzeug 147

Tabelle 9.2:

Strg r

Pos1 Strg a
Ende Strg e
Entf
Strg t
Strg l
Strg c
Strg d

Autovervollständigung
Komplettierung von Kommando-
Tab bzw. Dateinamen

Tab

Tab Befehlsliste

Esc ?
Esc /

Mehrere Kommandos auf einer Zeile

$ echo Heute ist; date


Heute ist
Fr 5. Dez 12:12:47 CET 2008

Bedingte Ausführung

Rückgabewert
148 9 Mehr über die Shell

B
$?

$ bash
$ exit 33
exit
$ echo $?
33 exit
$ _

&&

-c

$ bash -c "exit 0" && echo "Erfolgreich"


Erfolgreich
$ bash -c "exit 33" && echo "Erfolgreich"

||

$ bash -c "exit 0" || echo "Nicht erfolgreich"


$ bash -c "exit 33" || echo "Nicht erfolgreich"
Nicht erfolgreich

Übungen
C 9.8 echo "Hallo!"
!-2 !ls

9.5 Kommandos aus einer Datei

$ bash meine-kommandos

Shellskript

Sub-Shell

zuweisung

bla=fasel
9.6 Vorder- und Hintergrundprozesse 149

Bild 9.1:

$ bla=blubb
$ bash zuweisung bla=fasel
$ echo $bla
blubb

source

$ bla=blubb
$ source zuweisung bla=fasel
$ echo $bla
fasel

source .

$ source zuweisung

$ . zuweisung

B
source .
PATH

9.6 Vorder- und Hintergrundprozesse

Kindprozess
150 9 Mehr über die Shell

Bild 9.2:

Rückgabewert

$ sleep 10

$ _

&

Hintergrund-Prozess

$ sleep 10 &
[2] 6210

$ _

B [2] 6210

B &
9.6 Vorder- und Hintergrundprozesse 151

Tabelle 9.3: jobs

-l
-n jobs

-p

Jobkontrolle

jobs
jobs

$ jobs
[1] Done sleep
$ _

Running
jobs

Strg z jobs Stopped


bg

bg
%5

fg
fg bg

Strg c
kill bg

Übungen
C 9.9
glxgears xclock -
update 1

Strg z bg
jobs

C 9.10

$ sleep 5 ; sleep 5
$ sleep 5 ; sleep 5 &
152 9 Mehr über die Shell

$ sleep 5 & sleep 5 &

Kommandos in diesem Kapitel


.
bash 149
bg
bash 151
date date 140
env
env 142
export bash 141
fg
bash 151
glxgears
glxgears 151
hash “ bash bash 144

history bash bash 146
jobs bash 151
kill bash kill 151
set bash 142
source
bash 149
unset bash 142
whereis
whereis 144
which PATH which 144
xclock xclock 151

Zusammenfassung
sleep

echo
date
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

10
Das Dateisystem

Inhalt

Lernziele

Vorkenntnisse

grd1-dateisystem.tex (a13e1ba7ab759bab)
154 10 Das Dateisystem

10.1 Begriffe
Datei

file file

$ file /bin/ls /usr/bin/groups /etc/passwd


/bin/ls: ELF 32-bit LSB executable, Intel 80386,⇤
version 1 (SYSV), for GNU/Linux 2.4.1,⇤
dynamically linked (uses shared libs), for GNU/Linux 2.4.1, stripped
/usr/bin/groups: Bourne shell script text executable
/etc/passwd: ASCII text

B file
/usr/share/file /usr/share/file/magic
/etc/magic
magic

Dateisystem

ext2 ext3 ext4

10.2 Dateitypen

cat
10.2 Dateitypen 155

Tabelle 10.1:

ls -l ls -F

- name
d name/
mkdir
l name@ ln -s
b c name mknod
p name| mkfifo
s name=

mkdir

ln -s

/dev/fd0

mknod

mkfifo

Übungen
C 10.1
156 10 Das Dateisystem

$ cd /
$ ls -l
insgesamt 125
drwxr-xr-x 2 root root 4096 Dez 20 12:37 bin
drwxr-xr-x 2 root root 4096 Jan 27 13:19 boot
lrwxrwxrwx 1 root root 17 Dez 20 12:51 cdrecorder⇤
-> /media/cdrecorder
lrwxrwxrwx 1 root root 12 Dez 20 12:51 cdrom -> /media/cdrom
drwxr-xr-x 27 root root 49152 Mär 4 07:49 dev
drwxr-xr-x 40 root root 4096 Mär 4 09:16 etc
lrwxrwxrwx 1 root root 13 Dez 20 12:51 floppy -> /media/floppy
drwxr-xr-x 6 root root 4096 Dez 20 16:28 home
drwxr-xr-x 6 root root 4096 Dez 20 12:36 lib
drwxr-xr-x 6 root root 4096 Feb 2 12:43 media
drwxr-xr-x 2 root root 4096 Mär 21 2002 mnt
drwxr-xr-x 14 root root 4096 Mär 3 12:54 opt
dr-xr-xr-x 95 root root 0 Mär 4 08:49 proc
drwx------ 11 root root 4096 Mär 3 16:09 root
drwxr-xr-x 4 root root 4096 Dez 20 13:09 sbin
drwxr-xr-x 6 root root 4096 Dez 20 12:36 srv
drwxrwxrwt 23 root root 4096 Mär 4 10:45 tmp
drwxr-xr-x 13 root root 4096 Dez 20 12:55 usr
drwxr-xr-x 17 root root 4096 Dez 20 13:02 var

Bild 10.1:

10.3 Der Linux-Verzeichnisbaum

FHS

/usr
Wurzelverzeichnis /
/root
root
/boot

ls -la / /

/usr/bin
10.3 Der Linux-Verzeichnisbaum 157

/usr/bin
/usr/local/bin

Der Betriebssystemkern – /boot /boot


vmlinuz /boot

/boot

Allgemeine Systemprogramme – /bin /bin

mount mkdir

ls grep /bin

/usr/bin

Spezielle Systemprogramme – /sbin /bin /sbin

root
/bin
/usr/sbin

Systembibliotheken – /lib
/bin /sbin

/lib/modules Kernelmodule

Gerätedateien – /dev
Gerätedateien

B
/dev

/dev
158 10 Das Dateisystem

udev /dev

zeichenorientierte Geräte
blockorientierte Geräte

ls -l c b

crw-rw-rw- 1 root root 10, 4 Oct 16 11:11 amigamouse


brw-rw---- 1 root disk 8, 1 Oct 16 11:11 sda1
brw-rw---- 1 root disk 8, 2 Oct 16 11:11 sda2
crw-rw-rw- 1 root root 1, 3 Oct 16 11:11 null

Treibernummer

Gerätenummer

Pseudogeräte /dev/null

$ programm >/dev/null

/dev/null
/dev/null
/dev/random /dev/urandom

/dev/random
/dev/zero

dd

Konfigurationsdateien – /etc /etc


/etc/
inittab /etc/init.d

root

/etc/fstab

/etc/hosts

/etc/inittab /etc/inittab init


10.3 Der Linux-Verzeichnisbaum 159

/etc/init.d

/etc/rc.d/
init.d

/etc/issue /etc/issue

/etc/motd

/etc/mtab
/etc/mtab /etc/fstab /etc/mtab
/etc/fstab

B /etc

/etc/passwd /etc/passwd

/etc/shadow

Zubehör – /opt

/opt/

»Unveränderliche Dateien« – /usr /usr

/usr/bin

/usr/sbin root

/usr/lib /bin /sbin

/usr/local
/opt
160 10 Das Dateisystem

/usr/share

/usr/share

/usr/share/doc

/usr/share/info

/usr/share/man

/usr/src

B /usr

/usr

/usr schreibgeschützt /usr


/usr

Das Fenster zum Kernel – /proc


Pseudo-Dateisystem /proc

/proc/cpuinfo

/proc/devices

/proc/dma

/proc/interrupts

/proc/ioports /proc/interrupts

/proc/kcore

root
10.3 Der Linux-Verzeichnisbaum 161

/proc/loadavg

uptime

/proc/meminfo
free

/proc/mounts
/etc/mtab

/proc/scsi scsi

0
1 2

/proc/version

B /proc
ps

/proc

/proc
ps

Hardwaresteuerung – /sys
/proc

B /proc
/sys

Veränderliche Dateien – /var

man

/var/spool/cups /var/log
/var/spool/cron Log-Dateien

/var/mail

syslogd

/var/log
162 10 Das Dateisystem

B syslogd
klogd
syslogd
klogd syslogd

B
syslogd
klogd

dmesg

Vergängliche Daten – /tmp


sort /tmp

B /tmp /var/tmp

Serverdateien – /srv

drwxr-xr-x 2 root root 4096 Sep 13 01:14 ftp


drwxr-xr-x 5 root root 4096 Sep 9 23:00 www

/srv
/srv
/usr/local /var

Zugriff auf CD-ROMs und Disketten – /media


/media/cdrom
/media/floppy

/media/dvd

Zugriff auf andere Datenträger – /mnt

/media

Heimatverzeichnisse für Benutzer – /home


root

/home
10.3 Der Linux-Verzeichnisbaum 163

Tabelle 10.2:

/etc /bin /sbin /lib /dev /var/log


/usr /opt /home /var/mail

/home/support/hugo
/home/entwickl/emil

Heimatverzeichnis des Administrators – /root

/home
/
/home

root

Das virtuelle Fundbüro – lost+found ext

lost+found

lost+
found
ext

Übungen
C 10.2

C 10.3 grep

grep
*.txt grep
164 10 Das Dateisystem

/dev

C 10.4 cp bla.txt /dev/null


mv bla.txt /dev/null
/dev/null bla.txt

C 10.5 /opt

/opt

C 10.6 /proc

10.4 Verzeichnisbaum und Dateisysteme

Partitionierung
/home

Serversysteme
/tmp /var/tmp /var/spool

/var

/var/tmp

/etc/fstab /etc/fstab

/dev/sda1
10.5 Wechselmedien 165

A
/etc
passwd root

root

B /dev/sda1

# mount /dev/sda1 /media/usb

datei /media/usb/datei

# umount /media/usb

10.5 Wechselmedien

/etc/fstab
user users
166 10 Das Dateisystem

$ grep user /etc/fstab


/dev/hdb /media/cdrom0 udf,iso9660 ro,user,noauto 0 0
/dev/sda1 /media/usb auto user,noauto 0 0
/dev/mmcblk0p1 /media/sd auto user,noauto 0 0

/etc/fstab
fstab

$ mount /dev/hdb
$ mount /media/cdrom0
$ mount /dev/sda1
$ mount /media/sd

/etc/fstab umount

B user /etc/fstab

users

user

users root

Übungen
C 10.7
/etc/passwd

Kommandos in diesem Kapitel


dmesg dmesg 162
file file 154
free
free 161
klogd klogd 162
mkfifo mkfifo 155
mknod mknod 155
syslogd syslogd 162
uptime
uptime 160
10.5 Wechselmedien 167

Zusammenfassung

mount umount
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

11
Dateien archivieren und
komprimieren

Inhalt

tar
cpio
gzip
bzip2
xz

Lernziele

tar cpio
gzip bzip2

Vorkenntnisse

grd1-targz-opt.tex[!zip] (a13e1ba7ab759bab)
170 11 Dateien archivieren und komprimieren

11.1 Archivierung und Komprimierung

Lauflängenkodierung

ABBBBAACCCCCAAAABAAAAAC

A*4BAA*5C*4AB*5AC

*4B B

gzip bzip2

tar
tar gzip

B
zip
rar
11.2 Dateien archivieren mit tar 171

Übungen
C 11.1 AA
*2A

C 11.2
A*2B****A

11.2 Dateien archivieren mit tar


tar

tar
tar
tar

tar tar
tar
multi-volume archives

B split

cat

tar

tar

tar

tar tar

gzip bzip2

tar .tar .tar.bz2 .tar.gz


bzip2 gzip
.tgz tar
tar

tar …

tar-Optionen

-c

-f

-M tar
172 11 Dateien archivieren und komprimieren

-r

-t

-u

-v

-x

-z gzip

-Z compress

-j bzip2

Optionssyntax tar

-f

tar cvf …

data data.tar

$ tar -cvf ~/data.tar data*


data1
data10
data2
data3

-c -f ~/data.tar
-v

Verzeichnisse tar

# cd /
# tar -cvf /tmp/home.tar /home

root /home
home.tar /tmp
11.2 Dateien archivieren mit tar 173

B
tar
/

-t

$ tar -tf data.tar


data1
data10
data2

-v tar

$ tar -tvf data.tar


-rw-r--r-- hugo/hugo 7 2009-01-27 12:04 data1
-rw-r--r-- hugo/hugo 8 2009-01-27 12:04 data10
-rw-r--r-- hugo/hugo 7 2009-01-27 12:04 data2

-x

$ tar -xf data.tar

tar
-v

$ tar -xvf data.tar


data1
data10
data2

tar

$ tar -cf data.tar ./data


$ tar -tvf data.tar
drwxr-xr-x hugo/hugo 0 2009-01-27 12:04 ./data/
-rw-r--r-- hugo/hugo 7 2009-01-27 12:04 ./data/data2

$ mkdir data-neu
$ cd data-neu
$ tar -xvf ../data.tar data/data2 ./
tar: data/data2: Not found in archive
tar: Error exit delayed from previous errors
174 11 Dateien archivieren und komprimieren

Übungen
C 11.3
inhalt tar

C 11.4

C 11.5
tar

C 11.6 tar /

# tar -cvf /tmp/etc-backup.tar /etc

etc-backup.tar

11.3 Dateien archivieren mit cpio


cpio
tar cpio

-o

cpio

-i

-p

-o

B cpio
Austausch von Datenbeständen

cpio

tar

data
hugo archive.cpio

$ cd /home/hugo
$ find . -maxdepth 1 -name 'data*' | cpio -ov >archive.cpio

B cpio
find -maxdepth 1
find
11.4 Dateien komprimieren mit gzip 175

B find cpio
find -depth

$ find ... -depth -print0 | cpio --null ...

find

--null cpio

$ cpio -iv <archive.cpio

cpio

-u
-d -t

. /

cpio

Übungen
C 11.7
cpio

11.4 Dateien komprimieren mit gzip


gzip

B gzip zip
compress
compress

gzip

B Grundidee
176 11 Dateien archivieren und komprimieren

B gzip compress

.Z

B gzip

gzip
tar
cpio gzip

gzip
.gz

tar gzip
gzip

-c

-d gunzip gzip -d

-l

-r

-S .gz

-v

-1 … -9 -1 --fast
-9 --best
-6

brief.tex
brief.tex.gz

$ gzip brief.tex

$ gzip -d brief.tex

$ gunzip brief.tex

brief.tex.t brief.tex.gz
-S .t -v

$ gzip -vS .t brief.tex


11.5 Dateien komprimieren mit bzip2 177

-S
gzip -d .gz

$ gzip -dS .t brief.tex

.tex tex-all.tar.gz

# tar -cvzf tex-all.tar.gz *.tex

tar

# tar -xvzf tex-all.tar.gz

Übungen
C 11.8 tar

C 11.9
tar

C 11.10
gzip

11.5 Dateien komprimieren mit bzip2


bzip2
gzip

B bzip2

B bzip bzip bzip2

gzip bzip2

.bz2
-c -d gzip
-1 -9
bzip2
-9 -1

B -9
178 11 Dateien archivieren und komprimieren

.bz2
bzip2

gzip gunzip bunzip2


bzip2
bzip2 bzip2 -d

11.6 Dateien komprimieren mit xz


gzip bzip2
xz

xz

Eigenschaften xz bzip2

xz

B xz
xz

LZMA-Verfahren B xz 7-Zip

gzip

LZMA2 B xz

xz xz

Bedienung xz
gzip bzip2
xz unxz xz
-d
Effizienzparameter gzip bzip2 -1 -9

-6

xunz
11.6 Dateien komprimieren mit xz 179

-9

xz

B
-7

B xz

-9

gzip bzip2 -9

B -e

-q -qq Weitere Optionen

-v

B tar xz
-J

Übungen
C 11.11 tar

gzip bzip2 xz
time

C 11.12
xz
-1 -6
-6 -9

Kommandos in diesem Kapitel


bunzip2 .bz2 bzip2 178
bzip2 bzip2 177
gunzip .gz gzip 176
split split 171
tar tar 171
180 11 Dateien archivieren und komprimieren

Zusammenfassung

tar
cpio
gzip
tar
bzip2
gzip

xz

Literaturverzeichnis
RFC1951
http://www.ietf.org/rfc/rfc1951.txt
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

A
Musterlösungen

1.2 ftp.kernel.org linux-0.01.tar.gz

1.3

1.5
ftp.kernel.org
http://lwn.net/
182 A Musterlösungen

2.2 Login
incorrect

2.5
getpass

3.2 -bash
bash

3.3 alias rm
echo test

4.2 apropos process man -k process

4.5

5.1

apropos edit

rpm -qa dpkg -l

5.2 vimtutor

6.1

cd

6.4 ls

6.5 ls -d
A Musterlösungen 183

6.6

$ mkdir -p grd1-test/dir1 grd1-test/dir2 grd1-test/dir3


$ cd grd1-test/dir1
$ vi hallo
$ cd
$ vi grd1-test/dir2/huhu
$ ls grd1-test/dir1/hallo grd1-test/dir2/huhu
grd1-test/dir1/hallo
grd1-test/dir2/huhu
$ rmdir grd1-test/dir3
$ rmdir grd1-test/dir2
rmdir: grd1-test/dir2: Directory not empty

rmdir
. ..

6.7

prog.c prog1.c prog2.c progabc.c

prog1.c prog2.c

p1.txt p2.txt p21.txt p22.txt

p1.txt p21.txt p22.txt p22.dat

prog

6.8 ls
ls
ls * ls

6.9 -l ls

ls

6.10
rm -r * ..

6.11

$ cd
$ cp /etc/services myservices
$ mv myservices src.dat
$ cp src.dat /tmp
$ rm src.dat /tmp/src.dat

6.12

-R
184 A Musterlösungen

6.13 rm -file rm
rm
"-file" rm '-file'

rm ./-file

rm -- -file rm --

6.14 * -i

rm

-i a.txt b.jpg c.dat

-i -i

6.15

6.16

6.17

6.18 /home

/
ls -i

6.19 . ..

..

6.20

..

$ mkdir -p a/b
$ cd a/b
$ ln .. c
A Musterlösungen 185

6.21
~ .

..

6.22

6.23

$ touch d
$ ln -s d L1
$ i=1
$ while ls -lH L$i >/dev/null
> do
> ln -s L$i L$((i+1))
> i=$((i+1))
> done

ls -lH

6.24

ext

6.25 find / -size +1024k -print

6.26

find . -maxdepth 1 -ok rm '{}' \;

-
maxdepth 1
ls -i

find . -maxdepth 1 -inum 4711 -exec rm -f '{}' \;


186 A Musterlösungen

6.27 .bash_logout

find /tmp -user $LOGNAME -type f -exec rm '{}' \;

find /tmp -user $LOGNAME -type f -print0 \


| xargs -0 -r rm -f

LOGNAME

6.28 locate '*/README'


find -name README

6.29
updatedb

updatedb updatedb

/etc/cron.daily/find
updatedb

6.30 slocate
/etc/shadow

7.1 + * +
?
grep egrep ?
\(\| \) grep {,1}
grep

7.2

egrep '\<(Königst|T)ochter\>' frosch.txt

7.3

grep :/bin/bash$ /etc/passwd

7.4
a
e

$ k='[^aeiou]*'
$ grep -i ^${k}a${k}e${k}i${k}o${k}u${k}$ /usr/share/dict/words
abstemious
abstemiously
abstentious
acheilous
acheirous
A Musterlösungen 187

acleistous
affectious
annelidous
arsenious
arterious
bacterious
caesious
facetious
facetiously
fracedinous
majestious

7.5
egrep '(\<[A-Za-z]{4,}\>).*\<\1\>' frosch.txt

egrep

8.1 ls

;
if ( -U ) {
;
}
;

inhalt

8.2 ls

ls
188 A Musterlösungen

8.3

8.4

8.5

echo Fehler >&2

8.6

… | tee bla | tee fasel | …

… | tee bla fasel | …

tee

8.7 cat -A

8.8 head -n 13 | tail -n 1

8.10 tail

8.11 tail

Hallo
elt

echo echo
tail -f
Hallo

elt

8.12 a
cr lf c \r \n
a sp

8.13
/dev/random

$ r=`od -An -N2 -tu2 /dev/random`


$ echo $r
4711

-N2 -tu2
-An
A Musterlösungen 189

8.14
$ echo "ALEA IACTA EST" | tr A-Z D-ZA-C
DOHD LDFWD HVW
$ echo "DOHD LDFWD HVW" | tr A-Z X-ZA-W
ALEA IACTA EST

tr A-Za-z N-ZA-Mn-za-m

8.15 tr AEIOU AAAAA


tr AEIOU A

8.16

$ tr -cs '[:alpha:]' '\n'

-c [:alpha:] \n
-s

LANG de_DE

8.17 -
-az tr
a-z
- [=-=]

8.18 cat -T od -tc

8.19 nl -v 100 -i 2 frosch.txt

8.20 tac

$ tac frosch.txt | cat -n | tac

cat -n nl -ba

8.21 wc
wc
190 A Musterlösungen

8.24

8.25 sort -k 1.4,1.8


sort

sort -k 1.4,1.8 -k 1.1,1.2

8.26

$ tr -cs '[:alpha:]' '\n' | sort -uf

-u sort
-f
LC_COLLATE=de_DE

8.30
cut -d: -f 4 /etc/passwd | sort -u | wc -l

cut
sort -u
wc -l

9.1
%d-%m-%Y

%y-%j (KW%V)

%Hh%Mm%Ss

9.2
TZ=America/Los_Angeles date

9.4

9.5 PATH

PATH

9.6
which

9.7 whereis /usr/share/man/man1/crontab.1.


gz /usr/share/man/man5/crontab.5.gz
crontab
crontab
A Musterlösungen 191

9.8 !
Strg r
!"

9.10

sleep

10.2

ls /bin /sbin /usr/bin /usr/sbin | wc -l

Tab

Display all 2371 possibilities? (y or n)

PATH
/sbin /usr/sbin

10.3 grep *.txt grep


*.txt /dev/null grep
/dev/null
grep -H

10.4 cp

/dev/null mv

/dev/null
null /dev
null bla.txt

10.6

/proc/kcore

11.1 AA *2A

11.2
A*1*2B*4*A

**
192 A Musterlösungen

11.3 ls -l >inhalt tar -cvf inhalt.tar


inhalt
tar

11.4 touch datei{1,2,3} tar -rvf inhalt.tar datei*

11.5 tar -xvf inhalt.tar

11.6 etc-backup.tar

etc
/etc

11.8 gzip gzip -9 inhalt.tar

11.9 gzip tar


tar -z tar -tzf inhalt.tar.gz
gunzip
inhalt.tar.gz

11.10 tar -cvzf /tmp/homearchiv.tar ~

11.11

$ unxz linux-3.18.tar.xz
$ for prog in gzip bzip2 xz
> do
> echo $prog
> time $prog -k linux-3.18.tar
> done
$ ls -l linux-3.18.tar*

-k
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

B
Beispieldateien

Der Froschkönig oder der eiserne Heinrich

In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so
schön, daß die Sonne selber, die doch so vieles schon gesehen hat,
sich verwunderte, sooft sie ihr ins Gesicht schien.

Nahe bei dem Schlosse war ein großer, dunkler Wald, und mitten darin,
unter einer alten Linde, war ein Brunnen. Wenn nun der Tag recht heiß war,
ging die jüngste Prinzessin hinaus in den Wald und setzte sich an den Rand
des kühlen Brunnens. Und wenn sie Langeweile hatte, nahm sie eine
goldene Kugel, warf sie in die Höhe und fing sie wieder auf. Das war
ihr liebstes Spiel.

Nun trug es sich einmal zu, daß die goldene Kugel der Königstochter
nicht in die Händchen fiel, sondern auf die Erde schlug und gerade in
den Brunnen hineinrollte. Die Königstochter folgte ihr mit den Augen
nach, aber die Kugel verschwand, und der Brunnen war tief, so tief,
daß man keinen Grund sah.

Da fing die Prinzessin an zu weinen und weinte immer lauter und konnte
sich gar nicht trösten. Als sie so klagte, rief ihr plötzlich jemand
zu: »Was hast du nur, Königstochter? Du schreist ja, daß sich ein
Stein erbarmen möchte.«

Sie sah sich um, woher die Stimme käme, da erblickte sie einen Frosch,
der seinen dicken, häßlichen Kopf aus dem Wasser streckte. »Ach, du
bist's, alter Wasserpatscher«, sagte sie. »Ich weine über meine
goldene Kugel, die mir in den Brunnen hinabgefallen ist.«

»Sei still und weine nicht«, antwortete der Frosch, »ich kann wohl Rat
schaffen. Aber was gibst du mir, wenn ich dein Spielzeug wieder
heraufhole?«

grd1-beispiele.tex (a13e1ba7ab759bab)
194 B Beispieldateien

»Was du haben willst, lieber Frosch«, sagte sie, »meine Kleider, meine
Perlen und Edelsteine, auch noch die goldene Krone, die ich trage.«

Der Frosch antwortete: »Deine Kleider, deine Perlen und Edelsteine und
deine goldene Krone, die mag ich nicht. Aber wenn du mich liebhaben
willst und ich dein Geselle und Spielkamerad sein darf, wenn ich an
deinem Tischlein neben dir sitzen, von deinem goldenen Tellerlein
essen, aus deinem Becherlein trinken, in deinem Bettlein schlafen
darf, dann will ich hinuntersteigen und dir die goldene Kugel
heraufholen.«

»Ach, ja«, sagte sie, »ich verspreche dir alles, was du willst, wenn
du mir nur die Kugel wiederbringst.« Sie dachte aber, der einfältige
Frosch mag schwätzen, was er will, der sitzt doch im Wasser bei
seinesgleichen und quakt und kann keines Menschen Geselle sein!

Als der Frosch das Versprechen der Königstochter erhalten hatte,


tauchte er seinen Kopf unter, sank hinab, und über ein Weilchen kam er
wieder heraufgerudert, hatte die Kugel im Maul und warf sie ins
Gras. Die Königstochter war voll Freude, als sie ihr schönes Spielzeug
wiedererblickte, hob es auf und sprang damit fort.

»Warte, warte!« rief der Frosch. »Nimm mich mit, ich kann nicht so
laufen wie du!« Aber was half es ihm, daß er ihr sein Quak-quak so
laut nachschrie, wie er nur konnte! Sie hörte nicht darauf, eilte nach
Hause und hatte den Frosch bald vergessen.

Am andern Tag, als sie sich mit dem König und allen Hofleuten zur
Tafel gesetzt hatte und eben von ihrem goldenen Tellerlein aß, da kam,
plitsch platsch, plitsch platsch, etwas die Marmortreppe
heraufgekrochen. Als es oben angelangt war, klopfte es an die Tür und
rief. »Königstochter, jüngste, mach mir auf«

Sie lief und wollte sehen, wer draußen wäre. Als sie aber aufmachte,
saß der Frosch vor der Tür. Da warf sie die Tür hastig zu, setzte sich
wieder an den Tisch, und es war ihr ganz ängstlich zumute.

Der König sah wohl, daß ihr das Herz gewaltig klopfte, und sprach:
»Mein Kind, was fürchtest du dich? Steht etwa ein Riese vor der Tür
und will dich holen?«

»Ach, nein«, antwortete sie, »es ist kein Riese, sondern ein garstiger
Frosch.«

»Was will der Frosch von dir?«

»Ach, lieber Vater, als ich gestern im Wald bei dem Brunnen saß und
spielte, fiel meine goldene Kugel ins Wasser. Als ich deshalb weinte,
hat sie mir der Frosch heraufgeholt. Und weil er es durchaus
verlangte, versprach ich ihm, er sollte mein Spielgefährte werden. Ich
dachte aber nimmermehr, daß er aus seinem Wasser käme. Nun ist er
draußen und will zu mir herein.«

Da klopfte es zum zweiten Mal, und eine Stimme rief:

»Königstochter, jüngste,
Mach mir auf!
Weißt du nicht, was gestern
B Beispieldateien 195

Du zu mir gesagt
Bei dem kühlen Brunnenwasser?
Königstochter, jüngste,
Mach mir auf!«

Da sagte der König: »Was du versprochen hast, das mußt du auch halten!
Geh nur und mach ihm auf!«

Sie ging und öffnete die Tür. Da hüpfte der Frosch herein und hüpfte
ihr immer nach bis zu ihrem Stuhl. Dort blieb er sitzen und rief: »Heb
mich hinauf zu dir!« Sie zauderte, bis es endlich der König
befahl. Als der Frosch auf dem Stuhl war, wollte er auf den Tisch, und
als er da saß, sprach er: »Nun schieb mir dein goldenes Tellerlein
näher, damit wir mitsammen essen können.« Der Frosch ließ sich's gut
schmecken, ihr aber blieb fast jeder Bissen im Halse stecken.

Endlich sprach der Frosch: »Ich habe mich satt gegessen und bin
müde. Nun trag mich in dein Kämmerlein und mach dein seidenes Bettlein
zurecht!« Die Königstochter fing an zu weinen und fürchtete sich vor
dem kalten Frosch, den sie sich nicht anzurühren getraute und der nun
in ihrem schönen, reinen Bettlein schlafen sollte.

Der König aber wurde zornig und sprach: »Wer dir geholfen hat, als du
in Not warst, den sollst du hernach nicht verachten!«

Da packte sie den Frosch mit zwei Fingern, trug ihn hinauf in ihr
Kämmerlein und setzte ihn dort in eine Ecke. Als sie aber im Bette
lag, kam er gekrochen und sprach: »Ich will schlafen so gut wie
du. Heb mich hinauf, oder ich sag's deinem Vater!«

Da wurde sie bitterböse, holte ihn herauf und warf ihn gegen die
Wand. »Nun wirst du Ruhe geben«, sagte sie, »du garstiger Frosch!« Als
er aber herabfiel, war er kein Frosch mehr, sondern ein Königssohn mit
schönen freundlichen Augen. Der war nun nach ihres Vaters Willen ihr
lieber Geselle und Gemahl. Er erzählte ihr, er wäre von einer bösen
Hexe verwünscht worden, und niemand hätte ihn aus dem Brunnen erlösen
können als sie allein, und morgen wollten sie mitsammen in sein Reich
gehen.

Und wirklich, am anderen Morgen kam ein Wagen herangefahren, mit acht
weißen Pferden bespannt, die hatten weiße Straußfedern auf dem Kopf
und gingen in goldenen Ketten. Hinten auf dem Wagen aber stand der
Diener des jungen Königs, das war der treue Heinrich.

Der treue Heinrich hatte sich so gekränkt, als sein Herr in einen
Frosch verwandelt worden war, daß er drei eiserne Bänder um sein Herz
hatte legen lassen, damit es ihm nicht vor Weh und Traurigkeit
zerspränge.

Der Wagen sollte nun den jungen König in sein Reich holen. Der treue
Heinrich hob ihn und seine junge Gemahlin hinein, stellte sich wieder
hinten hinauf und war voll Freude über die Erlösung seines Herrn. Als
sie ein Stück des Weges gefahren waren, hörte der Königssohn, daß es
hinter ihm krachte, als ob etwas zerbrochen wäre. Da drehte er sich um
und rief:

»Heinrich, der Wagen bricht!«


»Nein, Herr, der Wagen nicht,
196 B Beispieldateien

Es ist ein Band von meinem Herzen,


Das da lag in großen Schmerzen,
Als Ihr in dem Brunnen saßt
Und in einen Frosch verzaubert wart.«

Noch einmal und noch einmal krachte es auf dem Weg, und der Königssohn
meinte immer, der Wagen bräche. Doch es waren nur die Bänder, die vom
Herzen des treuen Heinrich absprangen, weil sein Herr nun erlöst und
glücklich war.
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

C
LPIC-1-Zertifizierung

C.1 Überblick


http://www.lpi.org/ Prüfungsziele



grd1-objectives.tex (a13e1ba7ab759bab)
198 C LPIC-1-Zertifizierung

C.2 Prüfung LPI-101

C.3 LPI-Prüfungsziele in dieser Schulungsunterlage


103.1 Auf der Kommandozeile arbeiten
Gewicht
Beschreibung

Wichtigste Wissensgebiete

bash pwd uname


echo set history
env unset .bash_history
export man
C LPIC-1-Zertifizierung 199

103.2 Textströme mit Filtern verarbeiten


Gewicht
Beschreibung

Wichtigste Wissensgebiete

cat nl tail
cut od tr
expand paste unexpand
fmt pr uniq
head sed wc
join sort
less split

103.3 Grundlegende Dateiverwaltung


Gewicht
Beschreibung

Wichtigste Wissensgebiete

find

tar cpio dd

cp rmdir gzip
find touch gunzip
mkdir tar bzip2
mv cpio xz
ls dd
rm file

103.4 Ströme, Pipes und Umleitungen verwenden


Gewicht
Beschreibung

Wichtigste Wissensgebiete
200 C LPIC-1-Zertifizierung

tee xargs

103.5 Prozesse erzeugen, überwachen und beenden


Gewicht
Beschreibung
Wichtigste Wissensgebiete

& nohup pgrep


bg ps pkill
fg top killall
jobs free screen
kill uptime

103.7 Textdateien mit regulären Ausdrücken durchsuchen


Gewicht
Beschreibung

Wichtigste Wissensgebiete

grep fgrep regex


egrep sed
C LPIC-1-Zertifizierung 201

103.8 Grundlegendes Editieren von Dateien mit vi


Gewicht
Beschreibung vi
vi vi

Wichtigste Wissensgebiete

vi
vi

vi h j k l c d p y dd yy
/ ? i o a ZZ :w! :q! :e!

104.6 Harte und symbolische Links anlegen und ändern


Gewicht
Beschreibung

Wichtigste Wissensgebiete

ln ls

104.7 Systemdateien finden und Dateien am richtigen Ort platzie-


ren
Gewicht
Beschreibung

Wichtigste Wissensgebiete

find whereis /etc/updatedb.conf


locate which
updatedb type
$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

D
Kommando-Index

.
bash 149
apropos “

apropos 50
bash “

bash 41
bg
bash 151
bunzip2 .bz2 bzip2 178
bzip2 bzip2 177
cat cat 113
cd bash 75
convmv convmv 73
cp cp 82
csh “ csh 41

cut cut 132
date date 140, 44
dmesg dmesg 162
echo
bash echo 44
ed ed 57
egrep
grep 102
elvis “ vi elvis 56

emacs emacs emacs 63
env
env 142
ex vi vi 57
exit bash 35
expand
expand 121
export bash 141
fg
bash 151
fgrep
fgrep 102
204 D Kommando-Index

file file 154


find
find find 90
fmt fmt 122
free
free 161
glxgears
glxgears 151
grep grep 101
groff groff 50
gunzip .gz gzip 176
hash “ bash bash 144

hd hexdump hexdump 117
head head 115
help bash bash 44, 48
hexdump
hexdump 117
history bash bash 146
id id 36
info info 52
jobs bash 151
join “ join 135

jove emacs jove 64
kdesu
help:/kdesu 35
kill bash kill 151
klogd klogd 162
konsole “ help:/konsole 42

ksh “ ksh 41

less less 50, 90
ln “ ln 85

locate
locate 94
logout “ bash 34

ls ls 76
man man 48
manpath manpath 50
mkdir mkdir 78
mkfifo mkfifo 155
mknod mknod 155
more more 90
mv
mv 84
nl nl 124
od
od 116
paste
paste 134
pr
pr 123
pwd
pwd bash 76
reset “

tset 113
rm rm 84
rmdir rmdir 78
sed
sed 57
D Kommando-Index 205

set bash 142


sh “ sh 41

slocate
slocate 96
sort sort 127
source
bash 149
split split 171
su su 35
sudo
sudo 35
syslogd syslogd 162
tac tac 114
tail tail 115
tar tar 171
tcsh “

tcsh 41
tee
tee 111
tr
tr 119
type bash 44
unexpand “

unexpand 121
uniq
uniq 131
unset bash 142
updatedb locate updatedb 95
uptime
uptime 160
vi vi 56
vim “ vi vim 56

wc wc 126
whatis
whatis 51
whereis
whereis 144
which PATH which 144
xargs
xargs find 93
xclock xclock 151
xterm “ xterm 42

$ echo tux
tux
$ ls
hallo.c
hallo.o
$ /bin/su -
Password:

Index

~/.bashrc“ “
” ”
. -a
. -i
.. -L
./ -l
/ -P
-s
cpio
alias -d
apropos -i
--null
-o
awk -p
-t
bash -u
-c cron
~/.bash_history crontab
csh
cut
bg -c
/bin -d
/bin/ls -f
--output-delimiter
/boot -s

date
dd
bunzip2
bzip
bzip2
-1 /dev
-9 /dev/fd0
-c /dev/null
-d /dev/random
/dev/tty
/dev/urandom
/dev/zero
cat dirs
cd dmesg
chmod
compress echo
convmv -n
cp ed
208 Index

egrep
elvis
emacs
env grep
/etc
/etc/cron.daily --color
/etc/fstab -f
/etc/hosts -H
/etc/init.d groff
/etc/inittab gunzip
/etc/issue gzip
/etc/magic -1
/etc/motd -6
/etc/mtab -9
/etc/passwd --best
/etc/rc.d/init.d -c
/etc/shadow -d
/etc/shells --fast
/etc/sysconfig/locate -l
/etc/updatedb.conf -r
-S
ex -v
exit
expand hash
-i -r
-t hd
export head
-n -c
-n
-
fg help
fgrep hexdump

file history
-c
find /home
-depth
-exec
-maxdepth -i
-name id
-ok info
-print inhalt
-print0 init
fmt
-c
-w jobs
join
free jove

frosch.txt kate

kdesu
gcc
gedit kill

klogd
glxgears
Index 209

-n
konsole -s

mount
ksh

LANG mv
LC_ALL -b
LC_COLLATE -f
-i
less -R
/lib -u
/lib/modules -v

linux-0.01.tar.gz nl
ln -b
-b -i
-f -n
-i -v
-s -w
-v
locate
-e od
LOGNAME -A
logout -N
lost+found -t
lpr -v
ls
/opt

-a paste
-d -d
-F -s
-H PATH
-i
-L
-l
-p
-U perl

man
-a popd
-f pr
-k printf
MANPATH /proc
manpath /proc/cpuinfo
/proc/devices
/media /proc/dma
/media/cdrom /proc/interrupts
/media/dvd /proc/ioports
/media/floppy /proc/kcore
/proc/loadavg
mkdir /proc/meminfo
-p /proc/mounts
mkfifo /proc/scsi
mknod
/mnt ps
more
-l
210 Index

-s
pushd tail
pwd -c
-f
-n
-

tar
rar -c
-f
-J
reset -j
-M
rm -r
-f -t
-i -u
-r -v
-v -x
rmdir -Z
-p -z
/root
tcsh
tee
/sbin -a
sed teilnehmer0.dat
set TERM
test
sh

time
/tmp

tr
sleep -c
slocate -s
sort
type
-b TZ
-f
-k
-n
-r LANG
-t LC_ALL
-u LC_COLLATE
-u LOGNAME
source MANPATH
split PATH
/srv
TERM
TZ
su umount
sudo unexpand
-a
uniq
/sys
syslogd unset
unxz
tac updatedb
-b uptime
Index 211

/usr
/usr/bin
/usr/bin/test
/usr/lib
/usr/local
/usr/local/bin
/usr/sbin
/usr/share
/usr/share/dict/words
/usr/share/doc
/usr/share/file
/usr/share/file/magic
/usr/share/info
/usr/share/man
/usr/share/zoneinfo
/usr/src

/var
/var/log
/var/mail
/var/spool
/var/spool/cron
/var/spool/cups
/var/tmp

vi
vim
vimtutor
vmlinuz

wc
whatis
whereis
which

xargs
-0
-r
xclock
-update 1
xterm
xz
-1
-6
-9
-d
-e
-q
-qq
-v

zip