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