Webserver/Einführung in die Shell

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Informationen zum Autor

Name:
Achim Schrepfer
E-Mail:
Homepage:

Der folgende Featureartikel richtet sich an alle Webschaffenden, die zu ihren Servern einen Telnet- oder SSH-Zugang haben und wissen möchten, wie man ihn sinnvoll einsetzt. Er ist aber auch geeignet für Linuxeinsteiger, die gerade ihre erste Distribution auf die heimische Platte gezaubert haben. Der Text richtet sich zwar weniger an die erfahreneren Linuxanwender, hat aber vielleicht auch für sie die eine oder andere Überraschung parat.

Hinweis

Da der Text den Einstieg in Linux erleichtern soll, werden selten alle Optionen und Einsatzmöglichkeiten eines Kommandos beschrieben. Das Dokument erhebt auch weder Anspruch auf Vollständigkeit, noch auf Richtigkeit.

ToDo (weitere ToDos)

Überprüfen, ob Inhalte noch aktuell / relevant sind, ggf. ergänzen oder auf externe Seiten, z. B. wiki.ubuntuusers.de verweisen

Inhaltsverzeichnis

[Bearbeiten] Vorwort

Linux ist eines der am häufigsten eingesetzten Betriebssysteme für Web- und andere Internetserver. Das hat auch gute Gründe. Nicht nur, weil es größtenteils im Internet entstanden ist und noch dazu frei erhältlich ist, sondern auch wegen der außergewöhnlich hohen Qualität des Betriebssystemkerns und der darauf laufenden Software. Stabilität, Sicherheit und Wartungsfreundlichkeit eines (gut eingerichteten) Linuxsrechners liegen oft weit über dem Niveau anderer Systeme. Dazu wurde Linux in den letzten Jahren (vor allem durch grafische Oberflächen) immer benutzerfreundlicher, ergonomischer und für den Laien verständlicher.

Grafische Oberflächen bieten zwar hohen Komfort und Ergonomie, sie verschleiern aber auch viel von der Leistungsfähigkeit ihrer Ahnen, den Shells für die Kommandoeingabe. Viele Linuxbenutzer haben deshalb in jeder grafischen Sitzung zu Recht mindestens ein Fenster mit einem Terminalemulator offen, in dem eine solche Shell läuft.

Der grundlegenden Arbeit mit einer solchen Shell widmet sich dieser Artikel. Denn jeder, der auf dem Server seiner Webpräsenz einen Telnet- oder besser SSH-Zugang hat, kann sich eine Linuxshell auf seinen heimischen (egal, welches Betriebssystem) PC holen und dem Rechner interaktiv Kommandos erteilen. Je nach Rechten kann man so auf praktische Weise seinen Webserver fernsteuern und warten. Vom Backup der Webpräsenz mit tar bis hin Download von anderen Webseiten auf den eigenen Server mit wget ist alles möglich.

[Bearbeiten] Navigieren durch die Verzeichnisstruktur

Einige der hier vorgestellten Befehle werden Ihnen vielleicht von MS-DOS und ähnlichen Betriebssystemen her bekannt vorkommen. Das liegt daran, dass MS-DOS ursprünglich auch mal als eine Art Unix-Derivat - ähnlich wie Linux - gedacht war. Was die damalige (1981) Garagenfirma Microsoft dann jedoch aus der Idee eines „abgespeckten Unix für PCs“ machte, hatte mit Unix nicht mehr allzuviel zu tun.

Kommando Abkürzung Erläuterung
pwd print working directory aktuelles Arbeitsverzeichnis ausgeben
cd change directory Arbeitsverzeichnis wechseln
ls list Inhalt des Arbeitsverzeichnisses ausgeben
Beispiel
you@dort:~/featureartikel$ pwd<ENTER>
/home/speedesign/featureartikel
 
you@dort:~/featureartikel$ ls -l<ENTER>
total 48
-rw-r--r--    1 you wwwusr      136 Feb  2 19:48 index.html
drwxr-sr-x    2 you wwwusr     4096 Feb  2 19:52 meinverzeichnis
-rw-r--r--    1 you wwwusr     3893 Feb  2 19:48 test.html
-rw-r--r--    1 you wwwusr    10310 Feb  2 19:48 titelleiste_mitte.gif
-rw-r--r--    1 you wwwusr     8678 Feb  2 19:48 titelleiste_oben.gif
-rw-r--r--    1 you wwwusr    10611 Feb  2 19:48 titelleiste_unten.gif
 
you@dort:~/featureartikel$ cd meinverzeichnis/<ENTER>
you@dort:~/featureartikel/meinverzeichnis$ cd ..<ENTER>
you@dort:~/featureartikel$
Die meisten er hier verwendeten Kommandos sind selbsterklärend. Auf den ls -l-Aufruf möchte ich noch etwas näher eingehen. Würde ls ohne weitere Parameter aufgerufen werden, so erhält man eine Liste der Dateien des aktuellen Verzeichnisses, in der die Namen der Dateien nebeneinander stehen und keine weiteren Angaben ausgegeben werden. Dies kann für manche Anwendungen (z.B. Shellskripten) wichtig sein. Der -l-Schalter bewirkt die "long"-Ausgabe und ist der am häufigsten verwendete.
Beim cd-Kommando ist es wichtig zu wissen, dass Pfadangaben unter Linux stets durch einfache Schrägstriche getrennt werden, nicht wie unter DOS durch umgekehrte Schrägstriche (Backslashes). Richtig sind also Angaben wie cd /usr/home/web oder cd ../imgages. Wie unter DOS stehen zwei Punkte (..) für das "Mutterverzeichnis" des aktuellen Verzeichnisses, und ein Punkt (.) für das aktuelle Verzeichnis.

[Bearbeiten] Dateien und Verzeichnisse

Für das Kopieren, Verschieben oder Umbenennen von Dateien und Verzeichnissen gibt es einen kleinen Satz von Standardkommandos.

Kommando Abkürzung Erläuterung
cp copy Datei oder Verzeichnis kopieren
mv move Datei oder Verzeichnis verschieben oder umbenennen
mkdir make directory Verzeichnis erstellen
rm remove Datei oder Verzeichnis entfernen
Beispiel
you@dort:~/featureartikel$ mkdir neuesverzeichnis<ENTER>
you@dort:~/featureartikel$ ls<ENTER>
index.html  meinverzeichnis  neuesverzeichnis  test.html  titelleiste_mitte.gif
titelleiste_oben.gif  titelleiste_unten.gif
 
you@dort:~/featureartikel$ mv *.html neuesverzeichnis/<ENTER>
you@dort:~/featureartikel$ cp *.gif neuesverzeichnis/<ENTER>
you@dort:~/featureartikel$ cd neuesverzeichnis/<ENTER>
you@dort:~/featureartikel/neuesverzeichnis$ ls<ENTER>
index.html  test.html  titelleiste_mitte.gif  titelleiste_oben.gif  titelleiste_unten.gif
 
you@dort:~/featureartikel/neuesverzeichnis$ rm titelleiste_*<ENTER>
you@dort:~/featureartikel/neuesverzeichnis$ ls<ENTER>
index.html  test.html
 
you@dort:~/featureartikel/neuesverzeichnis$ rm *.html<ENTER>
you@dort:~/featureartikel/neuesverzeichnis$ cd ..<ENTER>
you@dort:~/featureartikel$ rm -r neuesverzeichnis/<ENTER>
you@dort:~/featureartikel$
Das erste Kommando mkdir legt ein neues Verzeichnis an. Den Erfolg dieser Aktion lassen wir uns gleich durch die Eingabe von ls bestätigen. Als nächstes bewegen wir alle html-Dateien im Arbeitsverzeichnis mit dem mv-Kommando nach neuesverzeichnis. mv verlangt als Parameter die Quell- und Zieldateien getrennt durch ein Leerzeichen. Wenn Sie einen Dateinamen mit Leerzeichen angeben müssen, können sie dieses durch ein Backslash (\) escapen: mv Datei\ mit\ Leerzeichen.txt foo.txt. Danach werden im Beispiel alle gif-Dateien in das neue Verzeichnis mittels cp kopiert.
Der Stern (*) in den Dateinamen ist auch unter Linux ein Wildcardzeichen, das auf beliebige Zeichenkombinationen passt. Es gibt auch das Fragezeichen (?), welches nur auf genau ein Zeichen passt.
Als nächstes wird mit cd in das neue Verzeichnis gewechselt und mit ls wieder der Inhalt ausgegeben. Daran sehen wir, daß unsere Aktionen erfolgreich waren. Anschliessend löscht das rm-Kommando alle Dateien, die mit titelleiste_ beginnen. Danach sind alle HTML-Dateien dran. Mit cd .. kann in das nächsthöhere, oder auch "Mutterverzeichnis" gewechselt werden. Achten Sie auf die Eingabe des Leerzeichens zwischen cd und .., denn das nimmt Ihnen Linux übler als MS-DOS. Zum Schluss wird das gerade erstellte Verzeichnis mit Hilfe von rm -r komplett gelöscht. Der r-Schalter steht für "rekursiv" und würde auch evtl. vorhandene Dateien und Unterverzeichnisse mit löschen. Alternativ können Sie auch das Kommando rmdir Verzeichnis verwenden, dazu müsste das Verzeichnis aber komplett leer sein.

Hinweis

Möchten Sie eine Datei von irgendwoher in das aktuelle Verzeichnis kopieren oder verschieben, so verwenden Sie für die Zielangaben einfach einen Punkt (.).
Beispiel
you@dort:~/featureartikel$ cp ../index.html .<ENTER>
you@dort:~/featureartikel$ mv texte/aktuell/foo.html .<ENTER>
Das erste Kommando kopiert die Datei index.html aus dem Mutterverzeichnis in das aktuelle. Das zweite Kommando verschiebt die Datei foo.html aus den Verzeichnissen innerhalb des Arbeitsverzeichnisses in das aktuelle.

[Bearbeiten] Dateiinhalte anzeigen und durchsuchen

Oft möchte man beim Turnen durch den Verzeichnisbaum den Inhalt der einen oder anderen Datei sehen. Auch dafür gibt es einige Standardkommandos.

Kommando Abkürzung Erläuterung
cat concatenate Inhalt einer oder mehrerer Dateien ausgeben
more (Pager) file perusal filter for crt viewing Programm zum Scrollen durch große Ausgaben
less (Pager) opposite of more Wie more, nur besser
grep get regular expression Ausgabe mit regulären Ausdrücken durchsuchen

Die grundlegende Verwendungsweise ist bei den Kommandos cat, more und less gleich. Hinter dem Kommando fügen Sie einfach den Namen der Datei an, die Sie anzeigen möchten (gegebenenfalls mit Pfadnamen).

cat gibt den Inhalt der Datei einfach aus, egal wie lang dieser ist. Sie können dem cat-Kommando auch mehrere Dateien durch Leerzeichen getrennt angeben, oder Wildcards benutzen. Die Dateiinhalte werden dann einfach hintereinander ausgegeben.

more zeigt nur soviel Inhalt an, wie auf die Bildschirmseite passt. Durch Drücken der Leertaste kommen Sie dann eine Seite weiter. Am Dateiende wird more einfach beendet. Durch Drücken von q (quit) können Sie die Anzeige auch vorzeitig selbst beenden.

Der Pager less bietet Ihnen da schon mehr Möglichkeiten. Sie können den Inhalt mit den Cursortasten oder <Bild-Auf> bzw. <Bild-Ab> durchblättern. Wenn Sie einen Slash (/) gefolgt von einem Suchbegriff eingeben, werden die Treffer hell hinterlegt. Nach einer Suche können Sie mit den Tasten n zum nächsten bzw. N zum vorigen Treffer blättern. Auch hier beendet q die Anzeige.

Beispiel: grep
you@dort:~/featureartikel$ grep -n title test.html<ENTER>
5:      <title>speedtest</title>
 
you@dort:~/featureartikel$ grep -n body test.html index.html<ENTER>
test.html:14:<body bgcolor="Silver">
test.html:89:</body>
index.html:7:<body>
index.html:9:</body>
grep nimmt als Argumente einen Suchausdruck, der wie ein regulärer Ausdruck behandelt wird und einen oder mehrere Dateinamen (auch mit Wildcards) an. Die Dateien werden zeilenweise durchsucht und die Zeilen, in denen das Muster passt, werden ausgegeben. Der Schalter -n bewirkt die Ausgabe der Zeilennummern. Hinweise zu regulären Ausdrücken, die grep verarbeitet, finden Sie in der Hilfe zu grep (am Shellprompt eingeben: man grep).

[Bearbeiten] Rechte im Dateisystem

Da Linux ein Multiuserbetriebssystem ist, und damit mehrere Benutzer Zugriff auf das System haben können, ist es wichtig, dass für jede Resource (z.B. Dateien, Verzeichnisse oder auch Geräte) Rechte vergeben werden können. Dafür gibt es unter Linux eine Benutzer- und eine Nutzergruppentabelle. Jede Ressource hat einen Besitzer (also einen einzelnen Benutzer, dem die Datei „gehört“) und eine Gruppe (eine Nutzergruppe, für die spezielle Rechte gelten). Einzelne Zugriffsrechte, nämlich Leserecht, Schreibrecht und Ausführrecht, werden für Besitzer, Gruppen und alle übrigen Benutzer („Rest der Welt“) vergeben.

Da Sie auf dem Server eines Providers meistens nicht die Möglichkeit haben bzw. brauchen, die Besitzverhältnisse einer Datei zu verändern, wird hier nur auf den Befehl zum Verändern der Zugriffsrechte eingegangen.

Kommando Abkürzung Erläuterung
chmod change mode Zugriffsrechte einer Datei ändern
Beispiel
you@dort:~/featureartikel$ ls -l script.pl<ENTER>
-rw-r--r--    1 you wwwusr      136 Feb  2 23:50 script.pl
you@dort:~/featureartikel$ chmod 755 script.pl<ENTER>
you@dort:~/featureartikel$ ls -l script.pl<ENTER>
-rwxr-xr-x    1 you wwwusr      136 Feb  2 23:50 script.pl
you@dort:~/featureartikel$
Mit dem Kommando ls -l können Sie die aktuellen Zugriffsrechte einer Datei ausgeben lassen. Diese stehen gleich in der ersten Spalte der Ausgabe. Im obigen Beispiel sind sie bei der Datei script.pl zu Beginn -rw-r--r--. Diese Kette aus zehn Zeichen gibt detailliert Auskunft über die Zugriffsrechte der Datei. Das erste Zeichen gibt den Typ an und kann z.B. "d" für directory (engl. Verzeichnis) annehmen. Die anderen sind immer in Dreiergruppen zu lesen, welche Lese-, Schreib- und Ausführungsrecht für den Besitzer (erste Dreiergruppe), die Gruppe (zweite) und alle anderen Benutzer (dritte) angeben.
Der Aufruf von chmod 755 script.pl bedarf einer genaueren Erklärung. Bei der dreistelligen Zahl handelt es sich um eine Oktalzahl, die die Rechtevergabe für alle Nutzergruppen widerspiegelt (je Gruppe eine Stelle). Nachfolgend wird das System erklärt um für die gewünschten Rechte die richtige Zahl zu ermitteln.

[Bearbeiten] Ermittlung der Zahl für Dateirechte

Jedes Recht (Ausführen, Schreiben, Lesen) hat eine eigene Ziffer:

Ziffer Recht
4 Lesen
2 Schreiben
1 Ausführen

Wollen Sie ein bestimmtes Recht einer Nutzergruppe hinzufügen, so müssen Sie nur die entsprechende Ziffer zur Stelle der Nutzergruppe addieren. Das Lese- und Schreibrecht für den Besitzer der Datei wird z.B. durch 4 + 2 = 6 an der ersten Stelle gesetzt. Durch die Addition einer der drei Ziffern können also Ziffern von 0 bis 7 entstehen, deren Zuordung zu einer Rechtekombination immer eindeutig ist:

Ziffer Rechte Ermittlung
0 keine Rechte -
1 nur ausführen 0 + 1
2 nur schreiben 0 + 2
3 schreiben und ausführen 0 + 1 + 2
4 nur lesen 0 + 4
5 ausführen und lesen 0 + 1 + 4
6 schreiben und lesen 0 + 2 + 4
7 lesen, schreiben und ausführen 0 + 1 + 2 + 4

Das Beispiel chmod 755 script.pl hat also für den Besitzer alle Rechte und für die Gruppe und alle anderen Benutzer das Lese- und Ausführungsrecht gesetzt. Dies ist die Standardkombination für CGI-Skripten.

Bei einzelnen Dateien (z.B. Perl- oder PHP-Scripte) bewirkt das Attribut „Ausführen“ tatsächlich die Ausführbarkeit im Rahmen des Betriebssystems sowie den entsprechenden Interpretern. Etwas anders sieht es jedoch bei Ordnern aus. Hier wird damit die Erlaubnis gesteuert, den Ordner zu öffnen (cd), den Inhalt anzuzeigen (ls) und gegebenenfalls bei entsprechenden Schreib/Leserechten zu ändern.

Hinweis

Innerhalb von SELFHTML finden Sie bei übrigens auch einen Unix-Dateirechte-Setzer (chmod), der Sie bei dieser Arbeit unterstützt. Sie sollten sich diese Art von Rechteermittlung aber trotzdem gut einprägen, denn Rechtevergabe ist ein Thema, das jedem Linuxbenutzer geläufig sein sollte.

[Bearbeiten] Arbeiten mit Links

Eine schöne Eigenschaft des Linux-Dateisystems ist die Möglichkeit, Links auf Dateien und Verzeichnisse zu erstellen. Ein Link ist ein Zeiger auf eine Datei oder ein Verzeichnis irgendwo im lokalen Dateisystem. Er wird allerdings genauso behandelt wie das „Ding“, auf das er zeigt. Man kann also aus einer „Linkdatei“ lesen oder in sie hineinschreiben wie in die Datei, auf die sie verweist. Die Änderungen an der „Linkdatei“ wirken sich unmittelbar auf die verlinkte Datei aus, weil die Datei an sich nur einmal existiert. Sie sollten zunächst immer sog. symbolische Links verwenden. Dadurch wird eine Ausgabe von ls -l immer das Ziel eines Links mit einem Pfeil markiert anzeigen, zum Beispiel verlinktetextdatei.txt -> text1.txt. Außerdem können symbolische Links auch auf Verzeichnisse zeigen, was „harte“ Links nicht dürfen.

Symbolische Links eignen sich bei Web-Angeboten beispielsweise prima, um eine Datei (ggf. auch an mehreren Stellen) im HTTP-Verzeichnisbaum zu behalten, die aus organisatorischen Gründen eigentlich an einer ganz anderen Stelle im Verzeichnisbaum des Systems abgelegt ist – es kann allerdings sein, dass sie den Webserver so konfigurieren müssen, dass er symbolischen Links „folgt“.

Kommando Abkürzung Erläuterung
ln link Einen Dateisystemlink erstellen
Beispiel
you@dort:~/featureartikel$ cat text1.txt<ENTER>
Inhalt der Textdatei1
 
you@dort:~/featureartikel$ ln -s text1.txt verlinktetextdatei.txt<ENTER>
you@dort:~/featureartikel$ ls -l verlinktetextdatei.txt<ENTER>
lrwxrwxrwx    1 you wwwusr        9 Feb  3 00:32 verlinktetextdatei.txt -> text1.txt
 
you@dort:~/featureartikel$ cat verlinktetextdatei.txt<ENTER>
Inhalt der Textdatei1
Zunächst wird der Inhalt der Datei text1.txt angezeigt. Mit ln -s gefolgt von der Zieldatei und dem Namen des zu erstellenden Links (also der "virtuelle" Dateiname) wird ein symbolischer Link erstellt. Die Ausgabe von ls -l verlinktetextdatei.txt zeigt, daß der Link erstellt worden ist. Dies kann man an dem "l" in der Rechtespalte und an dem Pfeil mit dem Namen der Zieldatei erkennen (so wird dargestellt, wohin der Link zeigt). Die Ausgabe des Inhaltes unseres Links bringt den Inhalt der Zieldatei text1.txt auf den Bildschirm.
Es ist auch möglich, mit dem ln-Kommando auf eine gleichnamige Datei in einem anderen Verzeichnis zu verweisen: you@dort:~/featureartikel$ ln -s ../anderesverzeichnis/text.txt text.txt<ENTER> bewirkt einen Link auf eine Datei text.txt in einem anderen Verzeichnis, wobei der Linkname, also der virtuelle Name im aktuellen Verzeichnis ebenfalls text.txt lautet. Wenn Sie das zweite Argument (text.txt) weglassen, wird der Name der Zieldatei automatisch für den Linknamen hergenommen.

Hinweis

In der Rechtespalte der ls-Ausgabe sehen Sie, daß alle Rechte gesetzt sind. Dies ist kein Fehler! Symbolische Links übernehmen die Rechte der Zieldateien vollständig!

Information

Sie können Links verwenden, wenn Sie z.B. in jedem Verzeichnis ein Perlscript benötigen, welches den Inhalt des Verzeichnisses schön formatiert ausgibt. Das setzt allerdings CGI-Ausführungsrechte im gesamten Verzeichnisbaum voraus, da der Webserver ja "denkt", es handelt sich bei dem Link um die Skriptdatei selbst!


[Bearbeiten] Sichern und Wiederherstellen

Manchmal ist es nötig, eine Webpräsenz am Server in ein Archiv zu Sichern um es ggf. auf den lokalen Rechner herunterzuladen. Dies ist z.B. der Fall, wenn Sie Services anbieten, bei denen Benutzer Dateien hochladen können, oder Texte dynamisch speichern können (z.B. bei Gästebuchern, Foren, Datenbanken). Sie könnten die Dateien zwar einzeln per FTP auf Ihren Rechner laden. Die Möglichkeit, direkt auf dem Server ein komprimiertes Archiv zu erzeugen, welches anschließend gedownloadet wird, ist aber viel eleganter.

Kommando Abkürzung Erläuterung
tar tape archiver Dateien Archivieren und wiederherstellen

tar ist eigentlich ein Programm zur Bandsicherung. Mittlerweile ist es aber auch sehr gut geeignet um Archive (sog. tarballs) ganzer Verzeichnisbäume zu erstellen.

Beispiel
you@dort:~/featureartikel$ tar cvzf sicherung.tgz *<ENTER>
index.html
meinverzeichnis/
script.pl
test.html
text1.txt
text2.txt
titelleiste_mitte.gif
titelleiste_oben.gif
titelleiste_unten.gif
verlinktetextdatei.txt
you@dort:~/featureartikel$ ls -l sicherung.tgz<ENTER>
-rw-r--r--    1 you wwwusr    30107 Feb  3 00:50 sicherung.tgz
you@dort:~/featureartikel$
Das Kommando tar cvzf sicherung.tgz * schreibt alle Dateien und Unterverzeichnisse des aktuellen Arbeitsverzeichnisses automatisch rekursiv in eine Archivdatei (sicherung.tgz) und komprimiert diese anschließend. Beachten Sie hierbei, dass Links auch wirklich nur als Links gesichert werden. Die Zieldatei sichert tar nur mit, wenn sie sich unter den zu sichernden Dateien befindet! Den erstellten Tarball können Sie dann mit dem Browser downloaden und auf ihrer Festplatte speichern.

Die verwendeten Schalter werden in der folgenden Tabelle erklärt:

tar-Schalter Abkürzung Erläuterung
c create Archiv erstellen
v be verbose Meldungen ausgeben
f file angegebene Datei verwenden
z zip Kompression
x extract Dateien aus Archiv holen

Der x-Schalter kann anstelle von c verwendet werden, um die Dateien wiederherzustellen.

Beachten Sie, daß Sie den Entpackvorgang in dem Verzeichnis ausführen, in dem Sie auch gesichert haben, da evtl. enthaltene Unterverzeichnisse relativ zum Arbeitsverzeichnis wiederhergestellt werden!

[Bearbeiten] lynx - ein textbasierter Browser

Manchmal möchte man bei der Arbeit an der shell kurz auf irgendeiner Webseite etwas nachschlagen, oder eine Datei herunterladen. Was viele nicht gedacht hätten: es gibt sogar einen (eigentlich mehrere) Webbrowser die im Textmodus arbeiten! Der Standardbrowser lynx ist auf den meisten Systemen installiert.

Beispiel: Aufruf von lynx
you@dort:~/featureartikel$ lynx http://www.google.de/<ENTER>
Dieser Aufruf startet den Browser mit der angegebenen Webseite (hier die Suchmaschine google). Mit den Cursortasten können Sie von Link zu Link springen. Wenn Sie auf ein Formularfeld treffen, fragt lynx nach der Eingabe. Wenn Sie auf einem Link stehen und die Entertaste drücken, wird dieser angesteuert. Handelt es sich um eine nicht anzeigbare Datei, fragt lynx nach dem Speicherort und startet nach dem Bestätigen den Download. Mehr Informationen über die Steuerung des Browsers enthält die Hilfe, die Sie durch Eingabe von man lynx aufrufen.

[Bearbeiten] wget – Dateien von URLs downloaden

Sie möchten eine Datei von einem entfernten Server auf Ihren herunterladen? Oder vielleicht eine komplette Website von einem anderen Server spiegeln? Dann ist wget für Sie das Tool der Wahl. Mit wget können Sie eine oder mehrere Dateien ggf. auch rekursiv von einem entfernten Server laden. Falls ein Download (z.B. bei größeren Dateien) abbricht kann wget ihn an der Abbruchstelle wieder aufnehmen.

Wenn Sie auf einem Internet-Server arbeiten, gehen solche Downloads in vielen Fällen ungleich schneller, als wenn Sie mit Ihrem PC etwas downloaden. Der Grund ist, dass der Internet-Server des Providers in der Regel eine viel breitbandigere Internet-Anbindung hat als Ihr PC-Internetzugang. Wundern Sie sich also nicht, wenn Downloads mit wget im günstigen Fall fast so schnell gehen wie lokale Kopiervorgänge auf dem Rechner.

Hinweis

wget ist eher selten installiert. Es lohnt sich aber, es einfach auszuprobieren oder ggf. den Provider zu bitten es nachzuinstallieren.
Beispiel
you@dort:~/featureartikel$ wget http://www.speedesign.de/index.html<ENTER>
you@dort:~/featureartikel$ wget -c http://www.fsai.fh-trier.de/~gielj/files/selfhtml80.zip<ENTER>
you@dort:~/featureartikel$ wget -c -r -l 10 http://aktuell.de.selfhtml.org/artikel/index.htm<ENTER>
you@dort:~/featureartikel$ wget -c -r -k -l 10 http://aktuell.de.selfhtml.org/artikel/index.htm<ENTER>
Der erste Aufruf lädt einfach die Datei index.html herunter und speichert sie im Arbeitsverzeichnis. Der zweite arbeitet ähnlich, kann jedoch einen abgebrochenen Download durch erneutes Aufrufen des gleichen Kommandos wieder fortsetzen.
Der dritte Aufruf mit den Optionen c, r und l bewirkt einen rekursiven Download der angegebenen Seite. Rekursiv bedeutet, dass wget den Links in der Startseite folgt und die verlinkten Seiten ebenfalls herunterlädt. Mit dem Schalter -l 10 wird bestimmt, daß nur Seiten bis zu einer Tiefe von zehn Links heruntergeladen werden sollen.
Beachten Sie bitte, dass der rekursive Download einen sehr hohen Traffic, sowohl auf der Seite ihres Providers, als auch auf der des Anbieterservers verursachen kann! Es ist im allgemeinen keine feine Geste, einen Server einfach blind "leerzusaugen". Gebrauchen Sie diese Funktion also maßvoll!
Beim letzten Aufruf wurde noch der -k-Schalter hinzugefügt. Dieser bewirkt eine Umwandlung von entfernten in lokale Links. Das ist vor allem wichtig, wenn Sie das Dokument offline lesen möchten.

[Bearbeiten] Hilfe?

Alle der hier genannten Kommandos und Tools besitzen sehr viele Schalter und Optionen. Diese alle hier zu nennen, würde erstens den Rahmen des Artikels sprengen und zweites wäre es völlig unnötig. Denn Linux bringt ein sehr auskunftsfreudiges Hilfesystem mit, durch das alle Befehle und Programme ausführlich dokumentiert werden. Der einzige Pferdefuss der Sache ist, daß die meisten Hilfetexte in Englisch verfasst sind, oder die deutschen zumeist nicht auf dem Rechner installiert sind.

Beispiel: Hilfe über Schalter
you@dort:~/featureartikel$ wget --help<ENTER>
you@dort:~/featureartikel$ mv --help<ENTER>
you@dort:~/featureartikel$ grep -h<ENTER>
Fast alle Programme geben Hinweise über Ihre Optionen aus, wenn Sie sie mit dem Schalter --help aufrufen.
Beachten Sie dabei, daß sie zwei Minuszeichen voranstellen. Die Kurzversion lautet -h (mit einem Minuszeichen). Allerdings müssen Sie oft ausprobieren, welcher der beiden Schalter bei welchem Programm funktioniert. Das ist nämlich oft unterschiedlich.
Beispiel: manual-Pages
you@dort:~/featureartikel$ man lynx<ENTER>
Fast jedes Kommando, den Sie auf der Kommandozeile eingeben können, besitzt eine sogenannte manpage. Diese enthalten meist ausführlichere Informationen und sind zudem manchmal auf deutsch installiert. Manpages haben einen einheitlichen Aufbau und können durchblättert und durchsucht werden wie beim less-Kommando weiter oben beschrieben.

Die manual-pages sind in neun anwendungsorientierte Zielgruppen unterteilt. Sie können den zu durchsuchenden Abschnitt mit einem Aufruf der Form man Abschnittsnummer Begriff angeben. Ohne Angabe einer Abschnittsnummer wird immer der Abschnitt eins durchsucht. Folgende Abschnitte sind definiert:

Nummer Abschnitt
1 Programme und Shell-Befehle (Standardabschnitt)
2 Systemaufrufe (Kernelfunktionen)
3 Systembibliotheken
4 Spezialdateien (z.B. unterhalb von /dev)
5 Dateiformate und Konventionen, (z.B. Aufbau der hosts-Datei)
6 Spiele
7 Makro-Pakete
8 Systemverwaltungsbefehle
9 nicht standardisierte Kernelroutinen
Beispiel: apropos
you@dort:~$ apropos less<ENTER>
eview (1)            - easy Vim, edit a file with Vim and setup for modeless editing
evim (1)             - easy Vim, edit a file with Vim and setup for modeless editing
less (1)             - opposite of more
lessecho (1)         - expand metacharacters, such as * and ?, in filenames on Unix systems.
lessfile (1)         - "input preprocessor" for less.
lesskey (1)          - specify key bindings for less
lesspipe (1)         - "input preprocessor" for less.
zless (1)            - file perusal filter for crt viewing of compressed text
Das apropos-Kommando gibt eine Liste mit den zum angegebenen Begriff passenden manpages aus. Ganz links steht der Name der manpage, in Klammern daneben der Abschnitt und rechts eine kurze Beschreibung. Das man-Kommando sucht standardmäßig manpages in Abschnitt eins. Möchten Sie z.B. in Abschnitt 5 suchen müssen Sie folgendes eingeben:
you@dort:~$ man 5 hosts<ENTER>

[Bearbeiten] Shell-Hilfen

Das Tippen an der Kommandozeile kann schnell ermüdend wirken - wenn man stur einzelne Befehle eingibt! Aber die meisten Shells sind mit vielerlei Eingabe- und Arbeitshilfen ausgestattet von denen hier nur die wichtigsten genannt werden sollen.

[Bearbeiten] History - Befehle wiederholen

Wenn Sie einen Befehl eingegeben haben, so wird dieser gespeichert. Mit den Cursortasten <AUF> und <AB> können Sie in der "History" blättern. Bereits eingegebene Befehle erscheinen dann in umgekehrter Reihenfolge. Mit <LINKS> und <RECHTS> können Sie einen Befehl bearbeiten um z.B. einige Angaben zu verändern. Durch die Eingabe von history wird die Liste mit den gespeicherten Befehlen ausgegeben.

[Bearbeiten] Vervollständigung

Eine grosse Erleichterung sind die Verfollständigungsbefehle. Der wichtigste ist die Tabulatortaste (<TAB>). Wenn Sie z.B. den Anfang eines Dateinamens eingeben und die <TAB>-Taste drücken, so wird versucht, den Namen soweit wie möglich zu vervollständigen. Zweimaliges Drücken gibt eine Liste mit den möglichen Vervollständigungen aus. Versuchen Sie einmal die <TAB>-Taste zweimal hintereinander an der leeren Kommandozeile zu drücken. Dann wird eine mehr oder weniger lange Liste mit möglichen Kommandos ausgegeben.

[Bearbeiten] Pipes - Ausgaben weiterleiten

Sie können die Ausgabe jedes Kommandos an ein anderes (dafür geeignetes Kommando) weiterleiten. Pipes sind eines der mächtigsten Werkzeuge der Shell, denn damit lassen sich viele, auf ganz bestimmte Aufgaben beschränkte, Kommandos zu komplexen Spezialfunktionen zusammenbauen! Zum Verketten von Kommandos verwendet man das Pipe-Symbol (| - Senkrechtstrich).

Beispiel
you@dort:~/featureartikel$ ls -l | grep html<ENTER>
-rw-r--r--    1 you wwwusr      136 Feb  2 21:21 index.html
-rw-r--r--    1 you wwwusr     3893 Feb  2 21:33 test.html
you@dort:~/featureartikel$
 
you@dort:~/featureartikel$ cat *.html | less<ENTER>
Oben wird die Ausgabe von ls an das grep-Kommando weitergegeben. Dieses durchsucht die Ausgabe dann zeilenweise nach "html" und gibt nur Zeilen, in denen dieser Suchbegriff vorkommt, aus. Das zweite Konstrukt leitet die Ausgabe von cat an den Pager less weiter, der das Ergebnis dann interaktiv anzeigt.

[Bearbeiten] Ausgaben umleiten

Sie können Kommandoausgaben auch umleiten. Üblicherweise erfolgt die Umleitung in Dateien. Als Symbole werden dafür die Zeichen (>) und (>>) verwendet. Ein einfaches Grösserzeichen bewirkt die Ausgabeumleitung in eine neue Datei (bestehende werden ggf. überschrieben!). Doppelte bewirken das Anhängen der Ausgabe an eine Datei.

Beispiel
you@dort:~/featureartikel$ ls -l > verzeichnisinhalt.txt<ENTER>
you@dort:~/featureartikel$ tar cvfz foo.tgz * >> sicherungslogfile.txt<ENTER>
you@dort:~/featureartikel$ echo -e 'Test-Datei\nmit neuer Zeile' > test.txt

[Bearbeiten] Bildschirm löschen

Manchmal ist es hilfreich, für eine Ausgabe einen sauberen Bildschirm zu haben. Diesen bekommen Sie durch die Eingabe von clear oder das Drücken der Tastenkombination <STRG>+<L>.

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Index
Mitmachen
Werkzeuge
Spenden
SELFHTML