![]() |
Achim Schrepfer:
| ||
| |||
| E-Mail: | |
|---|---|
| Homepage-URL: |
Bei Fragen zu diesem Beitrag bitte den Autor des Beitrags kontaktieren!
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.
Wichtig! 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.
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.
PS: Jeder Autor ist dankbar für ein Feedback seiner Leser. Auch ich freue mich über jede Meinung, denn ich möchte den Text im Laufe der Zeit weiterentwickeln, verbessern und an die Bedürfnisse der Leser anpassen.
Am einfachsten ist die Arbeit natürlich direkt am eigentlichen Rechner über die angeschlossene Tastatur und Bildschirm. Da dies aber
in vielen Fällen unpraktisch ist (z.B. wenn der Rechner einige hundert Kilometer weit weg steht ;-]), gibt es die Möglichkeit, einen entsprechend
eingerichteten Linuxrechner so fernzusteuern, als säße man direkt davor. Entsprechend eingerichtet heißt, dass auf dem Zielrechner
ein
Telnet- oder SSH-Server laufen muß, der die Eingaben von einem entsprechenden Clientprogramm entgegennimmt und die
Ergebnisse zurücksendet. SSH ist dabei besser als Telnet, weil alle übertragenen Daten verschlüsselt werden und so
z.B. Passwörter nicht (oder nur mit sehr hohem Aufwand) mitgelesen werden können. Aus diesem Grund wird hier auch nur noch auf SSH Bezug genommen.
Zunächst einmal müssen Sie sich einen SSH-Client auf ihrem Rechner installieren. Für Windows-Benutzer empfehle ich aufgrund der
einfachen Handhabung (keine Installation notwendig) das frei erhältliche PuTTY. Auf den meisten Linuxsystemen ist standardmäßig
ein SSH-Client installiert. Weitere Clientprogramme sind im Linkverzeichnis unter
Telnet- und SSH-Programme aufgelistet.
Wird mit dem SSH-Clientprogramm erfolgreich die Verbindung zu einem entfernten Server-Rechner aufgenommen, so wird zunächst nach Benutzernamen und Passwort gefragt. Wenn Sie also von ihrem Provider oder Administrator einen SSH-Zugang bekommen haben, so müssen Sie dafür auch das entsprechende Benutzername/Passwort-Paar erhalten haben. Fragen Sie den Provider im Zweifelsfall danach! Nach erfolgreicher Anmeldung wird eine Eingabeaufforderung (Shellprompt) angezeigt und Sie können Ihre Kommandos eingeben.
Doch Vorsicht! Obwohl die meisten Provider die Umgebungen der SSH-Benutzer besonders absichern, können Sie durch unüberlegtes Handeln auf dem Linuxrechner Schaden anrichten! Überlegen Sie stets zweimal, bevor Sie die Enter-Taste drücken, um ein Kommando auszuführen! Eine Undo-Funktion, wie sie bei vielen modernen Programmen üblich ist, gibt es auf dieser Ebene nämlich nicht!
Informationen zum Arbeiten mit den Programmen PuTTY und WinSCP finden Sie innerhalb dieses Artikels im Abschnitt
SSH-Software. Lesen Sie den betreffenden Abschnitt gegebenenfalls zuerst, falls Sie Windows-Anwender sind, der auf einem entfernten Linux-Server arbeiten will und die Clientprogramme noch gar nicht hat und/oder erst mal mit deren Grundfunktionen vertraut werden will. Hier geht es nun gleich weiter in medias res. Es wird davon ausgegangen, dass Sie sich erfolgreich angemeldet haben und an der Eingabeaufforderung (Shellprompt) Kommandos eingeben können.
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 |
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. Weitere Optionen des ls-Kommandos
finden Sie in der
Kommandoreferenz.
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.
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 |
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.
Möchten Sie eine Datei von irgendwoher in das aktuelle Verzeichnis kopieren oder verschieben, so verwenden Sie für die Zielangaben einfach einen Punkt (.).
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.
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.
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).
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 |
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.
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.
Weitere Informationen zu chmod finden Sie in der
Kommandoreferenz.
Innerhalb von SELFHTML finden Sie bei den "kleinen Helferlein" ü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.
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! 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. 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.
| Kommando | Abkürzung | Erläuterung |
|---|---|---|
ln |
link | Einen Dateisystemlink erstellen |
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.
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!
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!
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.
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!
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.
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.
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.
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.
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.
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.
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.
Hinweis: 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 |
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>
Weitere Hilfequellen finden Sie im
Anhang.
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.
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.
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.
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).
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.
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.
you@dort:~/featureartikel$ ls -l > verzeichnisinhalt.txt<ENTER> you@dort:~/featureartikel$ tar cvfz foo.tgz * >> sicherungslogfile.txt<ENTER>
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>.
© 2007
Impressum, für diese Seite:
selfeature@speedesign.de