Fragenkatalog 2

Werbung
FRAGEN ZU LINUX
INHALTSVERZEICHNIS
1. Warum ist es wichtig dem Sourcecode zugänglich zu machen?
2. Warum ist es wichtig, freie Software in irgeneiner Form zu lizenzieren?
3. Wenn Sie ein Programm, dass unter GPL lizenziert wurde, verändern und weitergeben, müssen
Sie den veränderten Sourcecode auch zugänglich machen?
4. Was versteht man unter einer Pipe? Erklären Sie und geben Sie ein sinnvolles Beispiel.
5. Welche Dateitypen gibt es in einem Linux-System?
6. Wie kann man feststellen, wie viele harte Links auf eine Datei zeigen? Wann wird der Inhalt der Datei
von der Festplatte gelöscht, wenn mehrere harte Links darauf zeigen?
7. Was ist GNU?
8. Was sind Shell-Variablen?Wozu dienen Sie, wie setzt man sie und wie liest man sie aus?
9. Welche Hardwareanforderungen stellt das Installationsprogramm der Linuxdistributionen die Sie
verwenden?Würde Linux auch mit weniger auskommen?
10. Was ist ein Link? Welche Arten kennen Sie?
11. Welche Arten kennen Sie, Befehle in der Shell zu gruppieren? Erklären Sie die Unterschiede?
12. Welche Möglichkeiten bietet Linux zur Zusammenarbeit mit anderen Betriebsystemen?(z.B.Dos/Win)
13. Welche Wildcards kennen Sie und was bedeuten diese?
LANGFRAGEN ZU LINUX
Homepage GNU: www.gnu.org
1. Warum ist es wichtig dem Sourcecode zugänglich zu machen?
GNU Programme sind ebenso wie Linux (unter gewissen Einschränkungen) frei kopierbar- und zwar nicht nur
als Binärprogramme, sondern mit sämltlichen Codequellen.Das ermöglicht es allen GNU-Anwendern, die
Programme bei Problemen oder Fehlern selbst zu erweitern oder zu korrigieren.Aus diesen Änderungen
resultieren immer bessere und ausgereiftere Versionen der diversen GNU-Programme.
Was genau unter Open Source oder Free Software verstanden wird, ist höchst unterschiedlich und zersplittert. In den Konzernzentralen der
Software-Riesen versteht man unter Open Source einen Entwicklungsprozess, der das Finden und Beheben von Fehlern erleichtern soll, auf
Universitäten und Forschungsinstituten versteht man darunter einen völlig neuen Denkansatz ökonomischer Muster und Prozesse, stark ideologisierte
Linke meinen, in Free Software den Anbruch eines digitalen Sozialismus erkennen zu können. All diese unterschiedlichen Verständnisse von Open
Source wurzeln in einem ganz bestimmten Prinzip, Software zu entwickeln. Bevor dieses Prinzip näher betrachtet werden kann, muss zunächst ein
Begriff geklärt werden: Source Code.
Der Source Code (oft mit ,Quellcode' mehr schlecht als recht ins Deutsche übersetzt) besteht aus einer Reihe von Instruktionen für die Hardware.
Diese Instruktionen können in unterschiedlichen Programmiersprachen verfasst sein. Ein spezielles Programm - ein sogenannter Compiler - übersetzt
diese Instruktionen in Befehle der Maschinensprache, also in ein von der CPU ausführbares Programm. Jede Software, die auf beliebiger Hardware
läuft, ist auf diese Art entstanden; das Betriebssystem ebenso wie Applikationen oder Gerätetreiber. Der Source Code ist also dasjenige Element in
der Kette, das alles erzeugt, das alle Leistungsmerkmale der Software definiert. Im Grunde ist der Source Code damit auch die Software an sich.
Was für Menschen wie eine Reihe mehr oder minder verständlicher Instruktionen aussieht, verwandelt sich durch den Compiler in
Textverwaltungsprogramme, Webserver, Betriebssysteme, Browser, Hardware-Treiber.
Alle GNU-Programme werden unter eine spezielle Lizenz gestellt, die "GNU General Public License" (
GPL) für Programme mit offenem Quellcode.
Auch der Linux-Kernel und viele weitere Programme stehen unter der GPL, ohne jedoch offizieller Bestandteil des GNU-Projekts zu sein (was auch
eine Verwaltung des Copyrights durch die "Free Software Foundation" einschließen würde - wenn es dann rechtliche Probleme gibt, springt die FSF
ein).
Die GPL erlaubt im Wesentlichen die
beliebige Verwendung der entsprechend lizenzierten Programme, verbietet es jedoch, das
Programm oder Ableitungen davon in Umlauf zu bringen, ohne wiederum den Quellcode unter den Bedingungen der GPL freizugeben. Wer
also GPL-Programme verbessert, muss diese Verbesserungen wiederum der Community von Nutzern zur Verfügung stellen.
So soll Software "frei" bleiben von den sonst üblichen Zwängen des Urheberrechts - Closed-Source-Software nennt man dagegen auch "proprietär"
(in exklusivem Besitz).
Neben der GPL gibt es noch andere Lizenzen für Open-Source-Software, die sich insbesondere in Hinblick auf die Verpflichtung zur Freigabe des
Quellcodes bei Veränderungen und die Einschränkung der direkten Verknüpfung mit proprietären Programmen beziehen (
Übersicht). Die
Präferenzen der Entwickler sind stark unterschiedlich und hängen von den jeweiligen ideologischen Vorstellungen ab: Soll alle Software frei sein,
oder soll es eine pragmatische Mischlösung geben?
2. Warum ist es wichtig, freie Software in irgeneiner Form zu lizenzieren?
Oft wird frei mit kostenlos verwechselt.Es stimmt zwar, dass Linux auch kostenlos verfügbar ist; der
Begriff >>frei>> bezieht sich aber auch und vor allem auf die Verfügbarkeit des gesamten Quellcodes(open
source).Das Ziel dedr Entwickler von GNU und Linux war es also , ein System zu schaffen, dessen Quellen
frei verfügbar sind und es auch bleiben.Um einen Mißbrauch auszuschließen, ist Sofware, die im Sinne von
GNU entwickelt wurde und wird, durch die GNU General Public License (GPL) geschützt.Hinter der GPL
steht die Free Software Foundation(FSF).Die Kernaussage der GPL besteht darin, dass zwar jeder den
Code verändern und sogar die resultierenden Programme verkaufen darf, dass aber gleichzeitig der
Anwender/Käufer das Recht auf den vollständigen Code hat und diesen ebenfalls verändern und wieder
kostenlos weitergeben darf.Jedes GNU Programm muss zusammen mit der vollständigen GPL wietergegeben
werden.Durch die GPL geschützte Software ist also nicht mit Public Domain Software zu verwechseln, die
vollkommen ungeschützt ist.Die GPL schließt damit aus, dass jemand ein GPL Programm weiterentwickeln und
verkaufen kann, ohne die Veränderungen öffentlich verfügbar zu machen.Jede Weiterentwicklung ist somit
ein Gewinn für alle Anwender.
3. Wenn Sie ein Programm, dass unter GPL lizenziert wurde, verändern und weitergeben, müssen Sie den
veränderten Sourcecode auch zugänglich machen?
siehe 2.Frage
4. Was versteht man unter einer Pipe? Erklären Sie und geben Sie ein sinnvolles Beispiel.
Pipes werden mit dem Zeichen | abgebildet.Dabei wird die Ausgabe des ersten Kommandos als Eingabe für
das zweite Kommando verwendet. z.b. less -l | less Durch das obige Kommando wird das Inhaltsverzeichnis
des aktuellen Verzeichnisses ermittelt und in eine Pipe geschriben.Von dort liest das parallel ausgeführte
Kommando less seine Eingaben und zeigt sie auf dem Bildschirm an.(unterschiedliche Kommandos zu
kombinieren)
5. Welche Dateitypen gibt es in einem Linux-System?
Unix unterscheidet prinzipell drei Typen von Dateien: gewÄohnliche Dateien, Directories und spezielle Files.
Letztere repräsentierendie Hardware des Systems und werden im Abschnitt 3.7 kurz behandelt.
Gewöhnliche Files können entweder TextFiles, die angesehen oder ausgedruckt werden können, oder Code,
d.h. exekutierbare (ausführbare) Programme sein. Directories (Verzeichnisse) sind unter Unix nichts
anderes als Files, die das Inhaltsverzeichnis des Directories enthalten (und die Information, wo sich die
Dateien befinden). Der Befehl „file filename“ zeigt den Typ der Datei filename an.
6. Wie kann man feststellen, wie viele harte Links auf eine Datei zeigen? Wann wird der Inhalt der Datei
von der Festplatte gelöscht, wenn mehrere harte Links darauf zeigen?
Wichtig ist die Unterscheidung in harte und symbolische Links. Jedes File ist in Wirklichkeit\ ein harter
Link. Es kann aber mehrere (harte) Links geben, die auf dasselbe File zeigen; ein File ist dann gelöscht,
wenn der letzte harte Link auf das File gelöscht ist. Harte links sind hart\ in der logischen Struktur des
Filesystems kodiert und kÄonnen daher nur innerhalb einer Partition verwendet werden (vgl. Abschnitt 3.7).
Symbolische (Soft-, Sym-) Links können äußer die Grenze von Partitionen hinausgehen. Wird ein
symbolischer Link gelöscht, so ist nur der Link verschwunden, nicht das File (auch wenn alle Symlinks auf ein
bestimmtes File gelöscht werden, gibt es das File noch immer). Wird hingegen das File selbst gelöscht (d.h.
der letzte harte Link der darauf zeigt), bleibt der Symlink als Zeiger erhalten, der allerdings ins Leere
zeigt, also unbrauchbar geworden ist; Man spricht von broken\ oder dangling\ Links.
ls –l
- rw-r - - 1 martin cc 55 Nov 14:43 hello.c
Linkcounter
7. Was ist GNU?
Das GNU-Projekt wurde von Richard Stallman mit dem Ziel gegründet, ein vollständig freies
Betriebssystem, das GNU-System, zu entwickeln.
Bekannt ist es insbesondere durch die GNU General Public License (GPL) und GNU/Linux, einer GNUVariante mit Linux-Kernel.
Der Name GNU entstand aus der Namensgebung, die am MIT – dem Institut, an dem Stallman zu dieser
Zeit arbeitete – verbreitet war. Für Programme, die anderen Programmen ähneln, wurden rekursive
Akronyme als Namen gewählt. Da das neue System auf dem verbreiteten Betriebssystem UNIX aufbauen
sollte, suchte Stallman einen solchen Namen und kam dabei auf GNU, was für „GNU is not Unix“ steht. Der
Name soll, um Verwechslungen zu vermeiden, wie das deutsche „Gnu“ ausgesprochen werden, nicht wie im
Englischen (also wie new). Die Entscheidung, GNU Unix-kompatibel zu machen, hatte mehrere Gründe. Zum
einen war Stallman sicher, dass die meisten Firmen ein grundlegend neues Betriebssystem ablehnen würden,
wenn die Programme, die sie benutzten, darauf nicht laufen würden. Andererseits ermöglichte die
Architektur von Unix eine schnelle, einfache und verteilte Entwicklung, da Unix aus vielen kleinen
Programmen besteht, die größtenteils unabhängig von einander entwickelt werden können. Auch waren viele
Bestandteile eines Unix-Systems frei für jeden erhältlich und konnten so direkt in GNU integriert werden,
beispielsweise das Textsatzsystem TeX oder das Fenstersystem X Window. Die fehlenden Teile wurden von
Grund auf neu geschrieben.
8. Was sind Shell-Variablen?Wozu dienen Sie, wie setzt man sie und wie liest man sie aus?
Was ist eine Shell?
Shell ist der Kommandointerpreter unter Unix. Das klingt erst mal kompliziert. Wir haben aber schon die
ganze Zeit mit der Shell gearbeitet. Wir haben Befehle, wie z. B. ls oder date, eingegeben und uns an den
Reaktionen von Unix erfreut. Dieser Dialog wird durch den Kommandointerpreter realisiert. Dieser liegt wie
eine Schale (engl. Shell) über dem Betriebsystem und sorgt für die Kommunikation mit dem Nutzer.
Genaugenommen gibt es unter Unix mehrere Shells (C, Korn, Bash, ...). Jeder Nutzer kann sich für seine
Lieblingsshell entscheiden. muLinux verwendet aber nur eine Shell. Die Unterschiede der Shells sind (für
normale Nutzer) gering und sollten uns daher vorerst nicht interessieren.
Die Funktionalität der bash und die vieler anderer Linux Programme wird durch den Zusatnd so genannter
Shell Variablen gesteuert.Shell Variablen sind mit Variablen einer Programmiersprache vergleichbar, können
allerdings nur Zeichenketten (keine Zahlen) speichern.Die Zuweisung von Shell Variablen erfolgt durch den
Zuweisungsoperator =.Der Inhalt einer Shell Variablen kann am einachsten dirch echo angezeigt werden, wo
bei dem Variablennamen ein $ Zeichen vorangestellt werden muss.
Was ist eine Variable?
Eine Variable ist lediglich ein Name, dem ein Wert zugewiesen wurde. Es gibt drei Variablentypen:

Systemvariablen (vordefenierte Variablen)

Spezielle Variablen

Benutzerdefinierte Variablen
Systemvariablen bestimmen die Eigenschaften des System dem Nutzer gegenüber und können vom Nutzer
angepaßt werden. Systemvariablen werden mit Großbuchstaben geschrieben. Auf die speziellen Variablen
kann nur lesend zugegriffen werden. Sie bestimmen allgemeine Systemeigenschaften.
Benutzerdefinierte Variablen können vom Nutzer erzeugt, geändert und gelöscht werden. Sie können z. B.
für Shell-Skripte eingesetzt werden. Das sind kleine Programme, die sich wiederholende Arbeiten
vereinfachen können.

Anzeigen vorhandener Variablen
Zur Anzeige aller Variablen dient der Befehl set
/# set
Es werden die Systemvariablen mit Inhalt angezeigt. Links stehen die Variablennamen, dann kommt ein
Gleichheitszeichen und danach der Inhalt der Variablen. Um alle Variablen zu sehen, müssen wir den
Bildschirminhalt scrollen ([Shift] [Bild auf], [Shift] [Bild ab]). Dafür sind es doch sehr viele, wie uns
folgender Befehl anzeigt:
/# set | wc
Wir wollen hier nur einige Systemvariablen besprechen. Zu Beginn schauen wir uns mal die Systemvariable
PS1 an. Wer den Bildschirm nicht scrollen will, kann mit grep nur die Zeile mit PS1 anzeigen lassen:
/# set | grep "PS1"
PS1=/#
/# _
Die Variable PS1 beinhaltet also die zwei Zeichen /#. Was ist das? Das kommt uns doch irgendwie bekannt
vor. Ja, das ist unser Prompt! Mal sehen ob wir diesen ändern können.
Zuweisen eines Inhaltes
Eine Variable wird mit folgender Syntax definiert, wobei keine Leerzeichen vor oder nach dem
Gleichheitszeichen stehen dürfen:
Variable=Wert
Wir wollen den Prompt so ändern, daß "Befehl?" als Prompt erscheint:
/# PS1=Befehl?
Befehl?_
Schöner wäre es aber mit einem Leerzeichen nach "Befehl?". Wenn wir Leerzeichen haben wollen, müssen
wir den Wert in Anführungsstrichen einschließen:
/# PS1="Befehl? "
Befehl? _
Dies ist auch notwendig, wenn wir mehrere Wörter als Wert zuweisen wollen:
/# PS1="Gebe bitte einen Befehl ein: "
Gebe bitte einen Befehl ein: _
Wer will kann auch einen DOS-Prompt mit PS1="C:\> " vorgaukeln.
Anzeigen einer Variablen
Zum Anzeigen einer Variablen kann der Befehl echo verwendet werden. echo gibt Text aus. Dieser Befehl
ist notwendig bei Shell-Skripten.
Gebe bitte einen Befehl ein: echo PS1
PS1
Gebe bitte einen Befehl ein: _
So wird leider nur der Text "PS1" angezeigt und nicht der Inhalt von PS1. Dazu muß Dollarzeichen $ vor der
Variablen stehen:
Gebe bitte einen Befehl ein: echo $PS1
Gebe bitte einen Befehl ein:
Gebe bitte einen Befehl ein: _
Wir können auch Text und Variablen mischen:
Gebe bitte einen Befehl ein: echo "Das ist der Inhalt von PS1: $PS1"
Das ist der Inhalt von PS1: Gebe bitte einen Befehl ein:
Gebe bitte einen Befehl ein: _
Leeren von Variablen
Um eine Variable zu leeren, gibt man den Variablennamen nur gefolgt von einem Gleichheitszeichen ein:
/# PS1=
_
Die Variable bleibt dabei aber bestehen. Sie ist nur leer.
/# set | grep "PS1"
PS1=
/# _
Wenn wir PS1 leeren, haben wir kein Prompt mehr. Was passiert eigentlich beim Wechseln in ein anderes
Verzeichnis?
cd /home
/home# _
Die Variable PS1 wird hier also vom System überschrieben.
9. Welche Hardwareanforderungen stellt das Installationsprogramm der Linuxdistributionen die Sie
verwenden?Würde Linux auch mit weniger auskommen?
HW-Anforderungen
generell: niedrig!!!

CPU: ¸ Intel 80386 (AMD, Cyrix)
(Digital Alpha, Sun SPARC, Macintosh,. . . )

RAM: ¸ 4MB

Speicherplatzbedarf:{ einige 100 MB vollst. RedHat Distribution ca. 1.5-2 GB

Manchmal Probleme mit sehr neuen (und eventuell exotischen) HW Komponenten (Gra¯kkarten,
Netzwerkkarten) vor Kauf nachschauen!

Details: Linux Hardware Compatibility HOWTO, Distributionsspezifische Info im www
Was für ein System benötigt man, um Linux laufen lassen zu können? Das ist eine wirklich gute Frage; die
aktuellen Anforderungen ändern sich regelmäßig. Die Linux Hardware HOWTO enthält eine mehr oder
weniger komplette Liste der Hardware, die von Linux unterstützt wird. Eine andere Liste ist in dem Linux
INFO-SHEET zu finden.
Das nachfolgende ist die minimale Anforderung für einen Linux Rechner: Jeder ISA, EISA oder VESA Local
Bus Rechner, der mindestens über einen 80386SX Prozessor verfügt, kann verwendet werden. Zur Zeit
wird die MicroChannel (MCA) Architektur, die man in IBM PS/2 Rechnern findet, nicht unterstützt. Viele
Rechner mit PCI Bus werden ebenfalls unterstützt (siehe Linux PCI HOWTO für weitere Details). Ein
mathematischer Coprozessor ist nicht notwendig, allerdings ist es sehr sinnvoll, einen zu haben, da einige
Programme ansonsten sehr langsam laufen. Ihr Rechner sollte mindestens über 4 MB Speicher verfügen.
Theoretisch läuft Linux auch mit 2 MB, allerdings benötigen die meisten Installationen und Programme
mindestens 4 MB. Je mehr Speicher Sie besitzen, um so mehr Freude werden sie an Linux haben. Wenn man
die grafische Benutzeroberfläche von Linux, das sogenannte XWindow System, einsetzen möchten, sollte
der Rechner über mindestens 16 MB RAM verfügen. Mehr kann natürlich auch nicht schaden.
Natürlich benötigt man eine Festplatte und einen Standardkontroller. Alle MFM, RLL und (E)IDE Laufwerke
und Kontroller sollten funktionieren. Viele SCSI Laufwerke und Kontroller werden ebenfalls unterstützt;
weitere Informationen über SCSI findet man in der SCSI HOWTO.
Tatsächlich kann Linux sogar von einer einzigen 5.25" HD Diskette gestartet werden, aber das ist nur zur
Installation und zur Wartung sinnvoll. Natürlich wird auch freier Platz auf der Festplatte benötigt. Dessen
Größe ist abhängig von der installierten Software.
Die meisten Installationen benötigen zwischen 40 und 80MB. Dieses beinhaltet Platz für die Software, die
Swapdatei, die als virtueller RAM benutzt wird, und freien Platz für die Benutzer.
Es ist denkbar, ein Linux System auf einer 10 MB großen Partition zu installieren, es ist aber auch denkbar,
daß ein Linux System 100 MB oder mehr belegt. Dieses ist abhängig von der Anzahl der installierten
Programme und deren Größe. Neben dem Platz für die Programme wird weiterer für die Daten der Benutzer
benötigt.
Linux kann neben anderen Betriebssystemen wie MS-DOS, Microsoft Windows oder OS/2 auf der
Festplatte installiert werden. Tatsächlich kann man unter Linux sogar auf die MS-DOS Dateien zugreifen
und manche MS-DOS Programme starten. Das bedeutet, daß bei der Partitionierung der Festplatte Linux,
MS-DOS und OS/2 jeweils ihre eigene Partition erhalten. Weitere Details hierzu folgen später.
Allerdings sind weder MS-DOS noch OS/2 eine Voraussetzung um Linux zu benutzen. Linux ist ein komplett
eigenständiges Betriebssystem, das weder für die Installation noch für den Betrieb ein anderes
Betriebssystem benötigt. Zum Betrieb wird eine Hercules, CGA, EGA, VGA oder Super VGA Grafikkarte
und ein entsprechender Monitor benötigt. Im allgemeinen sollten eine Grafikkarte und ein Monitor, die
unter MS-DOS funktionieren, auch unter Linux einwandfrei arbeiten. Für den Betrieb des X Window
Systems gibt es allerdings andere Anforderungen an die Grafikkarte. Die Linux XFree86 HOWTO enthält
weitere Informationen über die Benutzung von X und dessen Anforderungen. Insgesamt benötigt das
kleinste Linux System nicht viel mehr wie die meisten MS-DOS oder Microsoft Windows Systeme, die
heute verkauft werden. Ein 386er oder 486er mit wenigstens 4 MB RAM sollte ausreichen, um mit Linux
glücklich zu werden. Linux benötigt nicht riesige Mengen von Speicherplatz, RAM oder Prozessorleistung.
Ich habe Linux zuerst auf einem 386/25 MHz (der langsamste Rechner, den man bekommen kann) mit 4 MB
RAM benutzt und war ziemlich glücklich. Je mehr man machen möchte, desto größer sollte der Speicher und
der Prozessor sein. Meiner Erfahrung nach übertrifft ein Linux System mit einem 486er und 16 MB RAM
viele Workstations.
Genug für ein absolut minimales System (nur die wichtigsten Kommandos und vielleicht eine oder zwei
installierte Anwendungen, evtl. ein Terminalprogramm) ist ein Festplattenplatz von 5 bis 10 MB, den man
allerdings nur zu Testzwecken benutzen sollte.
Minimale Konfiguration
Möglicherweise die kleinste Konfiguration auf der Linux läuft ist folgende: 386SX/16 Motherboard, 2 MB
RAM, 1.44 MB or 1.2 MB Floppy Disk und eine unterstützte Video-Karte (+ Tastatur, Monitor usw.). Sie
erlaubt Booten und Testen, ansonsten kann man jedoch kaum etwas Nützliches damit anfangen.
(The Linux operating system now runs on several machine architectures, including ARMs, Intel 80x86,
Sparc, 68K, PowerPC, DEC Alpha, MIPS, nd others.)
The Slackware distribution of Linux runs on most PC processors compatible with the Intel 386 or better,
including (but not limited to) Intel 386, 486, Celeron, Pentium I/MMX/Pro/II/III/Xeon/4, AMD
386/486/K5/K6/K6−II/K6−III/Duron/Athlon/Athlon XP/Athlon MP, Cyrix 386/486/5x86/6x86/M−II,
Via Cyrix III, Via C3, and the Transmeta Crusoe. Linux is modeled after the UNIX (R) operating system.
The Slackware distribution contains a full program development system with support for C, C++,
Fortran−77, LISP, and other languages, full TCP/IP networking with NFS, SLIP, PPP, a full implementation
of the X Window System, and much more.
10. Was ist ein Link? Welche Arten kennen Sie?
Links sind Verweise auf Dateien.Durch Links kann von verschiedenen Orten in der Verzeichnisstruktur auf
ein und derselbe Datei zugegriffen werden, ohne dass diese Datei physikalisch mehrfach gespeichert
werden muss.Links sind damit ein wichtiges Hilfsmittel zur Vermeidung von Redundanzen. Im Linux kommen
Links besonders häufig in /bin und /lib Verzeichnissen vor.
Kommando ls –l in der 2.Spalte gibt an wie viele Links auf eine bestimmte Datei zeigen.Wenn zusätzlich –i
Option verwendet wird, gibt ls auch I-Node der Dateien an(nur dann wenn sie identisch sind).
Wichtig ist die Unterscheidung in harte und symbolische Links. Jedes File ist in Wirklichkeit\ ein harter
Link. Es kann aber mehrere (harte) Links geben, die auf dasselbe File zeigen; ein File ist dann gelÄoscht,
wenn der letzte harte Link auf das File gelöscht ist. Harte links sind hart\ in der logischen Struktur des
Filesystems kodiert und kÄonnen daher nur innerhalb einer Partition verwendet werden (vgl. Abschnitt 3.7).
Symbolische (Soft-, Sym-) Links kÄonnen äußer die Grenze von Partitionen hinausgehen. Wird ein
symbolischer Link gelöscht, so ist nur der Link verschwunden, nicht das File (auch wenn alle Symlinks auf ein
bestimmtes File geläscht werden, gibt es das File noch immer). Wird hingegen das File selbst gelöscht (d.h.
der letzte harte Link der darauf zeigt), bleibt der Symlink als Zeiger erhalten, der allerdings ins Leere
zeigt, also unbrauchbar geworden ist; Man spricht von broken\ oder dangling\ Links.
11. Welche Arten kennen Sie, Befehle in der Shell zu gruppieren? Erklären Sie die Unterschiede?
Kommandos gruppieren: ( ) und { }
Diese Klammern dienen dazu Befehle zu Gruppen zusammenzufassen. Jeder UNIX-Befehl in einem ShellScript wird in einer eigenen Subshell ausgeführt. Dies gilt auch für Befehle die in ( ) stehen. Befehle, die
von { } umzingelt sind, werden hingegen in der Shell des Scriptes ausgeführt. Dies ist für ein cd besonders
entscheidend:
klara{hayd}132-> cat cd_demo
#!/bin/sh
( cd /etc; )
pwd
{ cd /etc; }
pwd
klara{hayd}133-> cd_demo
/usr/people/hayd/lab
/etc
Arten von Kommandos
Es existieren 4 Arten von Kommandos:
Aliasse
Funktionen (nicht (T)csh)
Builtins
Ausführbare Programme
Die Nummerierung entspricht dabei der Reihenfolge, nach der eine Shell nach einem Kommando sucht.
Ein Alias ist einfach nur ein anderer Name für ein Kommando oder eine Kommandofolge. Würden wir einen
Alias mit dem Namen eines vorhandenen Kommandos definieren, so wäre das originale Kommando nur noch
durch Angabe seines vollständigen Zugriffspfades erreichbar:
user@sonne> alias ls="echo 'ls ist weg'"
user@sonne> ls
ls ist weg
user@sonne> /bin/ls
ToDo
entwicklung.htm khist.htm
shallg.htm~
access.htm
user@sonne> unalias ls
Da ein Alias wiederum einen Alias beinhalten kann, wiederholen die Shells die Substitution solange, bis der
letzte Alias aufgelöst ist.
Funktionen gruppieren Kommandos als eine separate Routine.
Builtins sind Kommandos, die direkt in der Shell implementiert sind. Einige dieser Kommandos müssen
zwingend Bestandteil der Shell sein, da sie z.B. globale Variablen manipulieren (cd setzt u.a. PWD und
OLDPWD). Andere Kommandos werden aus Effizienzgründen innerhalb der Shell realisiert (ls).
Ausführbare Programme liegen irgendwo auf der Festplatte. Zum Start eines Programms erzeugt die Shell
einen neuen Prozess, alle anderen Kommandos werden innerhalb des Prozesses der Shell selbst ausgeführt.
Umlenkungen, Pipes
Die Standard-Dateien, stdin, stdout, stderr, die normalerweise mit dem Bildschirm und der Tastatur
verbunden sind, können umgelenkt werden.
> File
Ausgabe nicht am Bildschirm, sondern es wird auf File geschrieben.
>& File
stdout und stderr werden auf File geschrieben.
beliebt ist z.B. make blabla 2>&1 | tee irgendwas d.h. stdin und stdout sollen in einem file abgelegt werden.
>>File
stdout wird umgelenkt und an Fileangehängt.
< File
es wird statt von stdin von File gelesen
Mit set noclobber (= setzen der Shell-Variablen noclobber) kann man das Überschreiben eines bereits
vorhandenen Files verhindern. set noclobber kann man wiederum für einen Einzelfall durch ! aufheben: >! File
und >>!File
Es gibt natürlich auch die Kombinationen: >&! File, >>&! File

Eine Pipe verbindet stdout eines Kommandos mit stdin des nachfolgenden. Z.B.:
ls -al | more
cat Adressen | grep Huber | grep -v Hans >! ergebnis
Kommando-1 | Kommando-2
ersetzt also
Kommando-1 > tmp-file ; Kommando-2 < tmp-file ; rm tmp-file
Man beachte: | hinterläßt keine Files.

Mittels des Kommandos tee (T-Stück im Datenstrom) kann man alles, was ein Befehl auf den stdout
schreibt zusätzlich noch in einem File protokollieren. tee schreibt, was auf stdin hereinkommt, auf
stdout und in einen File. Mit der Option -a (append) wird der File nicht überschrieben, sondern an diesen
angehängt.
Folgende Kommandosequenz erlaubt es, eine telnet-Session zu protokollieren:
telnet any_host | tee -a telnet.log
alias
Mit alias kann man sich Macros, d.h. Abkürzungen für einen Befehl mit speziellen Optionen oder eine Folge
von Befehlen, definieren:
alias Name "Definition"
Man kann alias ein Argument übergeben, das dort eingesetzt wird, wo \!* steht.
Mit alias werden alle definierten aliase aufgelistet. alias name zeigt die Definition des alias name. Mit \
kann man ein alias für einen Befehl aufheben (z.B. man ist sich sicher, daß man alles wegwerfen will: \rm *).
Beispiele:
alias rm "rm -i"
alias ll "ls -laF \!* | more"
alias h "history \!* | head -40 | more" # h 7 zeigt die letzten 7 Befehle
12. Welche Möglichkeiten bietet Linux zur Zusammenarbeit mit anderen Betriebsystemen?(z.B.Dos/Win)
DosEmu
Manchmal ist man auch als Linux Anwender gezwungen, DOS Software zu verwenden. Dabei stört eigentlich
nicht, dass es sich um DOS Software handelt, sondern lediglich die Tatsache, dass man dafür zuvor ein paar
Handgriffe erledigen muss, um
den DosEmu zu installieren. In
meinem Fall handelte es sich um
Software zum MikrorechnerPraktikum an der Fernuni Hagen.
Die Software dient dazu,
Assembler-Programme für einen
alten Rechner mit einem Motorola
6809 Prozessor zu schreiben, zu
testen und über die serielle
Schnittstelle an diesen Rechner
zu
übertragen. Erstaunlich war dabei vor allem, dass ich mit der Software nicht unbedingt mehr Probleme zu
haben schien, als die Besitzer aktueller Windows-Versionen. Dort fehlt es nämlich fast komplett an der
DOS-Basis und damit gibt es eigentlich auch keine echte "DOS-Shell" mehr, wodurch die Möglichkeiten zur
Ausführung echter DOS Software stark eingeschränkt sind. Doch nun zu tat geschitten...
Dos Software unter Linux
Installation
Wenn du kein Debian benutzt, kannst du einfach die Pakete (dosemu und freedos?) installieren und dann
wird der Emulator sehr wahrscheinlich laufen. Bei Debian tippert man wie üblich ein seichtes Kommando als
root ein:
apt-get install dosemu xfonts-dosemu
Doch leider ist damit noch nicht alles getan. Bei der Installation wird man bereits darauf hingewiesen, dass
man sich Freedos von Hand nachinstallieren muss. Aus welchen Gründen auch immer. Also holt man sich von
ftp://ftp.ibiblio.org/pub/Linux/system/emulators/dosemu das Archiv dosemu-freedos-bin.tgz. Dann folgt
man genau den Schritten, die in der Datei /usr/share/doc/dosemu/README.Debian beschreiben sind:
cd /usr/lib
mkdir -p dosemu freedos
ln -s ../freedos dosemu
tar zxf /pathto/dosemu-freedos-bin.tgz dosemu/freedos
chown -R root.root freedos
chmod -R og=rX freedos
rm dosemu/freedos
Diese sind selbstverständlich als User root auszuführen. Danach sollte bei Eingabe von "dosemu" auf der
Konsole bzw. von "xdosemu" unter X eine passende DOS Eingabeaufforderung erscheinen. Falls nicht, macht
es Sinn zu überprüfen, ob man als normaler User auch tatsächlich die Verzeichnisse /usr/lib/dosemu und
/usr/lib/freedos lesen kann.
Konfiguration
Die systemweite Konfigurationsdatei ist /etc/dosemu/dosemu.conf. Dort kann man beispielsweise den
Eintrag
$_com1 = ""
nach
$_com1 = "/dev/ttyS0"
ändern. Danach steht die serielle Schnittstelle beispielsweise für Datenübertragungen zur Verfügung. Will
man unter DOS ein anderes Gerät benutzen (z.B. ein Modem), welches an der seriellen Schnittstelle hängt,
dann gibt man eben die dafür passende Gerätedatei an. "/dev/ttyS0" ist dabei die erste und "/dev/ttyS1"
die zweite serielle Schnittstelle.
Es gibt aber auch eine Website, die einem die Tipperei bei der Konfiguration erleichtert. Man muss die
erzeugte Datei unter dem Namen "dosemu.conf" nur noch an die passende Stelle als /etc/dosemu/ kopieren.
Installation von DOS Software
Sofern es sich um eine Installation von Diskette handelt, trägt man das Floppy-Laufwerk in die
Konfigurationsdatei ein, was bei Debian bereits der Fall ist. Dann kann das Floppy-Laufwerk wie gewohnt
unter DOS angesprochen werden, sofern der User root den DosEmu gestartet hat. Das DOS ist nun so
eingerichtet, dass man als normaler User nicht darin herum pfuschen kann. Das ist auch gut so. Sinnvoll ist
es daher, sich in seinem Heimatverzeichnis ein Unterverzeichnis für DOS Software anzulegen und die
Software dorthin zu installieren. Beim Start von "dosemu" wird das eigene Heimatverzeichnis unter dem
Laufwerksbuchstaben D mit der Option "-home" eingebunden.
Start von DOS Anwendungen aus dem Desktop-Menü heraus
Für eine DOS Anwendung will man zumindest beim Programmstart den gleichen Komfort wie bei einer
gewöhnlichen Linux Anwendung haben. Mit Hilfe der Kommandozeile kann man erreichen, dass beim Start
von DosEmu eine vorgegebene Abfolge von Kommandos quasi von Geisterhand eingetippt wird, um so das
gewünschte Programm zu starten. So wird mit dem Aufruf von
xdosemu -home -I 'keystroke " d:/dos/programm.exe\r"'
unter X der DosEmu gestartet und das Programm "programm.exe" im Verzeichnis $HOME/Dos ausgeführt.
Man sollte dabei im Auge behalten, dass Dos nicht zwischen Groß- und Kleinschreibung unterscheidet. Das
Verzeichnis könnte also auch $HOME/DOS heißen. Die Zeichenfolge "\r" steht in diesem Fall für das
Drücken der Return-Taste. Das Leerzeichen am Anfang des Kommandos sollte man nicht vergessen, weil
sonst das erste Zeichen verschluckt wird. Selbstverständlich kann man auch mehrere Kommandos mit
jeweils einem abschließenden "\r" aneinander reihen.
Weiterführende Dokumentation
Zu DosEmu gibt es Dokumentation en masse. Unter
http://resmedicinae.sourceforge.net/manuals/apw_linux/ findet man beispielsweise deutschsprachige
Anleitungen zur Installation verschiedener DOS-Versionen im DosEmu unter Linux. Interessanterweise
handelt es sich um eine Dokumentation zur Verwendung medizinischer DOS Software unter Linux. Auch
beim Linux-Magazin und beim Linux-User wird man fündig, wenn man nach "DosEmu" sucht. Informationen
zu FreeDos findet man unter anderem auf der entsprechenden Homepage.
auch PLIP
13. Welche Wildcards kennen Sie und was bedeuten diese?
Wildcards erlauben es, mehrere files o.ä. gleichzeitig anzusprechen. Sie ersetzen einzelne Zeichen oder
ganze Zeichenfolgen.
Die möglichen Wildcards:
*
für beliebig viele oder kein Zeichen
?
für genau ein Zeichen
[n-m]
für genau ein Zeichen aus dem Bereich n bis m; wobei n,m beliebige Buchstaben oder Zahlen sein
können.
[n,m] für genau ein Zeichen n oder m; siehe oben.
Kombinationen aller Wildcards sind möglich. Das Arbeiten mit Wildcards unterscheidet sich in den Shells
nicht. Hier einige Anwendungen; sie beziehen sich alle auf die directory $home mit den aufgelisteten files:
-rw-r--r-- 1 k202006
-rwxr--r-- 1 k202006
6 Jun 12 1990 carputt
176 May 31 1990 car1
-rwxr--r-- 1 k202006
241 May 31 1990 car2
-rw-rw-rw- 1 k202006
0 Jun 13 10:34 ddd.for
-rw-r--r-- 1 k202006
41472 Jan 31 12:21 druck
-rw-r--r-- 1 k202006
16794 Jun 25 1990 druck1.dat
-rwxr--r-- 1 k202006
1183 May 30 09:06 emc
-rw-r--r-- 1 k202006
418 Apr 24 15:14 loes1.f
-rw-r--r-- 1 k202006
2116 May 30 13:50 loes2.f
-rwxrwxrwx 1 k202006
-rw-r--r-- 1 k202006
-rw-rw-rw- 1 k202006
rm *.f
73728 Jun 13 10:47 loes3
1466 Jun 13 10:24 loes3.f
6280 Jun 13 11:50 loes3.o
löscht die files loes1.f, loes2.f, loes3.f
cp car? ./bin kopiert car1, car2
rm [d,e]*
löscht ddd.for, druck, druck1.dat, emc
rm *
löscht alle files
more loes?
listet den file loes3
more loes*
listet alle 5 files, die mit loes beginnen
©Pelin Cizgin
Herunterladen