Programmiertechnik I (2008) - Erste Schritte

Erste Schritte unter Linux/Unix

1. Kurze Einführung

Dieses Dokument ist für Unix-Einsteiger gedacht und enthält einen kompakten Überblick über das nötigste Bedienwissen für die ersten Schritte zur Arbeit mit Linux/Unix auf Kommandozeilenebene mittels eines Text-Terminals. Solche Kommandozeilen werden mittels sogenannter Shells über die Tastatur eingeben. Eine Shell ist eine Benutzerschnittstelle von Linux/Unix-Betriebssystemen, die textbasiert arbeitet und über die Tastatur bedient werden muss. Die Return-Taste bringt eine Kommandozeile zur Ausführung.
Die weiteren Punkte führen die wichtigsten Befehle zu den entsprechenden Breichen auf. Die folgende Tabelle zeigt die benutzte Nomenklatur auf:

Zeichen

Bedeutung

<>

in solchen Klammern angegebene Tasten der Tastatur sollen gleichzeitig gedrückt werden. Einzelne Tasten sind durch "-" getrennt.

<ctrl>

Drücken der ctrl-Taste auf amerikanischen Tastaturen bzw. der Strg-Taste auf deutschen Tastaturen.

<ctrl-a>

Drücken der ctrl-Taste zusammen mit der angegeben Taste a.

<ctrl-alt-F1gt;

Drücken Tasten ctrl, alt und F1.

<tab>

Drücken der Tabulator-Taste (im allgemeinen die Taste links vom Buchstaben Q).

[]

Ausdrücke in eckigen Klammern sind durch passende Ausdrücke zu ersetzen.

who am i

Ausdrücke ohne Klammerung sind zu übernehmen.

2. Arbeiten mit Shells

Tasten

Beschreibung

Beispiele

Tipps

<tab>

Vervollständigung eines Dateinamens

-

Verfügbarkeit der Vervollständigkeitsfunktion hängt von benutzter Shell ab.

<Pfeil hoch>

Anzeigen der vorangegangen Kommandozeile

-

-

<Pfeil runter>

Anzeigen der nachgegangen Kommandozeile

-

-

<ctrl-Bild auf>

blättert die Anzeige nach oben

-

-

<ctrl-Bild runter>

blättert die Anzeige nach unten

-

-

<Pfeil links>

navigieren in der aktuellen Kommandozeile nach links

-

-

<Pfeil rechts>

navigieren in der aktuellen Kommandozeile nach rechts

-

-

<ctrl-a>

setzen des Cursors an den Anfang der Kommandozeile

-

-

<crtl-e>

setzen des Cursors an das Ende der Kommandozeile

-

-

./[Dateiname] oder [Dateiname]

starten des Programms mit Namen "Dateiname"

banner

./ vor einem Dateinamen ist nur dann notwendig, wenn sich die Datei im aktuellen Verzeichnis befindet.

3. Anmelden (einloggen) / abmelden (ausloggen)

Zur Anmeldung bei den HPI-Unix-Rechnern muss man den Windows-Nutzernamen und das Windows-Passwort verwenden. Zur Anmeldung kann entweder der graphische Anmeldeschirm (kdm) oder die Konsolenanmeldung (erreichbar über <ctrl-alt-F1>) verwendet werden. Vom Konsolemodus kann man mit <ctrl-F7> wieder in den Grafik-(X11-)Modus zurückschalten.

Befehl

Beschreibung

Beispiele

Tipps

login [Name]

Startet eine neue Sitzung auf dem aktuellen Rechner unter der Benutzerkennung [Name]

login gruppe1

-

logout oder exit

Beendet die Sitzung.

-

Oft durch <ctrl-d> erreichbar.

passwd
(password)

Ändern des Passwortes

-

-

ssh [Name]@[Rechnername]
(secure shell)

Login auf dem über Netzwerk verbundenen Rechner [Rechnername] unter der Benutzerkennung [Name] unter Verwendung einer verschlüsselten Verbindung.

ssh gruppe1@wendtstud1

-

4. Verzeichnisse/Dateien

Befehl

Beschreibung

Beispiele

Tipps

ls [-la] [Verzeichnis]
(list)

zeigt den Inhalt des Verzeichnisses [Verzeichnis] an.
Zusätzliche Parameter:
[-l]: neben Namen werden Typ, Rechte, Anzahl der Hardlinks, Besitzer, Gruppe und die Größe und die Zeitmarke angezeigt der Dateien angezeigt.
[-a]: zeigt alle Dateien an, auch die mit einem "." beginnen.

ls
ls -l
ls -a Aufgaben
ls -la
ls -la /

"/" steht für das Hauptverzeichnis.
"." steht für das aktuelle Verzeichnis.

pwd
(print name of working/current directory)

zeigt aktuellen absoluten Pfad an

-

-

cd [Verzeichnis]
(change directory)

wechselt das Verzeichnis in das angegebene [Verzeichnis]. Relative sowie absolute Angaben sind möglich.

relativ: cd ..
cd Aufgaben
absolut: cd /home

-

mkdir [Verzeichnis]
(make directory)

erstellt ein neues Verzeichnis. Relative und absolute Verzeichnisangaben sind erlaubt.

mkdir Test

-

mv [Quelle] [Ziel]
(move)

verschiebt Dateien bzw. Verzeichnisse in andere Verzeichnisse .

mv /home/Aufgaben Kopie/
mv test1.txt test2.txt


cp [Quelle] [Ziel]
(copy)

kopiert Dateien bzw. Verzeichnisse in andere Verzeichnisse

-


scp [-r] [Quelle] [Ziel]
(secure copy)

Kopiert rechnerübergreifend Dateien bzw. Verzeichnisse in andere Verzeichnisse unter Verwendung einer verschlüsselten Verbindung. [Quelle] oder [Ziel] bezeichnen entweder Datei oder Verzeichnis im lokalen Filesystem oder im Filesystem auf einem anderen Rechner. Im zweiten Fall wird das File bzw. Verzeichnis identifiziert über eine Textkette der Form:
[Loginname]@[Rechnername]:[AbsoluterPfad]
Zusätzliche Parameter:
[-r]: Kopiert rekursiv ein Verzeichnis und dessen Inhalt

scp test1.txt userxy@wendtstud1:/home/userxy/

scp userxy@wendtstud1:/home/userxy/ test1.txt


rmdir [Verzeichnis]
(remove directory)

löscht Verzeichnisse

-

Wenn Verzeichnisse nicht leer sind, dann bricht dieses Kommando ab. Besser rm -r benutzen.

rm [-rf] [Ziel]
(remove)

löscht unwiderrufbar Dateien bzw. Verzeichnisse
Zusätzliche Parameter:
[-r]: löscht rekursiv alle unterliegende Verzeichnisse und Dateien
[-f]: löscht ohne Nachfrage, zeigt keine Fehlermeldungen an

rm -rf Aufgaben
rm -r Aufgaben
rm -f Test.txt

-

locate -i [Name]

sucht nach Dateien deren Name die Zeichenkette [Zeichenkette] enthält. Die Suche findet auf einer Datenbank statt. Mit Schalter -i beachtet locate die Groß- bzw. Kleinschreibung nicht.

locate -i test

locate ist wesentlich schneller als find, teilweise ist die Datenbank nicht auf dem neuesten Stand.

find [Verzeichnis] -name [Name]

sucht nach der Dateien mit Namen [Name] ab einem Verzeichnis [Verzeichnis]

find / -name MeinTest.cpp
find . -name MeinTest.cpp

-

5. Dateioperationen

Befehl

Beschreibung

Beispiele

Tipps

cat [Datei]
(concatenate)

zeigt den Inhalt der Datei [Datei] an.

cat /etc/fstab

-

less [Datei] oder more [Datei]

zeigt den Inhalt der Datei [Datei] an.

less .bashrc

less oder more biete erhöhte Funktionalität im Vergleich zu cat an:
<space> oder <f>: blättert Anzeige weiter
<b>: blättert Anzeige zurück
<g>: springt zum Anfang der Datei
<G>: springt ans Ende der Datei
<h>: zeigt weitere Informationen an
<q>: verlassen der Anzeige
</>[Zeichenkette]: suche nach einer Zeichenkette
<n>: Suche fortsetzen

touch [Datei]

erzeugt eine Datei bzw. aktualisiert das Datum einer Datei.

touch test.txt

-

grep -ni [Zeichenkette] [Dateien]
(global regular expression parser)

sucht nach der Zeichenkette [Zeichenkette] in den Dateien [Dateien] (sind durch Freizeichen zu trennen) und gibt die Zeilennummer und die Zeichenkette der Treffer aus.

grep -ni der text.txt test.log

mit Schalter [-i] unterscheidet der Befehl nicht zwischen Groß- und Kleinschreibung.

[Befehl] > [Datei]

leitet die Ausgabe eines Befehls [Befehl] in die Datei [Datei] um.

ls -la > Inhalt.txt

-

[Befehl] < [Datei]

leitet den Inhalt der Datei [Datei] zum Programm [Befehl] um.

grep -ni rwx < Inhalt.txt

-

[Befehl1] | [Befehl2]

die Programme [Befehl1] und [Befehl2] werden nebenläufig (parallel) gestartet. Dabei wird die Ausgabe von [Befehl1] zur Eingabe von [Befehl2].

less Inhalt.txt | grep -ni rwx

-

6. Datei- bzw. Verzeichnisrechte

Befehl Beschreibung Beispiele Tipps
-
Zugriffsrechte werden z.B. mit dem Befehl ls -l als eine 10stellige Zeichenkette dargestellt. Das erste Symbol gibt an um welchen Typ es sich bei diesem Eintrag handelt. Die nächsten Zeichen werden in drei Dreiergruppen unterschieden. Z.B.

Beispiel für Zugriffsrechte
Zuordnung der Dreiergruppe
Bedeutung
-rw-r--rwx Rechte des Eigentümers
Eigentümer darf lesen und schreiben aber die Datei nicht ausführen lassen.
-rwxr--rwx Rechte der Gruppe
Mitglieder der Gruppe dürfen die Datei nur lesen.
-rwxr--rwx Rechte der Anderen
Andere dürfen die Datei lesen, schreiben und sie ausführen lassen.

Symbol
Bedeutung
erstes Symbol

- "normale" Datei
b Blockorientiertes Gerät
c Zeichenorientiertes Gerät
d Verzeichnis
l Symbolischer Link (Verweis)
p FIFO-Datei (named pipe)
s Unix domain socket
weitere Symbole

r
Leserecht ist gesetzt
w
Schreibrecht ist gesetzt
x
Ausführungsrecht ist gesetzt
-
entsprechendes Recht ist nicht gesetzt

-
-
chown [Benutzer] [Ziel]
(change owner)
Ändert Besitzer in [Benutzer] des Eintrags [Ziel].
chown nobody test1.txt
-
chgrp [Gruppe] [Ziel]
(change group)
Ändert die Gruppenzugehörigkeit in [Gruppe] des Eintrags [Ziel].
chgrp wheel Test/
-
chmod [Modus] [Ziel]
(change mode)
Ändert den Typ bzw. Zugriffsrechte in Typ bzw. Zugriffsrechte [Modus] des Eintrags [Ziel].
Schalter für Modus:
[Gruppe][+ oder -][Zugriffsrecht]

[Gruppe] := u (user = Eigentümer), g (group = Gruppe), o (others = Andere)
[+ oder -] = setzen (+) oder löschen (-) eines Zugriffsrecht
[Zugriffsrechte] := r (read = Leserecht), w (write = Schreibrecht), x (x = execute = Ausführungsrecht)

chmod u+x o-r test1.txt
Rechte können auch als Oktalzahl für jede Dreiergruppe geschrieben werden.

7. Prozesse

Befehl

Beschreibung

Beispiele

Tipps

jobs

Zeigt alle von dieser Shell gestarteten und noch nicht terminierten Programme an. Jedes angezeigte Programm hat eine Nummer in der Reihenfolge des Starts des entpreschenden Programms.

-

-

fg [jobid]
(foreground)

Holt ein Programm aus dem Hintergrund in den Vordergrund.

fg 2

[jobid] ist Nummer aus der Anzeige des jobs-Befehls

bg [jobid]
(background)

Lässt ein Programm mit der Nummer [jobid] nebenläufig (im Hintergrund) agieren.

bg 1

[jobid] ist Nummer aus der Anzeige des jobs-Befehls

<ctrl-z>

"Suspend", aktuell laufendes Programm wird inaktiviert und in den Hintergrund geschickt.

sleep 500
<ctrl-z>

-

<ctrl-c>

beendet ein aktuell laufendes Programm.

-

nützlich, wenn sich ein Programm in einer Endlosschleife oder ähnliches befindet.

./[Dateiname] & oder [Dateiname] &

Startet ein Programm mit dem Namen [Dateiname] nebenläufig (parallel) zu anderen.

sleep 500 &

-

ps
(process status)

Zeigt alle aktuellen Prozesse ("ausgeführtes Programm") des Eigentümers mit zusätzlichen Informationen an (z.B. processid, CPU-Zeit, Speichernutzung etc.)

-

-

kill -15 [processid]

Beendet einen Prozess ("ausgeführtes Programm") mit der Nummer [processid].

killl -15 40986

Die processid kann aus der Ausgabe des ps-Befehls abgelesen werden.



8. Hilfe zu Befehlen

Befehl

Beschreibung

Beispiele

Tipps

man [-ak] [Befehl]
(manual)

zeigt Beschreibung/Hilfe zu Befehl [Befehl]
Schalter:
[-a]: zeigt alle existierenden Beschreibungen zu Befehl [Befehl]
[-k]: sucht nach Stichwort [Befehl] in Beschreibungen aller Befehle

man man
man -a write

man -a [Befehl], um sich den Befehl in allen Kontexten (z.B. als Shell-Befehl, API-Befehl, TCL-Skript-Befehl, etc.) anzeigen zu lassen.
man -k [Stichwort], um nach einem bestimmten Befehl zu suchen.

info [Befehl]

zeigt Beschreibung/Hilfe zu Befehl [Befehl]

info write

vergleichbar zu man

whatis [Befehl]

gibt eine Liste mit ggf. unterschiedlichen Beschreibungen des Befehls.

whatis write

wie man -a

apropos [Stichwort]

sucht nach Befehlen in deren Name bzw. deren Beschreibung das Stichwort vorkommt.

apropos write

wie man -k

9. Komprimierungs- und Archivierungswerkzeuge

Befehl

Beschreibung

Dateiendungen

Tipps

tar [cxvtf] [Archiv] [Quelle]
(tape archiver)

Archiviert (unkomprimiert) Dateien bzw. Verzeichnisse in eine Datei.

Mit Schalter [cvf] wird eine neues Archiv erstellt.
Mit Schalter [tvf] wird der Inhalt eines Archivs ausgegeben.
Mit Schalter [xvf] wird ein Archiv dearchiviert.

.tar

Dateien können mehrere Endungen haben, z.B. .tar.Z. Die Datei ist also zunächst mit dem Programm tar archiviert worden und anschließend mit dem Programm gzip komprimiert worden. Wenn das Archiv wiederhergestellt werden soll, dann gilt es die umgekehrte Reihenfolge zu durchlaufen.
Neuere tar-Versionen können durch den zusätzlichen Schalter "z" automatisch komprimieren und dekomprimieren (im gzip-Format).

zip [Archiv] [Quelle]

Archiviert und komprimiert Dateien bzw. Verzeichnisse in eine Datei

.zip

Dieses Komprimierungsverfahren ist mit Winzip kompatibel.

unzip [-lt] [Archiv] [Verzeichnis]

Dearchiviert und dekomprimiert ein Archiv.
Ohne Schalter wird Archiv dekomprimiert
Mit Schalter [-l] wird Inhalt des Archivs ausgegeben
Mit Schalter [-t] wird das Archiv überprüft

.zip

s.o.

gzip [Quelle]
(gnu zip)

ähnlich zip, lediglich nach einem anderen Verfahren und mit der Beschränkung auf eine Datei, die archiviert und komprimiert werden kann.

.gz / .Z

Wird oft in Zusammenhang mit tar benutzt.

gunzip [Archiv]
(gnu unzip)

dekomprimiert ein mit gzip erstellte Datei.

.gz / .Z

s.o.


Rémy Apfelbacher, 2002
Martin v. Löwis, 2005