Das Betriebssystem, in unserem Falle Linux, stellt eine Schnittstelle zwischen Anwendungsprogrammen und der Hardware (Tastatur, Bildschirm, Maus, Festplatten, Netzwerk,...) dar. Das Betriebssystem ist also eine virtuelle Maschine mit einfachen Aufrufen zur Bedienung der Hardware.
Eine Shell ist nun ein Anwendungsprogramm, welches Eingaben vom Benutzer in geeignete Betriebssystemaufrufe umsetzt und ggf. andere Programme aufruft (d.h. das Betriebssystem mit einem bestimmten Aufruf das Programm starten lässt).
Auch andere Betriebssysteme haben zur Bedienung Shells: Unter Windows NT/2000/XP gibt es
CMD.EXE
.
Die
bash
ist ein Interpreter mit einer
vollständigen Programmiersprache
. Es können damit
on-the-fly
kleine Programme mit Schleifen, Abfragen etc. erstellt werden, ohne dass man einen Editor dazu bemühen muss.
Da die Eingabe über die Tastatur speziell bei langen Pfadnamen (255 Zeichen für einen Dateinamen!) sehr mühsam und fehleranfällig ist, bietet die bash einige nützliche Features (einige dieser Features gibt es erstmals auch in der Shell von Windows XP):
Ergänzung der Kommandozeile
Kommandos oder Pfade brauchen nicht vollständig eingetippt werden. Meist genügen wenige Buchstaben, die dann durch Drücken der Taste
TAB
(Tabulator) auf den richtigen Pfad (das richtige Kommando) ergänzt werden. Falls der Pfad nicht eindeutig ergänzt werden kann, werden alle Möglichkeiten durch neuerliches Drücken von
TAB
angezeigt. Pfade werden immer zum nächsten Directory ergänzt oder zumindest soweit sie eindeutig sind.
History
Die letzten Befehle können mit den Cursor-Tasten ausgewählt und editiert werden.
Mit
!!
wird der letzte Befehl ausgeführt, mit
!-2
wird der vorletzte mit
!-3
der vorvorletzte usw. ausgeführt. Mit
!15
wird der 15. Befehl ausgeführt.
Mit
!string
wird der letzte Befehl, der mit
string
begonnen hat, ausgeführt.
Mit
!?string?
wird der letzte Befehl, der
string
enthält ausgeführt.
Mit
string1^string2
wird das letzte Kommando ausgeführt, wobei
string1
durch
string2
ersetzt wird.
Der Befehl
history
zeigt eine Liste der letzten Kommandos (mit deren Nummer) an.
Durch Drücken von
^r
(
Strg+R
) kommt man in den Kommando-Suchmmodus, d.h. es wird das letzte Kommando angezeigt, welches die im folgenden getippten Buchstaben enthält. Mit weiteren
^r
kommt man zum nächsten Befehl, der die Buchstaben enthält. Mit Enter wird der Befehl ausgeführt, mit den Links- und Rechts-Pfeiltasten kann der gewählte Befehl editiert werden.
Weiteres siehe unter
man bash
.
Beispiele ($
stellt den Prompt dar, alles hinter #
gilt als Kommentar):
$ vim Telegramme.c # editieren
$ gcc -o telegramme Telegramme.c # compilieren
$ telegramme # ausführen
$ !v # Wiederholung von vim
$ !gc # neuerliches compilieren
$ !t # Aufruf von telegramme
Job-Control
Ein laufendes Programm kann mit
^z
(
Strg-Z
) unterbrochen werden. Danach kann mit der
bash
weitergearbeitet werden. mit dem Befehl
fg
kann das letzte unterbrochene Programm wieder fortgesetzt werden.
Es können auch mehrere Programme unterbrochen werden (z.B.
vim
wird unterbrochen,
man fprintf
aufgerufen, dieses Kommando wird unterbrochen usw.). Die unterbrochenen Programme können mit
jobs
aufgelistet werden. Ein bestimmtes gestopptes (unterbrochenes) Programm mit der Job-Nummer
2
kann mit
fg %2
wieder in den
Vordergrund
gebracht werden.
Mit diesen Möglichkeiten kann leicht zwischen mehreren Programmen hin- und hergeschaltet werden.
Programme, die vermutlich länger ohne Eingaben vom Benutzer laufen werden, können durch Anhängen von
&
als Hintergrundprozesse gestartet werden. Ein Hintergrundprozess kann ebenfalls mit
fg
wieder in den Vordergrund gebracht werden.
Beispiel: es sollen alle C-Files gesucht werden und die Namen (Pfade) in einer Liste gespeichert werden ($ ist der Prompt, wird also nicht eingegeben):
$ find / -name '*.c' -print > c-files.txt &
[1] 3751 # Job-Nummer und Prozess-ID wird angezeigt
$ vim Telegramme.c
[1]+ Done find . -name '*.c' -print >c-files.txt # Benachrichtigung, dass Kommando fertig
$ less c-files.txt # Anzeigen des Files
Obiges Kommando könnte mittels
kill %1
oder
kill 3751
(
kill
und Prozess-ID) vorzeitig abgebrochen werden.
Programme im
Vordergrund
können mit
^c
(
Strg+C
) abgebrochen werden.
Befehlssyntax
Generell sind Unix-Kommandos wie folgt aufgebaut:
$ cmd [optionen] [argument]...
Die eckigen Klammern
[ ]
zeigen an, dass dieser Teil optional ist. Die drei Punkte
...
bedeuten, dass der Teil davor mehrfach vorhanden sein kann.
Prinzipiell können immer mehrere Parameter angegeben werden. Optionen beginnen immer mit einem Minus (
-
) und werden von einem Buchstaben gefolgt. Mehrere Optionen können zusammengefasst werden. z.B.
ls -a -l
kann auch als
ls -al
eingegeben werden.
Viele (neuere, GNU-) Programme erlauben auch
lange
Optionen, d.h. ganze Wörter zur Bezeichnung einer Option. Solche Optionen beginnen mit zwei Minus (
–
). Das Kommando
find
ist hier eine Ausnahme (s.o.).
Beispiel: ls -l
und
ls –format=long
geben beide den Inhalt des Verzeichnisses im langen Format aus.
Generell sind Wildcards und
reguläre Ausdrücke als Argumente möglich (die Shell erweitert reguläre Ausdrücke auf Listen von Parametern, d.h. das Kommando wird dann mit einer Liste aller passenden Files aufgerufen).
Wildcards
Wildcards sind Ersetzungsmuster, die von der Shell ersetzt werden. Wenn Sie z.B. alle Dateien auflisten wollen, die mit einem
'a'
beginnen, dann geben Sie
echo a*
ein. Es werden dann Dateien der Art
a
,
a1
,
abc
,
alloc.c
aufgelistet, falls sie existieren. Der
'*'
steht für
kein,
ein oder
mehrere beliebige Zeichen. Wenn Sie Dateien suchen, die ein
'z'
enthalten, dann geben Sie
echo *z*
ein. Tatsächlich
ändert aber die Shell die
Parameterliste für den Befehl
echo
, d.h. die Shell erzeugt eine Liste von Dateinamen, auf die das Muster zutrifft und ruft dann erst
echo
auf.
Nehmen Sie an, das aktuelle Verzeichnis enthielte folgende Dateien:
a.c zahlen.c anz.c anz.h anz hello.c a.out
Wenn Sie nun
echo *z*
eingeben, erzeugt die Shell folgenden Aufruf
echo zahlen.c anz.c anz.h
und führt den Befehl aus.
echo
braucht sich nicht darum zu kümmern!
Die Shell versteht noch andere Musterangaben. Beispielsweise:
[aeiou]* | alle Dateien, die mit einem Selbstlaut beginnen |
[0-9a-h]* | alle Dateien, die mit 0 bis 9 oder a bis h beginnen |
?? | alle Dateien, die aus genau 2 Zeichen bestehen (? steht für ein Zeichen) |
*.[^ch] | alle Dateien, die nicht mit .c oder .h enden |
\* | alle Dateien, die einen Stern enthalten |
Mehr dazu unter
man bash
.
Abkürzungen
Tilde ~
~/
ist eine Abkürzung für das Home-Verzeichnis des angemeldeten Benutzers (meist
/home/user
, wenn
user
der Loginname).
~user/
ist die Abkürzung für das Homeverzeichnis des Users
user
.
alias
Mit dem Befehl
alias
können selbst Abkürzungen zu längeren Befehlen gemacht werden:
alias md="mkdir" | md ist nun eine Kurzversion von mkdir (MaKe DIRectory) |
Sie können mehrere immer wieder verwendete Abkürzungen in der Datei
.bashrc
speichern.
.bashrc
ist eine Datei, die automatisch beim Starten einer
bash
interpretiert (ausgeführt) wird.
Der Befehl
alias
ohne Argumente gibt die Liste der derzeit aktiven Abkürzungen aus.
Shell-Variable
Da die
bash
eine vollständige Programmiersprache ist, gibt es natürlich auch Variable. Diese Variable werden nicht nur für die Programmierung eingesetzt sondern auch für die Konfiguration.
Shell-Variable werden üblicherweise in Großbuchstaben geschrieben (Groß-/Kleinschreibung ist entscheidend).
Für die interaktive Verwendung wird normalerweise das Kommando
export
verwendet:
export PATH=~/bin:$PATH
Mit obigem Befehl wird der Suchpfad, das sind diejenigen Verzeichnisse, in denen ein Programm oder ein Kommando gespeichert ist, geändert. Es wird der Pfad
~/bin
vorne angefügt.
$PATH
liefert den Inhalt der Variable
PATH
(es erfolgt reine Textersetzung).
Einige Variable sind schon vordefiniert:
$HOME | Homeverzeichnis |
$SHELL | die verwendete Shell |
Ein-/Ausgabeumlenkung
Die Ausgabe von Kommandos kann mit dem Größerzeichen (
>
) in eine Datei umgelenkt werden. Z.B.:
ls -l /usr/bin > ls.txt
Die Datei
ls.txt
wird erzeugt und die Ausgabe von
ls
darin gespeichert.
Verwendet man zwei Größerzeichen (
>>
), so wird die Ausgabe an die angegebene Datei angehängt.
Umgekehrt kann auch die Eingabe für ein Programm aus einer Datei erfolgen, indem man das Kleinerzeichen verwendet:
grep ^d
<eingabedatei
Diese Varianten können kombiniert werden.
kommando parameter… <eingabedatei>ausgabedatei
Oft werden Kommandos direkt kombiniert, indem die Ausgabe eines Programms direkt in die Eingabe des nächsten Programms
gepumpt
wird. Die Programme werden mit einer
pipe(pipeline) verbunden. Das dafür nötige Zeichen ist der senkrechte Strich (
|
):
ls -l | grep ^d
Obiger Befehl gibt alle Verzeichnisse aus, da
grep
mit dem Parameter
^d
alle Zeilen, die mit einem
'd'
beginnen, ausgibt.
Es können beliebig viele Programme mit pipes verbunden werden, es entsteht dadurch eine richtige Verarbeitungskette. Ist die Ausgabe sehr lange, so könnte im obigen Beispiel noch
less
verwendet werden, um in der Ausgabe blättern zu können.
ls -l | grep ^d
| less
Auf diese Weise lassen sich komplexe Aufgaben einfach und effizient erledigen.
Dabei ist zu beachten, dass die Shell hier einige Arbeit übernimmt: bei der Eingabeumlenkung öffnet die Shell die Datei zum Lesen und
tippt
die Zeilen ein. Bei der Ausgabeumlenkung öffnet die Shell die Datei zum Schreiben und verschiebt die Ausgabe in diese Datei. Die pipe kann man sich als temporäre Datei vorstellen, in die das eine Programm schreibt und aus der das nächste Programm liest, wenngleich der Mechanismus natürlich effizienter gelöst ist.
Wichtige Kommandos
Fast alle Befehle oder Programme erlauben die Option
-h
,
-help
(ein Minus) oder
–help
(zwei Minus) und geben dann eine Kurzhilfe aus.
ls [optionen] [path]...
Anzeigen des Inhalts von Verzeichnissen. Die wichtigsten Optionen sind:
-l
um alle Informationen (langes Format) anzuzeigen,
-a
um alle Dateien anzuzeigen (auch die versteckten)
cp src... dest
Kopieren von Dateien. Hat
cp
mehr als zwei Parameter, so muss der letzte Parameter ein Verzeichnis sein.
Mit der Option
-r
können rekursiv ganze Verzeichnisbäume kopiert werden.
mv src... dest
Umbenennen/Verschieben von Dateien (move). Hat
mv
mehr als zwei Parameter, so muss der letzte Parameter ein Verzeichnis sein.
rm list...
Löschen von Dateien (remove).
Mit der Option
-r
können rekursiv ganze Verzeichnisbäume gelöscht werden (
VORSICHT:
rm -rf *
löscht alles innerhalb und unterhalb des aktuellen Verzeichnises).
mkdir list...
Erstellen von Verzeichnissen.
cd [path]
Wechsel in das angegebene Verzeichnis. Wird kein Parameter angegeben, so wird ins Home-Verzeichnis gewechselt.
rmdir list...
Löschen von Verzeichnissen (nur leere Verzeichnisse).
cat [list...]
Ausgeben der angegebenen Dateien (die angegebenen Dateien werden auf diese Weise verkettet, da sie unmittelbar hintereinander ausgegeben werden)
less [list...]
Seitenweise Ausgabe der angegebenen Dateien
tar czf archiv.tgz list...
Ein komprimiertes Archiv mit dem Namen
archiv.tgz
aus den Dateien/Verzeichnissen list… erzeugen
tar xzf archiv.tgz
Das Archiv wieder auspacken
tar tzf archiv.tgz
Den Inhalt des Archivs ausgeben.
tar
bietet noch viel mehr Optionen und Möglichkeiten und war ursprünglich ein Programm zur Datensicherung auf Bänder (tape archiver).
file list...
gibt die Dateitypen aus. Unter UNIX haben die Datei-Endungen nicht die Bedeutung wie unter Windows, oft kann die Endung beliebig gewählt werden. Das Programm
file
öffnet nun die angegebenen Dateien und versucht aufgrund des Inhalts den Typ zu ermitteln.
touch list...
ändert die Zugriffszeit der angegebenen Dateien oder erzeugt diese, wenn sie nicht existieren (Dateien mit der Länge 0).
grep suchbegriff [list...]
Sucht den Suchbegriff in den gegebenen Dateien oder Standardeingabe (Eintippen oder Eingabeumlenkung). Wenn nur der Dateiname gesucht ist, der den Suchbegriff enthält, dann ist die Option
-l
anzugeben. Der Suchbegriff kann aus regulären Ausdrücken bestehen, wodurch man komplexe Suchmuster angeben kann. Zu beachten ist allerdings, dass viele Sonderzeichen für reguläre Ausdrücke, eine spezielle Bedeutung in der Shell haben. Sie müssen daher maskiert werden, z.B. mit vorangestelltem
\
oder unter einfache Hochkomma (
'
). Mehr dazu unter
man grep
bzw.
man bash
.
ps
Prozessstatus, listet alle Prozesse auf, die in dieser Shell gestartet wurden.
ps axu
listet alle Prozesse, aller User plus Zusatzinformationen auf. Die erste Spalte enthält den Usernamen, die zweite Spalte die Prozess-ID (PID) und die letzte Spalte den genauen Befehl.
kill [signal] pid...
Schickt den angegebenen Prozessen das TERM-Signal (Terminieren). Die wichtigen Signale sind:
-TERM
,
-KILL
(tötet den Prozess auf alle Fälle)
killall [signal] name...
Schickt den angegebenen Prozessen das TERM-Signal (Terminieren). Die Prozesse werden durch den Befehlsnamen name (aufgerufenes Kommando) ausgewählt.
Will man z.B. alle mozilla-Prozesse killen, gibt man
killall mozilla
ein.
sort [list...]
gibt die Zeilen der angegebenen Dateien sortiert aus (bzw. die Zeilen der Standardeingabe).
uniq [eingabedatei] [ausgabedatei]
löscht doppelte Zeilen aus einer sortierten Eingabe.
Fortgeschrittenes
Es gibt mehrere Möglichkeiten, aus der Ausgabe eines Programms Argumente für die Kommandozeile zu machen.
- Backticks:
$ ls `echo $HOME`
Hier wird zunächst der Befehl echo $HOME
ausgeführt und dessen Ausgabe wird zum Argument des Befehls ls
(das Home-Verzeichnis wird aufgelistet).
xargs
Das ist ein Programm, das von der Standardeingabe zeilenweise liest und jede Zeile als ein Kommandozeilenargument an das xargs
übergebene Programm übergibt. Obiges Beispiel kann man also auch so schreiben:
echo $HOME|xargs ls
Hilfe
UNIX-Systeme werden normalerweise mit ausführlicher Online-Dokumentation ausgeliefert. Die Standarddokumentation entspricht den gedruckten Handbüchern und ist in mehrere Abschnitte eingeteilt:
1 Ausführbare Programme oder Shellbefehle
2 Systemaufrufe (Kernelfunktionen)
3 Bibliotheksaufrufe (Funktionen in System-Bibliotheken)
4 Spezielle Dateien (gewöhnlich in
/dev
)
5 Dateiformate und Konventionen, z. B.
/etc/passwd
6 Spiele
7 Makropakete und Konventionen, z. B. man(7), groff(7)
8 Systemadministrationsbefehle (in der Regel nur für root)
9 Kernelroutinen [Nicht Standard]
n neu [veraltet]
l lokal [veraltet]
p öffentlich [veraltet]
o alt [veraltet]
Zu jedem Befehl (Thema) gibt es eine Seite (können auch mehrere Seiten sein) mit dem Namen des Befehls (Themas). Will man eine bestimmte Seite des Manuals lesen, so verwendet man den Befehl
man
(manual):
man [abschnitt] seite
Wird abschnitt weggelassen, so zeigt
man
die passende Seite mit der niedrigsten Abschnittsnummer an. Oft gibt es zu einem Thema in mehreren Abschnitten eine Seite. Dann muss der gewünschte Abschnitt angegeben werden.
Beispiele:
man man | Hilfe zu man |
man bash | Hilfe zur bash |
man tar | Hilfe zu tar |
man printf | Hilfe zu printf der Shell |
man 3 printf | Meist will man aber Hilfe zur C-Funktion printf |
Oft weiß man nicht genau, welche Manualseite man braucht. Mit
man -k schlüsselwort
kann man nach Schlüsselworten suchen lassen. Die Ausgabe ist eine Liste der Befehle, auf die das Schlüsselwort zutrifft.
apropos schlüsselwort
sucht nach Schlüsselworten in der Indexdatenbank der Manualseiten.
Für GNU-Programme hat sich die Dokumentation im info-Format eingebürgert:
info seite
kdehelp
bietet Zugriff auf all diese Informationen sowie den Hilfetexten des KDE-Desktops.
kdehelp
ist auch über einen Menüpunkt des KDE-Menüs erreichbar. Bei neueren KDE-Versionen heißt das Programm
khelpcenter
.
Weitere Informationen
Fragen
1. Was ist eine Shell?
2. Geben Sie Beispiele verschiedener Shells!
3. Wie wird die Eingabe von langen Pfaden bei der bash erleichtert?
4. Welche Möglichkeiten gibt es frühere Befehle wieder zu verwenden? Nennen Sie 3 Arten!
5. Wie können in einer Shell mehrere Programme so gestartet werden, dass sie gleichzeitig laufen?
6. Wie funktioniert Job-Control? Was ist der Zweck?
7. Was sind Shell-Variable? Nennen Sie zwei Beispiele für die Verwendung!
8. Wie sieht die allgemeine Befehlssyntax aus?
9. Welche Bedeutung hat das Symbol
~
?
10. Was können Sie tun, damit Sie statt
ls
das Kommandos
dir
verwenden können?
11. Was müssen Sie tun, damit
dir
auch beim nächsten Mal wieder funktioniert?
12. Was können Sie tun, wenn ein Programm keine Dateien lesen/schreiben kann, Sie aber mit diesem Programm dennoch Dateien bearbeiten wollen?
13. Sie haben 3 Dateien
adr1
,
adr2
und
adr3
, welche Zeilen mit Namen und e-Mail-Adressen enthalten. Eine Zeile hat die Form
name vorname email
. Die Einträge sind nicht sortiert. Manche Namen kommen nur in einer Datei vor, andere in mehreren Dateien. Geben Sie die Kommandozeile an, die alle 3 Dateien verknüpft, sortiert, die doppelten Namen löscht und in die Datei
adr
ausgibt. Welcher Mechanismus muss hier verwendet werden?
14. Sie haben ein Programm
myprog
gestartet, welches hängen geblieben ist. Welche Möglichkeiten haben Sie, das Programm zu beenden?
15. Sie wollen wissen, welche C- oder Java-Datei im aktuellen Verzeichnis die Funktion
longjmp
enthält. Geben Sie das Kommando an! Was passiert hier genau?
16. Sie wissen nicht genau, wie Befehl zum Archivieren/Zippen von Dateien heißt. Wie finden Sie die Information?
Labels: Linux, POS1-2
Linux oder oft auch
GNU/Linux ist ein
unix-ähnliches freies Betriebssystem, welches im Gegensatz zu Windows für viele Plattformen (x86, IA64, PPC, SPARC, Alpha, MIPS, ARM, PA-RISC, S/390, PowerPC uvam.) verfügbar ist.
Eigentlich ist Linux nur der Betriebssystemkern aber man kommt bei einer
Distributionüblicherweise eine Menge anderer (System-)Software mitgeliefert, sodass man gleich nach der Installation alles hat, was man zum Arbeiten braucht. Bürosoftware, Kommunikation/Internet, Grafik, Entwicklung, Multimedia und Spiele - alles auf einmal installieren.Die Software ist durchwegs frei, d.h. auch im Sourcecode verfügbar. Mittlerweile gibt es aber auch schon zahlreiche kommerzielle Programme für Linux.
Der m.E. größte Unterschied zu Windows ist eher eine philosophische:
Linux/Unix Software ist optimal für den Programmierer Malcolm designed, bei Windows ist es Tante Emma, die im Mittelpunkt steht.
Einführung in Linux
Linux ist ein UNIX System. Die folgenden Aussagen beziehen sich daher auf UNIX und Linux.
Die beiden Autoren von UNIX, Ken Thompson und Dennis Ritchie schreiben:
Es ist vielleicht paradox, dass der Erfolg des UNIX Systems hauptsächlich darauf zurückgeht, dass es nicht entworfen wurde, um irgendwelche vordefinierten Ziele zu erfüllen.
Dem UNIX System liegt die Philosophie zugrunde,
eine Computerumgebung zu schaffen, in der sie selbst (Anmerkung: die Autoren von UNIX) ihre eigene Arbeit in komfortabler und effektiver Weise weitertreiben konnten - Forschung auf dem Gebiet der Programmierung
.
Die wichtigsten Maxime von UNIX sind:
1. Jedes Programm soll eine einzige Aufgabe gut erfüllen. Um eine neue Aufgabe zu erledigen, baue eher ein neues Werkzeug, als alte Programme durch Hinzufügen neuer Eigenschaften zu verkomplizieren.
2. Erwarte jederzeit, dass die Ausgabe eines Programmes zu einer Eingabe für ein anderes, vielleicht noch unbekanntes Programm wird.
3. Entwerfe und programmiere Software, sogar Betriebssysteme, so, dass sie früh, idealerweise innerhalb von Wochen, ausprobiert werden kann.
4. Benutze lieber Werkzeuge als unqualifizierte Hilfsmittel, um eine Programmieraufgabe zu erleichtern, auch wenn sich dadurch der Umweg ergibt, diese Werkzeuge erst bauen zu müssen. Erwarte auch, einige davon wegzuwerfen, nachdem sie nicht mehr gebraucht werden.
Die Philosophie von UNIX wurde nie explizit festgelegt, sondern äußert sich implizit in seinen Charakteristiken.
Charakteristiken von Unix
Modularität
Alle Aufgaben werden in Grundbestandteile zerlegt. In einem Programm wird, soweit möglich, eine und genau eine Grundfunktion realisert.
Soviel wie nötig, so wenig wie möglich
Wiederverwendbarkeit
Durch das Lösen von Grundaufgaben im Gegensatz zu aktuellen Spezialaufgaben wird Software in hohem Maß wiederverwendbar.
Generalität
Kombinierbarkeit
Wie sich die Bausteine aus einem Baukasten zu einem ganzen Bauwerk zusammenfügen lassen, so können die einzelnen Programme unter UNIX zu einem größeren Software-"Bauwerk" kombiniert werden.
Verständlichkeit
Aus dem relativ geringen Umfang der einzelnen Software-Bausteine ergibt sich eine erhöhte Verständlichkeit, da kleine Teile stets besser zu überblicken sind als große.
Flexibilität
Der Benutzer kann zwar die gebotenen Leistungen in Anspruch nehmen, vermag sich jedoch auch die Umgebung nach seinen eigenen Vorstellungen selbst zu gestalten.
Besonderheiten von Linux
Linux bezeichnet eigentlich nur den Kernel und wird unter der GNU General Public License verteilt. Allerdings wird unter dem Begriff Linux meist die gesamte Betriebssystemumgebung gemeint, das ist also der Kernel und die Systemsoftware des GNU-Projekts. Korrekterweise müsste man also von GNU/Linux sprechen.
Genaueres zur GNU General Public License ist auf der Homepage des GNU-Projektes zu finden:
www.gnu.org
Eigenschaften von UNIX/Linux
Die folgenden Aussagen gelten auch für Linux.
Hierarchisches Dateisystem – alles ist eine Datei.
Multitasking – mehrere Prozesse (laufende Programme) zur selben Zeit.
Multiuser – mehrere Benutzer zur selben Zeit.
Netzwerkfähigkeiten – TCP/IP und damit die Basis des Internets ist mit UNIX
groß geworden
, in UNIX ist die Netzwerkfähigkeit schon integriert.
Plattformunabhängigkeit – UNIX gibt's für praktisch jede Hardware.
Programmierplattform - UNIX wird von Haus aus mit einer Fülle von Softwarentwicklungs-Tools geliefert.
UNIX ist
transparent – die gesamte Systemkonfiguration ist für den Administrator frei zugänglich (praktisch immer in Form von Textdateien).
UNIX ist
automatisierbar – praktisch jede (Administrations-)Aufgabe ist automatisierbar.
Flexible Benutzerschnittstelle – es existiert eine Fülle an verschiedenen grafischen Oberflächen, KDE und Gnome sind die häufigsten.
(unvollständiger) Vergleich Windows - Linux KDE
Windows | Linux/KDE/Gnome |
Doppelklick | Einfachklick (bei Gnome Doppelklick, Einfachklick im nautilus einstellen) |
\ als Verzeichnistrenner | / als Verzeichnistrenner, / am Anfang eines Pfades ist das Wurzelverzeichnis (root directory) |
Laufwerke | Verzeichnisbaum, Einhängen (mount) von Wechseldatenträgern, Server-Verzeichnisse |
„Eigene Dateien“ | /home/$USER ($HOME entspricht dem Benutzernamen) |
Lizenz | GPL (General Public License) |
Große umfangreiche Programme | Viele kleine Programme mit jeweils nur einem begrenzten Aufgabenumfang (es gibt schon große – OpenOffice) |
Kommandozeile schlecht unterstützt – hauptsächlich graphische Oberfläche | Gute Unterstützung für Kommandozeile – verschiedene Shells (Filename-Expansion, History, eigene Programmiersprache in Shell integriert) |
Dateiendungen wichtig | Dateiendungen nicht so wichtig |
Registry für Einstellungen | Einstellungen werden in „unsichtbare“ Textdateien gespeichert, viele kleine Dateien |
ftp – eigenes Programm nötig | ftp in konqueror integriert |
Login/Shutdown - ++ | Eigene Kommandos, Login direkt |
Zugriffsrechtesystem (falls eingesetzt) feiner abstimmbar | Rechte nur auf Eigentümer, Gruppe, andere |
Anwendungssoftware muss extra erworben und installiert werden | Die meisten Distributionen enthalten eine Menge freier Anwendungssoftware, die gleich bei der ersten Installation mit installiert werden kann |
Programmierumgebungen müssen extra erworben und installiert werden | Programmierumgebungen sind mit dabei |
Viele Spiele | Wenig Spiele |
Viele Viren | Keine Viren |
Interessante Daten zu Linux
Folgende Informationen stammen aus dem Bericht
"Estimating the Total Development Cost of a Linux Distribution":
- Bezogen auf 2008 gezahlte Gehälter würde eine Linux-Distribution etwa 10,8 Milliarden US-Dollar kosten.
- Das sind etwa 204,5 Millionen Zeilen Quellcode.
- Das entspricht einem Aufwand von ca. 60.000 Personenjahren.
- Für etwa 6,8 Millionen Zeilen Code des Kernels wäre das ein Wert von 1,4 Milliarden US-Dollar.
- Darin steckten 7.500 Personenjahre Arbeit.
Ähnliche Informationen zu Windows konnte ich leider nicht finden.
Fragen
1. Was ist Linux?
2. Erklären Sie die Philosophie, die hinter UNIX/Linux steckt!
3. Was sind die Charakteristiken von UNIX/Linux?
4. Welche Eigenschaften hat UNIX/Linux?
5. Vergleichen Sie Windows mit Linux!
6. Wo befinden sich Ihre Arbeitsdateien?
7. Wie werden Eigenschaften von Programmen (Konfiguration) gespeichert?
Labels: Linux, POS1-2