Logo
RuTh's  RuThLEss  HomEpAgE

 

sTaRt
 
 
 
 
 
 
 
 
FuN
 
 
 
 
fAcTs
 
 
 
>
Linux-Kurs
>
CIP-Raum-Handout
>
Linux-Handout
>
Kurzreferenz
>
Einführung Programme
>
Fragen& Antworten (FAQ)
>
Glossar
>
Linux-Tools für Colis
>
Profitipps
>
Linux Links
 
 
 
 
 

Linuxkurs

für User der Fakultät für Computerlinguistik an der UdS

Dies ist ein Linux-Kurs - d.h. ich kann keine Windows-Fragen beantworten.

 

Inhalt

Link zu den wichtigsten Linux-Befehlen zum Ausdrucken

 


 

Orientierung

Was ist UNIX/Linux?

"Linux" und "Solaris" sind Vertreter der Betriebssystemfamile "UNIX". Diese Multi-User-Betriebssysteme werden verwendet, wo mehrere Benutzer von verschiedenen Arbeitsplatzrechnern aus auf den selben Zentralrechner zugreifen wollen -- z.B. an Universitäten, Firmen und in Computerräumen.
Der Vorteil: Die zentralen Rechner ("Server" genannt) stellen den anderen Arbeitsplatz-PCs ("lokale Terminals" genannt) übers Netzwerk alle Programme und Dateien zur Verfügung, so dass es gleich ist, an welchem der Arbeitsplatz-PCs man sitzt. Jeder Benutzer besitzt auf dem Server sein über das Netzwerk erreichbares "Home-Verzeichnis", in dem seine persönlichen Dateien liegen.

Der zentrale Server der CoLi heisst z.B. gnome.coli.uni-sb.de, sein Betriebssystem ist Solaris Unix. Der CIP-Raum-Server heisst zip.cip.coli.uni-sb.de, die lokalen Terminals (Arbeitsplatz-PCs) in unserem CIP-Raum haben Namen wie path, tree, label, erase.cip.coli.uni-sb.de u.a. ... Ihr Betriebssystem ist Linux.

Anmelden (Einloggen)

Damit nun das lokale Terminal (der Arbeitsplatz-PC im CIP-Raum unter dem Tisch vor Dir) weiss, wen er dieses Mal vor sich hat, muss sich jeder Benutzer als erstes immer mit seiner Login (seinem Benutzernamen), und seinem geheimen Passwort anmelden. So stellst Du sicher, dass Du vom Server Deine Dateien angezeigt bekommst.

Deine Login und ein erstes Passwort solltest Du von der Systemgruppe erhalten haben. Wenn nicht, oder wenn es nicht klappt, dann frag bitte bei der Systemgruppe nach.

Wenn Du an einem Linux-Rechner sitzt, dann siehst Du als erstes ein Anmeldebildschirm. In dieses Feld tippst Du Deinen Benutzernamen (Login) ein, und drückst die Return-Taste <return>; dann in das zweite Feld Dein Passwort und nochmal <return>.

Das Passwort ist beim Eintippen übrigens absichtlich unsichtbar!Hiermit hast Du Dich eingeloggt. Willkommen bei Linux.

Abmelden (Ausloggen)

Bist Du fertig mit der Arbeit am Linux-Rechner, musst Du Dich abmelden. Abmelden ist wichtig, denn tust Du das nicht, könnte jeder, der nach Dir kommt, Deine Dateien lesen, ändern, löschen, oder unter Deinem Namen eMail verschicken!

Im Textmodus meldet man sich ab durch Eingabe von

[martin@zip]$ logout<return>

Oder, in einem graphischen System wie in der CoLi, über das Menü ausloggen.

Ein beispielhafter Linux-Bildschirm

Auf dem folgenden Beispiel-Bild siehst du zwei sogenannte "Terminal-Fenster". Das vordere ist farblich hervorgehoben, d.h. es hat gerade den Fokus und kann Befehle annehmen. Rechts oben sieht man den Pager, der die Nutzung von "virtuellen Bildschirmen" ermöglicht. Darunter befinden sich eine Uhr und ein eMail-Benachrichtiger.

Hinweis: Da es unter Linux zahlreiche "Window-Manager" (so was wie "Themes") gibt, können alle Elemente auch anderswo positioniert sein, oder andere Farben haben...! Dies ist nur ein allgemeines Beispiel.


Klick das Beispiel-Bild an, um eine vergrößerte Version
des Bildschirmphotos plus Zusatzinformationen zu sehen.

 


 

Befehlseingabe via Terminalfenster

Auf dem Bildschirm siehst Du nach dem Einloggen also ein "Terminal-Fenster"; darin läuft das für die Interaktion mit Linux essentielle Progamm, die "Linux-Shell" (so was wie ein Explorer). Unsere konkrete Shell heiss 'bash', es gibt auch andere. Die Shell zeigt am Anfang der Zeile die Eingabeaufforderung, auf Englisch Shell Prompt. Der Prompt ist ein Symbol wie ">", "$", oder Dein Login-Name, o.ä. In der CoLi sieht der Prompt z.B. so aus "[martin@gnome] (~) $". Hinter dem Prompt befindet sich die Einfügemarke, der Cursor.

Die Shell braucht man, um hinter ihren Prompt seine Befehle an den Rechner einzutippen. Alle Befehlseingaben werden durch Drücken der <Return>-Taste <return> bestätigt ("abgeschickt"). So startet man Programme und verwaltet seine Dateien. Wer von seinem Windows-PC die DOS-Eingabeaufforderung kennt, oder die MessageBox von Apple HyperCard, kennt das Prinzip.

Beispiele für den Aufbau von Linux-Kommandos

Echo ist ein einfacher Beispielbefehl. Er schreibt einen gewünschten Text ins Shell-Fenster. (Sinnvolle Verwendungszwecke folgen später):

[martin@zip]$ echo 'Hallo Welt!'<return>
Hallo Welt!

In einem Multi-User-System ist man für gewöhnlich nicht lange einsam. Will man also wissen, wer, seit wann, von wo alles noch nettes angemeldet (eingeloggt) ist, verwendet man den Befehl "who". Wenn du 'who' in einem lokalen Terminalfenster eingibst, zeigt es dir eventuell nur an, dass Du alleine an diesem Rechner bist.

[martin@zip]$ who <return>
michi    pts/10   Apr 21 09:43 (konsole.wohnheim.de)
denise   pts/18   Apr 21 11:40 (ordinateur.universite.fr)
mayer    pts/0    Apr 20 23:52 (rechner11.universitaet.de)
martin   pts/1    Apr 21 08:11 (tree.cip.coli.uni-sb.de)
mueller  pts/7    Apr 21 09:23 (comm.at.coli.uni-sb.de)
mueller  pts/12   Apr 21 10:41 (comm.at.coli.uni-sb.de)

Allgemeiner Aufbau:

alle angemeldeten Benutzer zeigen
who
bloßes Kommando
Textdatei bearbeiten
emacs datei.txt
Kommando [Lücke] Dateiname
Detaillierte Liste des
Verzeichnisinhalts ausgeben
ls -a verzeichnis
Kommando [Lücke] Minuszeichen Argument [Lücke] Verzeichnisname
usw.

Häufige Fehlerquellen

  • Tippfehler. Linux unterscheidet zwischen Groß- und Kleinschreibung!
  • Nur das fokusierte Fenster nimmt gerade Befehle an, d.h. das Fenster, in dem sich der Mousepfeil befindet (erkennbar an der farblichen Hervorhebung).
  • Wenn mehrere Fenster offen sind, sicherstellen, dass man den Befehl nicht an den falschen Rechner schickt. An welchen Rechner die Befehle gehen, erkennt man am Prompt: "[martin@gnome]" bedeutet, dass hier der Benutzer Martin Befehle an den Server Gnome schicken kann, "[martin@zip]" bedeutet, die Befehle gehen an den Server Zip.
  • Nicht alle Befehle sind auf allen Servern installiert.
  • Ein paar UNIX-Kommandos verhalten sich nicht 100% identisch zum gleichnamigen Linux-Kommando.

 


 

Befehlseingabe via Menü

Einige Befehle, die man häufig braucht, sind (alternativ dazu, dass man sie immer auch ins Terminalfenster eintippen kann) auch über ein Menü aufrufbar. Linux ist frei konfigurierbar, es gibt daher keinen allgemeinen Linux-Standard; je nach dem vom Benutzer gewählten "Window-Manager" (dem Programm, das für die graphische Darstellung zuständig ist) sind die Menüs anders angeordnet. Zwei Beispiele für häufige Varianten:

  • In den Window-Managern "KDE" und "Gnome" (ab WS2003) sieht das Menü ähnlich aus wie unter Windows, es ist durch Anklicken der Leiste am unteren Bildschirmrand zu öffnen.
  • Im Window-Manager "FVWM2" (bis WS2003/4) sind es an der CoLi hingegen drei verschiedene Kontext-Menüs eingestellt:
    • Um z.B. ein neues Terminal-Fenster zu bekommen, klickst du mit der linken Mousetaste irgendwo auf den Bildschirmhintergrund (!), und lässt die Mousetaste gedrückt, bis sich das Menü aufklappt. Dann wählst du den Menüpunkt "lokales xterm" -- ein neues Terminalfenster erscheint.
      Dieses Menü wirst Du am häufigsten benutzen, damit startet man auch Programme wie Netscape, GhostView, oder Emacs.
    • Es gibt noch zwei andere Menüs, die durch das Klicken auf den Hintergund mit den anderen beiden Mousetasten aufgerufen werden: Das zweite (mittlere Mousetaste) zeigt Dir eine Liste aller zur Zeit von Dir geöffneten Fenster -- praktisch, falls man mal ein Fenster "verlegt" hat. Das dritte (rechte Mousetaste) enthält eine Liste von Befehlen u.a. zum Schließen oder Verschieben von Fenstern und zum Neustarten des Windowmanagers. Diese beiden braucht man seltener.

 


 

Informationsbeschaffung

Welche Befehle gibt es?

Linux stellt eine Unmenge mächtiger Befehle zur Verfügung. Leider gibt es nicht für alle davon Menüs, aus denen man diese einfach auswählt. Wenn man will, dass eine der zur Verfügung stehenden Funktionen ausgeführt wird, muss man im Allgemeinen erst rausfinden, wie der Befehl heisst, und ihn dann eintippen.

Keine Panik: Auch Linux-Profis wissen die Befehle nicht alle auswendig. Aber sie wissen, wo sie nachschauen müssen! Die wichtigsten und nützlichsten dieser Befehle und Beispiele dafür kommen z.B. in diesem Kurs vor. Außerdem gibt's eine Kurzfassung zum Ausdrucken. Hier ein paar ungefährliche Befehle zum Ausprobieren:

Online-Handbuch

Es gibt mehrere interne Handbücher mit Namen wie "help", "man", "apropos" oder "?", die die Liste der verfügbaren Befehle und ihrer Funktionen und Benutzungsweise anzeigen. Mindestens eine davon gibt es immer. Diese Handbücher werden euch später sehr hilfreich sein, um selbständig neue Linux-Funktionen dazuzulernen.

Um sich detailliert über den Befehl "echo" zu informieren, gibt man ein:

[martin@zip]$ man echo<return>

Oder um sich ganz oberflächlich über den Befehl "who" zu informieren:

[martin@zip]$ who --help<return>

Hinweis: Um solche (read-only) Handbuchseiten weiterzublättern, tippt man die <SPACE>-Taste; um zeilenweise weiterzugehen, tippt man die Pfeiltasten hoch und runter; um das Handbuch zu verlassen und wieder zurück zur Eingabeaufforderung zu kommen, tippt man den Buchstaben q.

 


 

Programme

Programme im Textmodus

Die ursprünglichen Linux-Programme arbeiten alle ohne Mouse und ohne Menü, also nur durch Tastatureingaben. Alle Textmodusprogramme bieten eine eigene Hilfefunktion, die programmspezifische Befehle erklärt.
Um ohne Menüs Befehle einzugeben, wird meist eine "Meta-Taste" eingesetzt. Diese ist Die Steuerungstaste <STRG> (auch Control-Taste <CTRL> genannt), seltener <alt> oder <esc>. Diese Meta-Taste wird in Kombination mit einem angegebenen Buchstaben gedrückt. Geschrieben werden solche Tastenkombinationen oft als "^C" -- d.h., die Metataste <strg> gedrückt lassen und dann den Buchstaben <c> drücken, dann beide loslassen.

Beispiele für Programme im Textmodus:

emacs     Texteditor
joe       Texteditor
pico      Texteditor
elm       eMail
pine      eMail
lynx      WWW-Browser (keine Tabellen/Frames/Bilder)
w3m       WWW-Browser (Tabellen/Frames, keine Bilder)
mc        Dateimanager

Programme mit graphischer Benutzeroberfläche

Ist wie in der CoLi eine graphische Benutzeroberfläche (X-windows) installiert, sind noch mehr Programme verfügbar. Im Gegensatz zu Terminalprogrammen erscheinen diese beim Öffnen in ihren eigenen Fenstern (wie in Windows und MacOS), anstatt als Text im Shell-Fenster. Auch kann die Mouse verwendet werden, und es gibt anklickbare Menüs oder Paletten.

Beispiele für Programme mit graphischer Benutzeroberfläche

gimp        Graphikeditor
xcalc       Taschenrechner
xpaint      Malprogramm
gqview      Graphiken
xv          Graphiken
xloadimage  Graphiken
mozilla     WWW-Browser, eMail
galeon      WWW-Browser
netscape    WWW-Browser, eMail
gv          Ghostview (Postscript-Dateien)
acroread    Acrobat Reader (PDF-Dateien)
xpdf        PDF-Dateien
emacs       } Texteditor
xemacs      }
nautilus    Nautilus: Dateimanager

 


 

Programme aufrufen

zum Aufrufen eines Programmes gibt man dessen Namen in die Shell ein, und tippt <return>, z.B. um den Midnight Commander aufzurufen:

[martin@zip]$ mc<return>
Wie man ein Porgramm wieder beendet, sieht man in einem seiner Menüs, oder in der Hilfe des jeweiligen Programmes angezeigt. In diesem Fall (Midnight Commander) tippt man z.B. <F10>. Findet man das Kommando zum Beenden eines Textprogrammes gerade nicht heraus, kann man ein Programm meistens durch Eintippen von ^C abschiessen.

Mehrere Programme gleichzeitig verwenden

Nach dem Starten eines Programmes (z.B. durch Eingabe des obigen Beispielbefehls) ist das Terminalfenster 'besetzt'. D.h., man kann in diesem Fenster so lange keine anderen Programme mehr starten, bis das laufende Programm beendet wird. Es gibt zwei Methoden, eine für graphische und eine für textbasierte Programme, sich zu behelfen, wenn man mehrere Programme gleichzeitig verwenden möchte, aber nicht für jedes ein extra Terminalfenster öffnen will.

Neuer Hintergrundprozess

Will man in einer graphischen Benutzeroberfläche mehrere Programme gleichzeitig von einem Shell-Fenster aus starten, gibt man beim Starten der Programme als letztes Zeichen ein "&" ein, um jeweils einen neuen Prozess im Hintergrund zu starten:

Um z.B. mozilla und den Graphik-Viewer xview nebeneinander laufen zu haben, gibt man nacheinander ein:

[martin@zip]$ mozilla &<return>
[martin@zip]$ xv &<return>

Graphische Programme beendet man über ihren eigenen betreffenden Menü-Punkt (Quit oder Exit).

Virtuelle Terminals

Hat man keine graphische Benutzeroberfläche zur Verfügung, sondern ist im Textmodus, bietet Linux zum Ausgleich mehrere "virtuelle Terminals" an, zwischen denen man umschalten kann. In jedem kann ein anderes Terminal-Programm im Textmodus laufen. Angesehen davon ist das kurze Umschalten auf die virtuellen Terminals eine sichere Methode, um den Namen des lokalen PCs herauszufinden, oder um im CIP-Raum Disketten nutzen zu können.

Um zwischen den virtuellen Text-Terminals umzuschalten, tippt man jeweils eine der folgenden Tastenkombinationen:

<ALT> + <STRG> + <F1> 
<ALT> + <STRG> + ... 
<ALT> + <STRG> + <F7>

Die letzte dieser F-Key-Kombinationen ist mit der graphischen Benutzeroberfläche belegt, wenn man zu ihr zurückkehren will, bei uns ist das F7.

Virtuelle Bildschirme

In der graphischen Oberfläche gibt es bei uns auch zusätzlich sehr praktische "Virtuelle Bildschirme", um die zur Verfügung stehende Fläche scheinbar zu vergrößern. Um sie zu verwenden braucht man den 'Pager'.

Alle geöffneten Fenster werden verkleinert im Pager dargestellt. Klick mit der mittleren Mousetaste auf eine der kleinen Darstellungen eines Fensters im Pager, und verschieb es auf einen anderen Virtuellen Bildschirm (in ein anderes der Felder also). Dann klickst Du dieses Feld mit der linken Mousetaste an, um dorthin zu gelangen. Du kannst alle Felder im Pager benutzen, um dort Fenster abzulegen.

 


 

Programmaufruf mit Argumenten

Viele Programme nehmen beim Aufrufen Argumente an. Das können Voreinstellungen, Dateinamen, Links u.a. sein. Der Graphikeditor Gimp wird z.B. eine als Argument angegebene Graphikdatei laden und beim Öffnen sofort zeigen:

[martin@zip]$ gimp MeinBild.jpg<return>

Dem Textbrowser w3m kann man auf diese Weise schon beim Starten die URL der gewünschten Internetseite angeben, oder (sehr praktisch) seine Lesezeichendatei.

[martin@zip]$ w3m www.yahoo.com<return>

[martin@zip]$ w3m bookmarks.html<return>

Das Emailprogramm pine wird bei Angabe des Arguments -i sofort nach dem Starten die Inbox anzeigen:

[martin@zip]$ pine -i<return>

 


 

Wichtige Abkürzungen bei der Befehlseingabe

Befehlswiederholung

Wendet man ein und den selben oder ähnliche Befehle öfters hintereinander an, kann man ihn ab dem zweiten Mal durch einen Tastaturkurzbefehl wiederholen: Durch Drücken der "Hoch"-Pfeiltaste wird die Liste der zuletzt eingetippten Befehle rückwärts durchgegangen ("Bash History"). Bei dem gesuchten Befehl angekommen, kann man ihn wenn nötig mit Hilfe der "links"- und "rechts"-Pfeiltasten und ändern, und dann mit <return> bestätigen. Sehr praktisch!

Befehls- und Dateinamenergänzung

Erinnert man sich nicht mehr genau an den Namen eines gesuchten Befehls, oder will man eine Liste von verfügbaren Befehlen sehen, genügt es, die ersten Buchstaben einzugeben, und die Tabulatortaste <TAB> zu drücken -- Gibt es nur einen Befehl mit diesen Anfangsbuchstaben, wird er nun automatisch ergänzt. Sehr praktisch!
Gibt es mehrere solche Befehle, drückt man ein zweites Mal <TAB>, um eine Liste von allen möglichen Alternativen angezeigt zu bekommen.

Wie hiess gleich noch mal der Befehl, der mit "wh..." anfing? Ah, "who" war es.

[martin@zip]$ wh<TAB><TAB>
whatwhereis   while     whoami    whois     
whatis        which     who       whocalls
[martin@zip]$ wh
Das selbe funktioniert auch mit Dateinamen, wenn man z.B. die vorhandene Datei mit dem langen Namen mein_Brief_an_Otto.txt mit dem Programm Emacs öffnen möchte. Lässt man sich wie im Beispiel 'emacs m' vom Tabulator ergänzen, bekommt man als Vorschläge alle Dateien, die mit m anfangen, wenn es mehrere gibt. Fügt man nun zur Eindeutigmachung noch die Buchstaben '...ein_Br' hinzu, erkennt die Tabulator-Ergänzung die gemeinte Datei und ergänzt ihren vollständigen Namen:
[martin@zip]$ emacs m<TAB><TAB>
mein_Brief_an_Otto.txt     mein_Bild.jpg    mail.txt
[martin@zip]$ emacs mein_Br<TAB>
[martin@zip]$ emacs mein_Brief_an_Otto.txt

Kurzbefehle selbst Definieren

Liste der schon vorhandenen Kurzbefehle anzeigen lassen:

[martin@zip]$ alias<return>

man kann selber neue Kurzbefehle festlegen für Befehle, die man oft benutzt. Z.B. möchte man den Befehl "liste" erstellen als Abkürzung für die detaillierte Auflistung aller vorhandenen Dateien:

[martin@zip]$ alias liste='ls --color=tty'<return>

Auch Befehlsfolgen lassen sich so abkürzen, indem man alle Kommandos der Reihe nach in eine Zeile schreibt und anstelle der <return>s nach jedem Kommando einen Strichpunkt setzt.

Praktische Kurzbefehle, die man in Zukunft immer verwenden will, trägt man mit einem Texteditor in seine Startdatei (".bashrc") ein, damit sie jedesmal zur Verfügung stehen. Solche individuellen Einstellungen können überall in der '.bashrc'-Datei stehen, ausser in der ersten Zeile. Zum Bsp:

alias liste="ls -l  --color=tty"
alias weristda="who"

Wichtige Kurzbefehle für Textmodus-Programme

Wenn in einem Linux-Programm keine graphische Oberfläche mit Mouse- oder Menü-Steuerung zu Verfügungen stehen sollte, sondern nur Textmodus, müssen Funktionen wie Blättern oder Beenden durch Tastatureingaben gesteuert werden. Die Eingaben können von Programm zu Programm variieren. Die am häufigsten (z.B. in den Programmen more, man, less) verwendeten sind:

<SPACE>        eine Seite weiter
<RETURN>       eine Zeile weiter
             zeilenweise hoch oder runter
q              Beenden
quit<return>, exit<return>, halt<return>, bye<return>    Beenden

<Strg>+c        Beenden
<Strg>+d        End Of File (EOF), Eingabe beenden
<Strg>+<del>    Programm zwangsbeenden
<Strg>+<alt>+<del>       Rechner-Neustart (bei Absturz!)

<Strg>+z bg<return>    Programm in den Hintergund schalten
fg<return>             Programm in den Vordergrund schalten

Zwangsbeenden von Programmen

Mit dem Kommando top bekommt man eine Übersicht aller laufender Programm-Prozesse.

[martin@zip]$ top <return>
Durch Eintippen den Buchstabens "u" in top gefolgt vom eigenen Benutzernamen kann man alle Programm-Prozesse herausfiltern lassen, die einem selbst gehören. Dies ist nützlich, wenn man ein Programm, das man nicht normal beenden kann, "abschießen" möchte. Dazu merkt man sich die Prozess-Identifizierungs-Zahl, die in der top-Liste unter der Überschrift PID steht, und tippt nun den Buchstaben "k" für Kill ein, gefolgt von der PID-Nummer.
Aber nicht wild Prozesse abschießen, wenn Ihr nicht wisst, was die Prozesse tun, sonst könntet Ihr Euch sprichwörtlich den Boden unter den Füßen wegziehen. ;-)

Kopieren und Einsetzen von Text mit der Mouse

Es kommt oft vor, dass man etwas von einem Programm ins andere kopieren möchte. Z.B. will man einen mit dem Texteditor geschriebenen Text in ein eMail einsetzten, oder umgekehrt ein eMail im Texteditor bearbeiten. Leider gibt es in Linux keine globale Zwischenablage.

Zum Kopieren von Text daher an den Anfang der Textpassage mit der linken Mousetaste klicken, Taste gedrückt lassen, Text auswählen, loslassen. Die zuletzt so mit der Mouse ausgewählte Textpassage lässt sich jetzt in einem anderen Programm durch Klicken der mittleren Mouse-Taste einsetzen!

 


 

Verzeichnisse und Dateien

Wo bin ich?

Jeder Benutzer hat sein eigenes "Home-Verzeichnis", in dem er seine Dateien ablegen darf. Es hat als Namen den Login-Namen seines Benutzers und ist automatisch das erste Verzeichnis, in dem Du ankommst, wenn Du Dich einloggst. Die Home-Verzeichnisse für CoLi-Studenten liegen z.B. im Pfad "/home/CE/". Das "root directory" --die alleroberste Ebene-- heisst im Verzeichnissystem "/", dort dürfen "Normalsterbliche" keine Dateien ablegen.
Um den Pfad angezeigt zu bekommen, also in welchem Unterverzeichnis man sich gerade befindet, gibt es den Befehl Print Working Directory:

[martin@zip]$ pwd<return>
/home/CE/martin

Was ist drin im Verzeichnis?

Den Inhalt des aktuellen Verzeichnisses listet man mit dem Befehl "ls" auf:

[martin@zip]$ ls<return>
Brief_1.txt  Brief_2.txt  Heini.jpg  Meine_Bilder

Möchte man den Inhalt eines Verzeichnisses aufgelistet bekommen, in dem man sich gerade nicht befindet, muss man dessen Namen (Pfad) explizit angeben:

[martin@zip]$ ls Meine_Bilder/Photos<return>
Photo1.jpg Photo2.jpg Schnappschuss.jpg

Will man Dateien in einem Verzeichnis inklusive der "ausgeblendeten" Konfigurationsdateien (deren Namen mit einem "." beginnen) gelistet bekommen, fügt man "-a" hinzu:

[martin@zip]$ ls -a<return>
.bashrc .netscape  Brief_1.txt  Brief_2.txt
.elm    .vimrc     Heini.jpg    Meine_Bilder

Will man detailierte Informationen über die Dateien bzw Verzeichnisse --wem sie gehören, welche Zugriffsrechte bestehen, wie gross und wie alt sie sind:

[martin@zip]$ ls -l<return>
total 8
-rwx------   9 martin  stud    56 Jan 11 12:38 Brief_1.txt
-rw-r--r--   1 martin  stud    32 Oct  3 17:24 Brief_2.txt
-rwx------  30 martin  stud  1020 Dec 16 15:07 Heini.jpg
drwxr-x---   5 martin  stud   170 Jan  1 17:00 Meine_Bilder

Solche Argumente lassen sich beliebig kombinieren! Die folgende Argumentkombination gibt z.B. detailierte Informationen (-l) über alle Dateien (-a) in einem Unterverzeichnis (Pfad "Meine_Bilder/Photos") aus:

[martin@zip]$ ls -la Meine_Bilder/Photos<return>

Dateien erstellen

Gibt man als Argument einen Dateinamen an, der im aktuellen Verzeichnis noch nicht existiert, wird von vielen Programmen eine neue leere Datei diesen Namens erstellt, und mit dem genannten Programm geöffnet. Um mit dem Texteditor emacs eine leere Textdatei zu erstellen und zu öffnen, tippt man z.B.:

[martin@zip]$ emacs Neue_Datei.txt<return>

Zur Wahl von Verzeichnis- und Dateinamen

  • Nichts ausser Buchstaben, Unterstrichen ("_"), Punkten ("."), Bindestrichen ("-") und Zahlen verwenden!
  • Keine Leer- oder Sonderzeichen (Umlaute, Sterne) verwenden!
  • Auf Gross- und Kleinschreibung achten, für Linux ist das ein Riesenunterschied.
  • Dateien und Verzeichnisse, deren Namen mit einem Punkt beginnen (wie ".bashrc/") gelten als "versteckt". Sie enthalten meist Voreinstellungen u.ä. und werden beim gewöhnlichen Listen des Verzeichnisinhalts nicht angezeigt, obwohl sie da sind.
  • Die DOS-Suffixe (".txt", ".pdf", ".jpg" etc) müssen nicht geschrieben werden, Linux funktioniert auch ohne sie. Jedoch ist es in der Praxis oft übersichtlicher, die Suffixe trotzdem zu verwenden, um Bilder, Texte, Programme etc unterscheiden zu können.

Neues Verzeichnis erstellen

Mit mkdir (make directory) erstellt und benennt man ein neues leeres Verzeichnis. Macht davon Gebrauch, um Eure Dateien sinnvoll zu ordnen, indem Ihr einzelne Unterverzeichnisse für Studium, Privates, usw. anlegt.

[martin@zip]$ mkdir Studium<return>

So erstellt man ein Unterverzeichnis in einem Verzeichnis:

[martin@zip]$ mkdir Studium/Informatik-Uebung<return>

Verzeichnis wechseln

Mit dem Befehl cd (change directory) wechselt man in ein anderes Verzeichnis. (Zur Veranschaulichung steht hier zusätzlich die Ausgabe des Befehls 'pwd' dabei, damit Ihr seht, woran Ihr als Anfänger erkennt, wo Ihr gerade seid. Ihr braucht später nicht jedesmal 'pwd' eingeben).

[martin@zip]$ pwd<return>
/home/CE/martin
[martin@zip]$ cd Meine_Bilder<return>
[martin@zip]$ cd Photos<return>
[martin@zip]$ pwd<return>
/home/CE/martin/Meine_Bilder/Photos

Oder, durch Angabe eines längeren Pfades als Argument, gleich mehrere Schritte auf einmal:

[martin@zip]$ pwd<return>
/home/CE/martin
[martin@zip]$ cd Meine_Bilder/Photos<return>
[martin@zip]$ pwd<return>
/home/CE/martin/Meine_Bilder/Photos

Die zwei Punkte ".." sind die Abkürzung für die nächsthöhere Verzeichnisebene. Um von einem Verzeichnis in die genau darüberliegende Ebene zu wechseln, gibt man "cd .." ein:

[martin@zip]$ pwd<return>
/home/CE/martin/Meine_Bilder/Photos
[martin@zip]$ cd ..<return>
[martin@zip]$ pwd<return>
/home/CE/martin/Meine_Bilder

Mit "cd" ohne Angabe von Argumenten kehrt von überall aus sofort in sein "Home-Verzeichnis" zurück: Die Tilde "~" ist eine alternative Abkürzung für das Home-Verzeichnis. Mit "cd -" kehrst Du in das letzte Verzeichnis zurück, indem Du zuvor warst (egal ob drüber oder drunter):

[martin@zip]$ pwd<return>
/home/CE/martin/Meine_Bilder/Photos
[martin@zip]$ cd ~<return>
[martin@zip]$ pwd<return>
/home/CE/martin
[martin@zip]$ cd -<return>
[martin@zip]$ pwd<return>
/home/CE/martin/Meine_Bilder/Photos

Übersicht Pfad-Abkürzungen

.   Pfad hierher
..  Pfad zu einer Ebene höher
~   Pfad zum Homeverzeichnis
-   Pfad zum vorherigen Verzeichnis

 


 

Verzeichnis löschen

Mit Remove Directory löscht man ein leeres (!) Verzeichnis. Befinden sich in dem zu löschenden Verzeichnis noch Dateien oder Verzeichnisse, müssen diese zuerst alle gelöscht werden! (siehe unten)

[martin@zip]$ rmdir Meine_Bilder<return>

Dateien löschen:

Mit dem Remove-Befehl rm löscht man eine Datei.

[martin@zip]$ rm bloede_Datei.txt<return>

Mehrere Dateien auf einmal löscht man, indem man im Dateinamen Metazeichen wie * verwendet: Um z.B. im aktuellen Verzeichnis alle Dateien zu löschen, die mit ".txt" aufhören:

[martin@zip]$ rm -i *.txt<return>

Um im aktuellen Verzeichnis wirklich alle Dateien zu löschen. (Vorsicht!):

[martin@zip]$ rm -i *<return>

Man kann auch den Pfad eines Verzeichnisses und einen * angeben, um dessen gesamten Inhalt zu löschen:

[martin@zip]$ rm -i Meine_Bilder/*<return>

Hinweise:

  • Das Löschen einer Datei mir rm ist unwiderruflich!
  • VORSICHT: Nie "rm .*" eingeben, um Dateien zu löschen oder kopieren, die mit "." beginnen! Der Ausdruck '.*' wird auch zu ".." erweitert, ein Verweis auf das Verzeichnis in der darüberliegenden Ebene, das dann auch dran glauben müsste, wenn Ihr die Zugriffsrechte darauf habt!
    "I used to create some files and directories named like '*', '.*' and '* *', even recursive, and then asked my operator for assistance to delete 'em. Hell, was it funny to see him typing `rm -ri .*' and confirming every of the over 140 questions with 'y' and the other 500 with `n'....". Merke: Immer lieb zu den Admins sein, sonst löschen sie Dein Account. ;-)

 


 

Kopieren

Beim Copy-Befehl wird als erstes Argument der Name der Quelldatei angegeben, als zweites Argument der neue Name, den die Kopie bekommen soll. Man wähle für die Kopie einen noch nicht existierenden Namen; die Originaldatei bleibt dabei unverändert.

[martin@zip]$ cp -i Original.jpg Kopie.jpg<return>

Den Inhalt eines gesamten Verzeichnisses in ein anderes kopieren:

[martin@zip]$ cp -i Quellverzeichnis/* Zielverzeichnis/<return>

Verschieben

Mit dem Move-Befehl wird eine Datei in ein anderes Verzeichnis verschoben. D.h. die Original-Datei im Quellverzeichnis ist danach gelöscht, und existiert nur noch im Zielverzeichnis.

[martin@zip]$ mv -i Mein_Brief.txt Zielverzeichnis/<return>

Umbenennen

Move kann auch verwendet werden, um eine Datei umzubenennen. Man "verschiebt" sie sozusagen innerhalb desselben Verzeichnisses in eine neue Datei mit einem anderen Namen.

[martin@zip]$ mv -i alter_Name.txt neuer_Name.txt<return>

Vorsicht beim Löschen, Kopieren und Verschieben!

  • Innerhalb eines Verzeichnisses nie für die Kopie denselben Namen wie den des Originals wählen! Sonst wird die Originaldatei erst durch eine leere neue ersetzt und dann erst kopiert -- was gleichbedeutend damit ist, sie zu löschen!
  • Die Option -i bei mv, rm, und cp bedeutet, dass im Zweifelsfall vorher nachgefragt wird, und stellt so sicher, dass nicht versehentlich schon gleichnamige existierende Dateien überschrieben werden. Die Datei wird dann nur gelöscht, wenn man die Frage mit "y" für Yes beantwortet.
  • Bei vielen manchen Systemen ist dieses Verhalten schon die Voreinstellung, man braucht dann -i nicht extra dazuzuschreiben.

 


 

Dateigröße

Die Größe der Dir gehörenden Dateien zu wissen, ist wichtig, da es hier Quota gibt: Jeder Student darf maximal 50 MB belegen! Die Grösse einer Datei bzw des aktuellen Verzeichnisses bekommt man mit:

[martin@zip]$ du Datei.txt<return>
bzw
[martin@zip]$ du -s *<return>

 


 

Meta-Zeichen

*                steht für eine beliebige Zeichenfolge
? oder .              steht für genau 1 beliebiges Zeichen 
{Otto,17,foobar} steht für genau die angegebenen Zeichenketten   
[2-9]            steht für eine Folge von Zahlen

Wozu brauche ich die?

Will man mehrere Dateien gleichzeitig öffnen oder erstellen, ist es oft sehr unhandlich, wenn man den Namen jeder einzelnen eintippen muss. Das lässt sich oft vermeiden, v.a. wenn ihre Namen eine regelmäßige Gemeinsamkeit aufweisen.

Beispiel: Nachdem man mit dem Befehl ls die Liste aller im Verzeichnis verhandenen Dateien und Verzeichnisse betrachtet hat, möchte man nun z.B. ausschließlich alle Textdateien im aktuellen Verzeichnis mit emacs öffnen, die mit dem ".txt"-Suffix gekennzeichnet sind.

[martin@zip]$ ls<return>
Brief.txt  Uebung2.txt  hallo.txt  Bild.jpg  irgendwas.ps
[martin@zip]$ emacs *.txt<return>
ist identisch mit:
[martin@zip]$ emacs Brief.txt
[martin@zip]$ emacs Uebung2.txt
[martin@zip]$ emacs hallo.txt<return>

Mit Hilfe des Kommandos "echo" kann man sich in Kombination mit den Metazeichen alle Namen von im aktuellen Verzeichnis existierenden Dateien auflisten lassen, die einem gewissen Muster entsprechen. Das ist praktisch, wenn sich in einem Verzeichnis unübersichtlich viele Dateien befinden.

Z.B. zeigt uns die Ausgabe von ls, dass sich in deinem Verzeichnis sieben Dateien befinden, darunter irgendwo die drei Dateien Uebung7.txt, Uebung8.txt und Uebung12.txt.

[martin@zip]$ ls<return>
Aufgabe.jpg    Loesung7.txt   Loesung8.txt   Loesung12.txt
Uebung7.txt    Uebung8.txt    Uebung12.txt

Du willst jetzt z.B. nur alle Dateinamen auflisten lassen, die mit dem Wort "Uebung..." beginnen:

[martin@zip]$ echo Uebung*<return>
Uebung7.txt    Uebung8.txt    Uebung12.txt

Oder Du willst nur alle Dateinamen auflisten lassen, die mit dem Wort "Uebung..." beginnen, dann genau 1 Zeichen stehen haben, und mit txt enden (Also alle "Übungen" mit einstelliger Zahl):

[martin@zip]$ echo Uebung?.txt<return>
Uebung7.txt    Uebung8.txt

Das bedeutet: Wenn Du dieses Prinzip anwendest, und bei diesen Beispielen statt echo z.B. emacs schreibst, kannst du stattdessen die jeweilige Untermenge von Dateien z.B. im Texteditor öffnen! usw...

 


 

Drucken

Um zu drucken, muss man erst einen der vorhandenen Drucker bestimmen, indem man seinen Namen angibt, z.B. bei unserem CIP-Drucker namens "univers": "export PRINTER=univers<return>". Diese Zeile mußt Du unter normalen Umständen aber nicht jedesmal eintippen, da sie in Deiner ".bashrc"-Datei stehen sollte, die Deine "Voreinstellungen" enthält.

Welches Druckkommando für welches Dateiformat?

Einen Standard-Ausdruck einer Text- (datei.txt) bzw. einer Postscript-Datei (datei.ps) erhält man durch den entsprechenden der folgenden Befehle:

[martin@zip]$ a2ps MeinBrief.txt<return>

[martin@zip]$ lpr Vorlesung.ps<return>

Bitte Papier sparen! Um eine Postscript-Datei verkleinert auszudrucken, so dass je z.B. 4 Seiten auf einer DIN A4 Seite gedruckt werden, muss man den "Number Of Pages"-Befehl zum Verkleinern dazwischenschalten:

[martin@zip]$ psnup -4 Vorlesung.ps | lpr <return>

Analog dazu - Will man eine txt-Datei verkleinert ausdrucken, so dass je 4 Seiten auf einer DIN A4 Seite gedruckt werden, gibt man ein:

[martin@zip]$ a2ps -4 MeinBrief.txt<return>

Dateien im PDF-Format druckt man, indem man sie mit dem Programm Acrobat Reader öffnet, und darin den Drucken-Befehl aus dem Menü wählt:

[martin@zip]$ acroread vorlesung.pdf<return>

Um PDF-Dateien papiersparend zu drucken, wandelt man sie mit dem Kommando pdf2ps in eine gleichnamige Postscript-Datei um, und behandelt sie dann wie oben für .ps-Dateien beschrieben.:

[martin@zip]$ pdf2ps vorlesung2.pdf<return>
[martin@zip]$ psnup -4 vorlesung2.ps | lpr <return>

Druckerprobleme, Druckauftrag abbrechen

Du hast einen Druckauftrag abgesendet, aber es passiert nichts? Um rauszufinden, wieviele Druckaufträge noch darauf warten, bearbeitet zu werden, oder ob Fehler aufgetreten sind, sollte man einen Blick in die Warteschlange ("queue") werfen -- und nie den Druckbefehl einfach mehrmals absenden!!

[martin@zip]$ lpq<return>
Printer: univers@head  'CIP-Drucker / Raum 0.05, 17.2'
 Queue: no printable jobs in queue
 Status: job 'jemand@head+197' removed at 13:25:52.529
 Filter_status: (of) done at 13:25:52.304
[martin@zip]$

Wenn der oberste Druckauftrag in der Warteschlange "klemmt" (erkennbar an dem Wort "stalled"), muss derjenige, der ihn abgesendet hat, ihn abbrechen. Dazu oder allgemein zum Abbrechen von Druckaufträgen benutzt man den befehl lprm.

[martin@zip]$ lprm<return>
Printer univers@head:
  checking perms 'martin@zip+84'
  dequeued 'martin@zip+84'
[martin@zip]$

 


 

Dateizugriffsrechte

Betrachtet man die detaillierten Informationen über den Inhalt eines Verzeichnisses mit "ls -la" (siehe oben), bekommt man in der linken Spalte auch die aktuellen Zugriffsrechte der Dateien und Verzeichnisse gezeigt:

[martin@zip]$ ls -la <return>
-rw-r-----   1 martin stud Apr 18 20:33 lecture1.ps
drwxr-xr-x   4 martin stud Apr  9 10:26 meineHomepage
drwx------   4 martin stud Oct 28  1997 Bilder
-rw-------   1 martin stud Oct 22  1998 Brief.txt
-rwx------   1 martin stud Apr 19 11:44 meinProgramm
 ^^^   ^^^
user^^^ other
    group

Aaahja. Häää??

Allgemein: Die Buchstaben-Strich-Kombinationen, wie z.B. 'drwxr-xr-x', zeigen die Zugriffsrechte:

  • Das erste Zeichen gibt an, ob es sich um eine Datei (gekennzeichnet mit "-") oder um ein Verzeichnis (gekennzeichnet mit "d") handelt.

Die folgenden 9 Buchstaben sind drei Dreiergruppen:

  • Bei den Zugriffsrechten gibt es drei Personengruppen, die Rechte haben können, und zwar in dieser Reihenfolge
    • "user" (man selbst),
    • "group" (die Gruppe, der man angehört, z.B. "Student"), und
    • "other" (alle sonstigen).
  • Die drei Rechte, die Dateien und Verzeichnissen jeweils vergeben werden können, sind in dieser Reihenfolge
    • r="read" (Datei öffnen und lesen, bzw den Inhalt eines Verzeichnisses listen),
    • w="write" (Datei ändern oder löschen, bzw in einem Verzeichnis Dateien erstellen) und
    • x="execute" (ein Programm ausführen, bzw. in ein Verzeichnis wechseln).

Beispiel:

  • Bei den Dateien oben im Listenbeispiel hat der "user" alle 3 Rechte (rwx) an den Verzeichnissen "meineHomepage" und "Bilder".
  • An den Dateien "lecture1.ps" und "Brief.txt" hat er read- und write-Rechte,
  • an der ausführbaren Datei "meinProgramm" hat er alle Rechte (rwx).
  • An den "---" an den letzten drei Stellen sieht man, dass alle Dateien und Verzeichnisse (ausser Homepage) vor jeglichen Zugriffen fremder Personen ("other") geschützt sind.
  • An der Datei "lecture1.ps" hat die "group" zusätzlich read-Rechte, sonst keine.
  • An dem öffentlich zugänglichen Verzeichnis "Homepage" haben die "group" und "other" die Rechte, es zu öffnen und anzusehen ("read" und "execute"), nicht aber, es zu ändern.

Um diese Rechte zuzuweisen, gibt es zwei Methoden, beide können das selbe. Die erstere benötigt manchmal zwei Schritte, ist aber für Anfänger leichter. Die zweite erledigt alles in einem Schritt, ist aber schwieriger auswendig zu lernen.

Zugriffsrechte ändern -- Methode 1

Mit dem Befehl ChangeMode weist der Besitzer von Dateien den Gruppen ihre Rechte zu. Dabei gibt es folgende Argumente, bestehend aus drei Teilen:

  • Der erste Buchstabenblock gibt an, bei welcher/n Gruppe/n man die Rechte ändern will ("u", "g", "o", oder eine Kombination wie "go" etc, oder "a" für alle),
  • Dann dahinter, ob die Rechte genommen ("-"), gesetzt ("=") oder zu den vorhandenen hinzugefügt ("+") werden sollen,
  • als drittes, um welche Rechte es geht ("r", "w", "x", oder eine Kombination wie "rx").
  • Als letztes darf man nicht vergessen, den Dateinamen anzugeben.

Das Kommando ls -l zeigt, dass das Verzeichnis 'Studium' in diesem Beispiel anfangs alle Rechte (rwx) für alle gesetzt hat. Will man jetzt z.B., dass group und other nun für dieses Verzeichnis und andererseits dessen ganzen Inhalt (*) nur noch Read- und Execute-Permission (rx) haben, würde man folgendes eingeben: (zur Veranschaulichung der Änderungen steht jedesmal noch die Anzeige von 'ls -l' dabei; ls -l musst Du selbst nicht jedesmal eintippen):

[martin@zip]$ ls -l Studium<return>
drwxrwxrwx   4 martin stud    5372 Apr  9 10:26 Studium
[martin@zip]$ chmod go=rx Studium<return>
[martin@zip]$ chmod go=rx Studium/*<return>
[martin@zip]$ ls -l Studium<return>
dr-xr-xr-x   4 martin stud    5372 Apr  9 10:26 Studium

Nun möchte der Besitzer eine einzelne Datei hallo.txt seiner Gruppe zugänglich machen, indem er ihr Schreibrechte zuteilt:

[martin@zip]$ ls -l hallo.txt<return>
-rwxr-----   1 martin stud   164 Apr  9 13:20 hallo.txt
[martin@zip]$ chmod g+w hallo.txt<return>
[martin@zip]$ ls -l hallo.txt<return>
-rwxrw----   1 martin stud   164 Apr  9 13:20 hallo.txt

Um eine wichtige Datei so sicher zu machen, dass nicht einmal der Besitzer selbst sie versehentlich löschen kann, nimmt er sich selbst die Write-Permission für die Datei. Zusätzlich schützt er sie noch durch den dritten Befehl vor den Blicken und Zugriffen anderer:

[martin@zip]$ chmod u-w wichtig.txt<return>
[martin@zip]$ chmod og-rwx wichtig.txt<return>
[martin@zip]$ ls -l wichtig.txt<return><CENTER>
-r-x------   2 martin stud     512 Apr  9 09:17 wichtig.txt

Auch wenn der Besitzer sich selbst einmal die Rechte für seine Dateien oder Verzeichnisse genommen hat, hat er natürlich immer die Möglichkeit, sich diese Rechte an seinen Dateien mit dem chmod-Befehl wieder zurückzugeben!

Zugriffsrechte ändern -- Methode 2

Der Befehl ChangeMode kann die Rechte auch in einem Schritt setzen, unter Zuhilfenahme eines geekigen oktalen Bit-Feldes. :-) Man stelle sich die drei Gruppen "user", "group" und "other" jeweils als Stellen einer dreistelligen Zahl vor:

  • Die 'Hunderter' sind der "user"
  • die 'Zehner' sind die "group"
  • die 'Einer' sind "other".

Desweiteren ist jedem Recht ein Zahlenwert zugeordnet:

  • "read" = 4
  • "write" = 2
  • "execute" = 1
  • (keines davon) = 0

Will man nun bestimmten Gruppen bestimmte Rechte für Dateien geben/nehmen, addiere man die Zahlenwerte der gewünschten Rechte, und verwende sie als die betreffenden Stellen einer dreistelligen Zahl.

Will man z.B. sich selbst an der Datei "Dokument.txt" alle Rechte geben (read, write und execute, also 4+2+1 = 7), der Gruppe nur "read" (read = 4), und "other" soll gar keine Rechte erhalten (= 0), dann gibt man ein:

[martin@zip]$ chmod 740 Dokument.txt<return>

 


 

Sicherheit

In einem Multi-User-System sind die einzelnen Bereiche immer mit einem Passwort geschützt. Es gibt aber Cracker-Programme, die Wörterlisten mit typischen Passwörten wie Personennamen oder Geburtstagen durchprobieren! Ein sicheres Passwort...

  • ... hat 6-10 Buchstaben (meist wird vonm System sogar alles ab dem 8. Buchstaben ignoriert),
  • ... darf so wie es ist nicht im Wörterbuch stehen.
  • ... darf so wie es ist kein häufig verwendeter Name sein, und auch nicht der Spitzname eines Angehörigen, Haustieres, etc.
  • ... sollte irgendwo mittendrin mindestens ein spezielles Zeichen wie Zahlen oder !, ?, - enthalten
  • ... sollte am besten wie eine "zufällige" Buchstabenkette aussehen, z.B. die Anfangsbuchstaben eines Satzes.

Wozu Sicherheit?

Zugang zu Computern zu bekommen hat für Cracker einen großen Wert -- vor allem, wenn sie unter dem Namen einer anderen Personen teure Pornoseiten ansehen oder unerwünschte Massen-eMails versenden, oder die Festplatten anderer ohne deren Wissen als Dateien-Lagerraum für illegale Tauschbörsen nutzen können. Es wurde auch schon von Crackern versucht, zahlreiche gecrackte PCs gleichzeitig unter ihre Kontrolle zu bringen, um Denial-Of-Service-Attacken auf 'unbeliebte' Server zu starten. Auf den ersten Blick sieht es dann so aus, als ob Du an der Attacke oder den Spam-eMails etc. schuld wärest...

Passwort ändern

Mit dem Password-Befehl ändert man sein Passwort. Dabei wird man erst aufgefordert, sich zu identifizieren, indem man sein aktuelles Passwort eingibt. Dann gibt man das neue ein, und um sicherzugehen, dass man sich nicht vertippt hat, noch ein zweites Mal das neue. Die Änderung gilt nur für Euer Linux-Account.

[martin@zip]$ passwd<return>

Achtung, es kann vorkommen, dass die Tastaturbelegung nicht mit dem übereinstimmt, was auf der Tastatur aufgedruckt ist! Zum Beipsiel, wenn eine deutsche Tastatur an einem Rechner angeschlossen ist, der eine US-Amerikanische Tastaturbelegung hat. Dann liegen alle Sonderzeichen woanders, Buchstaben wie z und y sind vertauscht, und Ihr tippt Eurer Passwort unwissentlich falsch ein... Deswegen darf ein Passwort keine (deutschen) Umlaute oder sonstige sprachspezifischen Zeichen enthalten.

 


 

Disketten

Auch wenn Linux an sich keine Probleme mit langen Namen hat, werden die Dateinamen auf DOS-Disketten trotzdem auf 8+3 Zeichen gekürzt dargestellt.

Vorsicht, häufige Fehlerquelle: Die folgenden Befehle funktionieren natürlich nur auf dem lokalen Rechner - d.h. nicht in einem "Zip"- oder "Gnome"-Fenster! (Die Server haben kein Diskettenlaufwerk -- aber viele Leute inklusive mir probieren das trotzdem regelmäßig) ;-)
Für CIP-Raum-Benutzer bedeutet das, dass sie sich von einem "Zip"-Fenster aus immer zuerst auf dem lokalen Rechner einloggen müssen, um auf das Laufwerk zugreifen zu können! Dazu musst Du erst auf ein (lokales) Virtuelles Terminal umschalten.

Es gibt zwei Möglichkeiten, um unter Linux auf DOS-Disketten zuzugreifen, einerseits 'mTools' und andererseits 'mount'.

Methode 1 -- Disketten nutzen mit mTools

In den Folgenden Beipsiel sei 'tree' der Name des lokalen CIP-Raum-PCs. Den Inhalt der Diskette im Laufwerk A anzeigen:

[martin@tree]$ mdir<return>

Eine Datei bzw. ein Verzeichnis von der Festplatte auf die Diskette kopieren:

[martin@tree]$ mcopy Datei.jpg a:<return>

[martin@tree]$ mcopy MeineBilder/* a:Bilder/<return>

Eine Datei von der Diskette in ein Verzeichnis auf der Festplatte, bzw ins aktuelle Verzeichnis kopieren:

[martin@tree]$ mcopy a:Datei.jpg ZielVerzeichnis/<return>

[martin@tree]$ mcopy a:Datei.jpg .<return>

Ein leeres Verzeichnis auf der Diskette erstellen:

[martin@tree]$ mmd a:neuesVerzeichnis/<return>

Ein Verzeichnis samt Inhalt(!!), bzw eine Datei von der Diskette löschen:

[martin@tree]$ mdeltree a:bloedesVerzeichnis/<return>

[martin@tree]$ mdel a:Datei.jpg<return>

Die Größe einer Datei bzw Die Gesamtgröße aller Dateien auf der Diskette ermitteln:

[martin@tree]$ mdu a:Datei.txt<return>

[martin@tree]$ mdu -s<return>

Eine Datei innerhalb der Diskette verschieben:

[martin@tree]$ mmove a:Datei.txt a:Verzeichnis/<return>

Methode 2 -- Disketten nutzen mit Mount

Alternativ kann man den Inhalt der Diskette auch in einem Verzeichnis sichtbar machen (= mounten). Die Befehle, die das Wort 'floppy' enthalten, gelten für Diskettenzugriff, die die das Wort 'cdrom' enthalten, machen das selbe für Daten-CDs.

[martin@tree]$ mount /mnt/floppy <return>
  
[martin@tree]$ mount /mnt/cdrom<return>

Ab jetzt sind die Dateien von der Diskette im Pfad /mnt/floppy/ bzw. die von der CD-ROM in /mnt/cdrom/ zugänglich und können solange von dort mit ganz normalen Linuxkommandos kopiert, gelesen, bearbeitet werden.

Am Ende: Unmounten nicht vergessen! Bevor ihr geht und die Diskette auswerft, müsst ihr das Laufwerk wieder freigeben, sonst blockiert ihr es: Eine gemountete CD kann man nicht auswerfen, eine gemountete Diskette zwar schon, aber es kann keine weitere gemountet werden, bevor die vorhergegangene nicht abgemeldet wurde. Dazu gibt es jeweils die Kommandos:

[martin@tree]$ umount /mnt/floppy <return>
  
[martin@tree]$ umount /mnt/cdrom<return>

Tipp: Falls sich eure Diskette nicht mounten lässt, da Euer Vorgänger gegangen ist ohne sie zu unmounten: CIP-Raum-Rechner mit <CTRL>+<Alt>+<F1> und <Strg>+<Alt>+<Entf> neustarten.

 


 

Diverse nützliche Befehle

Dateien Lesen

Den Inhalt von (ASCII-)Textdateien zeigt man mit den Kommandos 'more' oder 'less' an. More zeigt zusätzlich noch an, wieviel Prozent der Datei schon gezeigt worden sind. Die Ausgabe ist read-only, d.h., man kann keine Änderungen machen. Blättern wie immer mit <SPACE> und <RETURN>, Datei verlassen mit <q>, Wort suchen mit "/suchwort<return>".

[martin@zip]$ more Brief2.txt
[martin@zip]$ less Brief3.txt<return>

Konkatenieren

Mehrere Text-Dateien aneinanderhängen und ausgeben, read-only, ohne blättern (Sinnvolle Verwendungszwecke siehe Befehlsverkettung):

[martin@zip]$ cat TextEins.txt TextZwei.txt<return>

Bildschirm leeren

Clear leert die Bildschirmanzeige des Shell-Fensters.

[martin@zip]$ clear<return>

Die Zeit

Das aktuelle Datum und Uhrzeit ausgeben:

[martin@zip]$ date<return>

Dateien Suchen

Drei Methoden, um eine Datei zu suchen: (Es sind nicht immer alle installiert) Groß- und Kleinschreibung bei Dateinamen beachten!

[martin@zip]$ whereis Spiele<return>

[martin@zip]$ find Verschollen.txt<return>

[martin@zip]$ locate Geheimnis.txt<return>

In Dateien Suchen

Eine sehr flexible Möglichkeit, eine Zeichenkette zu finden, ist Get Regular Expression Pattern, "grep". Es gibt einem alle Zeilen aus, in denen das gesuchte Wort/der gesuchte Ausdruck vorkommt. Dieser Befehl wird oft und gerne an allen möglichen Befehlen als Filter verwendet. Erst der Suchbegrif, dann der Suchort. Groß- und Kleinschreibung beachten!

[martin@zip]$ grep verschollenes_wort GrosseDatei.txt<return>

Dieser etwas komplexere Ausdruck sucht das 'bla' in allen Dateien, auch in Unterverzeichnissen, die auf .txt enden:

[martin@zip]$ find * -name "*.txt" -print | xargs grep bla<return>

Ordnung schaffen

Sortieren des Inhalts einer Textdatei:

[martin@zip]$ sort Liste.txt<return>

Sicherer Bildschirmschoner

xLock ist ein Bildschirmschoner z.B. in FVWM2, der nur durch Eingabe des Passwortes des eingeloggten Users wieder ausgeschaltet werden kann. Die einzige andere Möglichkeit, das 'lock' zu durchbrechen, ist den PC neuzustarten.

[martin@zip]$ xlock<return>

Finger

Wenn Du wissen willst, welche Login/eMail-Adresse ein Komiltone hat, oder welche Login zu welcher Person gehört, durchsuchst Du die Liste aller im CoLi-Netzwerk angemeldeten Personen mit dem Kommando "finger":

Wenn Du z.B. herauszufinden wolltest, wer "mayer" ist, und ob er/sie gerade online ist, wie lange er/sie schon kein Mail mehr gelesen hat, u.v.m., sähe das z.B. so aus:

[martin@zip]$ (~) $ finger mayer<return>
Linda Mayer (mayer)
Home: /home/HU/mayer
Shell: /bin/bash
Mail forwarded to mayer@top.coli.uni-sb.de.
New mail since Sat Apr 29 21:43:05 2000
Has not read mail for 00:09:54.
User   Real Name    Idle  TTY Host     Console Location
mayer  Linda Mayer  p8 gnome(path.cip.coli.uni-sb.de)
Plan: 

Dr. Linda Mayer
Fakultaet fuer Computerlinguistik, Geb. 17.2, Zi. 123 
Tel. +49/681/302-1234, FAX -5678
66123 Saarbruecken 
http://www.coli.uni-sb.de/~mayer
Ich arbeite am Projekt Blabla, Sprechstunde: Mo, 9Uhr.

Du bestimmst selbst, was anderen als Deinen "Plan:" angezeigt wird. Dazu schreibst Du Deine Projekte/Hobbies, Kontaktmöglichkeiten, etc. in eine Datei, die Du ".plan" nennst. Solange diese Datei in Deinem Verzeichnis liegt, und die Leserechte für die Gruppe (bzw alle anderen auch) gesetzt hat, wird ihr Inhalt allen gezeigt, die nach dir mit "finger" suchen. Ansonsten wird von 'finger' kein Plan gezeigt.

Kleines Beispiel für die schnelle Erstellung einer Plan-Datei:

[martin@zip]$ echo "Wer spielt mit mir Go?" > .plan
[martin@zip]$ chmod a+r .plan<return>

Speicherplatz sparen

Viele Dozenten stellen ihre Skripte als komprimierte Dateien zum Download bereit, diese erkennt man an der Datei-Endung '.gz' oder '.zip'. Man kann sie nur drucken und ansehen, wenn man sie vorher wieder auspackt! Mit GnuZip lassen sich grosse Dateien handlich komprimieren, mit GnuUnzip lassen sich (wie im 2. Beispiel) solche Dateien wieder öffnen:

[martin@zip]$ gzip Datei<return>

[martin@zip]$ gunzip Datei.gz<return>

Möchte man mehrere Dateien zu einem Archiv namens Mein_Archiv.tar zusammenschliessen, bzw (wie im 2. Beispiel) ein solches Archiv wieder öffnen, verwendet man "tar":

[martin@zip]$ tar -cvf Mein_Archiv.tar verzeichnis/*<return>

[martin@zip]$ tar -xvf Mein_Archiv.tar<return>

Eine Kombination von 'tar' und 'gzip' erkennt man an der Endung -tgz. Das 1. Beispiel zeigt, wie man solche komprimierten Archive erstell, das 2. wie man sie wieder auspackt:

[martin@zip]$ tar -cvzf Mein_Archiv.tgz verzeichnis/*<return>

[martin@zip]$ tar -xvzf Mein_Archiv.tgz<return>

 


 

Verkettung von Linuxkommandos

Pipes

Mit dem Pipe genannten Symbol "|" lassen sich Linux-Befehle verketten. Dadurch vervielfältigen sich die möglichen Funktionen! Häufig werden z.B. "grep" und die Pipe zusammen als Filter eingesetzt. Auch wenn Ihr anfangs den Dreh noch nicht raushaben solltet, selber effiziente Pipes zu schreiben, wird es dennoch nützlich sein, die hier in den Beispielen vorgestellten Befehle zu kennen und zu benutzen.

Möchte man z.B. herausfinden, ob man selbst Verzeichnisse herumfliegen hat, bei denen seine "group" write-Permission hat, leitet man den "alles detailiert auflisten"-Befehl ("ls -la") an das Filter-Kommando 'grep' oder 'egrep' weiter, der das Ergebnis auf das gewünschte Permission-Muster "d...rw" hin filtert, und dann erst das Ergebnis ausgibt:

[martin@zip]$ ls -al | egrep "d...rw"<return>

Oder wenn die Ausgabe eines Befehls wie ls oder cat nicht auf eine Bildschirmseite passen sollte, 'pipe't man ihn an die Lesebefehle "less" oder "more"; dann blättert man die Ausgabe mit <space> und <return> durch, zum Aufhören tippt man <q>.

[martin@zip]$ ls -al | more<return>

[martin@zip]$ cat TextEins TextZwei | more<return>

Ausgabeumleitungen

Statt dass ein Befehl sein Ergebnis standardmässig ausgibt (ins Shell-Fenster), kann er ihn auch mit Hilfe der Ausgabeumleitung ">" in eine Datei schreiben, wenn man das Ergebnis speichern will.
Existiert der angegebene Dateiname noch nicht, wird eine Datei mit diesem Namen angelegt. Existiert der angegebene Dateiname dagegen schon, wird die schon bestehende Datei mit dem neuen Inhalt überschrieben! Auch ist darauf zu achten, dass die Quell- und die Zieldatei verschiedene Namen haben müssen! (siehe Warnung oben, "Kopieren von Dateien").

Im 1. Beispiel wird eine Datei sortiert und unter einem neuen Namen gespeichert; im 2. wird die ausführliche Liste aller Dateien in diesem Verzeichnis als Datei gespeichert; im letzten werden zwei Dateien aneinandergehängt (konkateniert) und als neue Datei gespeichert.

[martin@zip]$ sort meineListe.txt > sortierteListe.txt<return>

[martin@zip]$ ls -al > meineDateien.txt<return>

[martin@zip]$ cat Datei1.txt Datei2.txt > Dateien1und2.txt<return>

Um die Ausgabedaten an eine schon existierende Datei anzuhängen, ohne diese zu überschreiben, nimmt man >> statt >:

[martin@zip]$ ls -al >> Liste.txt<return>

Analog dazu kann man auch die Eingabe eines Befehls mit < zu einer Datei hin umleiten, aber das benutzt man nur selten.

 


 

Netzwerk, Portsurfen, u.a.

Einloggen

Unter Linux kann man sich mit verschiedenen Befehlen direkt über das Netzerwek bei einem Server-Rechner einloggen. Um weiter als nur bis "vor die Haustür" des Servers zu kommen, braucht man eine Login und ein Passwort dort. Ihr könnt Euch z.B. von zu Hause aus mit Eurem Passwort und Eurer Login auf gnome.coli.uni-sb.de (dem Server der CoLi) einloggen, um Eure Mail abzurufen etc (normalerweise nur Textmodus).

Es gibt zwei Befehle zum Fern-Einloggen im Netzwerk, telnet oder ssh. Mit SSH stellt man eine sichere Verbindung her, wohingegen bei der mit Telnet hergestellten Verbindung theoretisch die Gefahr besteht, dass das Passwort abgefangen werden kann. Deswegen verweigert die CoLi Kontaktierungsversuche mit telnet von aussen (seit WS02/03). Von außen funktioniert nur noch eine Kontaktierung via SSH2, telnet funktioniert nur intern.

Von zu Hause an der CoLi einloggen: (SSH installieren)
[martin@zuhause]$ ssh gnome.coli.uni-sb.de<return>
Von zip zu gnome (intern):
[martin@zip]$ ssh gnome<return>

Um die Verbindung zu Unterbrechen, tippt man in beiden Fällen:

[martin@gnome]$ exit<return>

Ping

Mit Ping (benannt nach dem U-Boot-Echolot-Geräusch?) lotet man aus, ob andere 'lebende' Rechner im Netzwerk sind. Wenn sie auf ein 'Ping' antworten können, weiss man, dass sie an sind; wenn die Antwort verspätet oder gar nicht kommt, gibt es Verbindungsprobleme -- daran erkennt man man, entweder ist der Zielrechner aus, oder das Netzwerk ist generell überlastet, oder Du bist gar nicht online. ;-)

[martin@zip]$ ping gnome.coli.uni-sb.de<return>

Um das Pingen zu Unterbrechen, und die Endergebnisse angezeigt zu bekommen, tippt man ^C. Den Ping länger als ein paar Sekunden laufen zu lassen, behindert den Netzwerkverkehr, und da man bei jedem Ping seinen Absender in alle Welt posaunt, kann man übrigens als Störendfried sofort identifiziert werden!

Dateien hoch- oder runterladen

Um Dateien auf einen Server hochzuladen bzw sie von dort runterzuladen (wenn man z.B. seine Homepage aktualisieren will), stellt man eine sogenannte FTP-Verbindung mit dem FTP-Server her (FTP = file transfer protocol) :

[martin@zip]$ ftp ftp.coli.uni-sb.de<return>

Die gewünschte Datei läd man innerhalb des ftp-Terminalprogrammes runter mit dem Kommando:

get alterIndex.html<return>

Um eine Datei hochzuladen gibt man ein:

put neuerIndex.html<return>

Auf einem Fremden Server angekommen geht es meist weiter mit "man" oder "help" oder "?", "ls", "cd", etc. Indem man die Hilfen liest, lernt man auch bei anders als gewohnt konfigurierten Servern was dazu.

 


 

eMail und Chat

eMail

Um einfach und unkompliziert eine eMail abzuschicken, verwendet man den mail-Befehl. Nach einem return ist eine geschriebene Zeile nicht mehr änderbar. Den fertigen Brief schickt man durch die Eingabe von <RETURN> und dann EOF ab (Um EOF zu erhalten, tippt man <STRG>+D).

[martin@zip]$ mail freund@universitaet.de <return>
subject: Mein erstes Mail!<return>
Hallo, <return>
dies ist ein Test.<return>
EOF
[martin@zip]$

Ansonsten besteht natürlich auch die Möglichkeit, seine Mail mit Mozilla oder Netscape oder Evolution zu schreiben und zu empfangen. Will man aber regelmäßig im Textmodus Mail schreiben, sollte man sich mit einem der zwei eMail-Programme pine oder elm bekanntmachen.

eMail-Weiterleitung

Mit Linux lassen sich in der Mailbox dieses Servers ankommende eMails an eine andere eMail-Adresse weiterleiten. Dazu erstellt man eine versteckte Datei namens ".forward", in die man die eMail-Adresse(n) einträgt, an die man seine eMails von nun an weitergeleitet haben möchte.

[martin@zip]$ echo "abc@mail.com" > .forward<return>

Oder

[martin@zip]$ emacs .forward<return>

... und dann in emacs die neue Adresse von Hand in die Datei eintragen, speichern, und emacs beenden.
Um zu gewährleisten, dass man eine Kopie jedes weitergeleiten Mails an der CoLi behält, schreibt man seine CoLi-Adresse mit Komma abgetrennt dazu, und markiert sie mit einem \, um zu verhindern, dass die Mails ewig im Kreis geschickt werden:

[martin@zip]$ echo "\ich@uni.de, abc@mail.com" > .forward<return>

eMail-Signatur:

Will man an seine eMails eine Signatur hinzufügen, schreibt man diese in eine versteckte Datei namens ".signature". Deren Inhalt (Werbung fü,r Deine Webseite, Kontaktmöglichkeiten, eine Spruch) wird dann an jedes abgesandte eMail angehängt und sollte nicht länger als 4 Zeilen sein.

[martin@zip]$ emacs .signature<return>

und nun einen Spruch oder irgendwas eintippen, speichern, und emacs beenden, oder in einem Schritt

[martin@zip]$ echo "Linux rulez!" > .signature<return>

Linux-Chat

Mit dem Kommando Write sendet man kurze Nachrichten direkt auf ein Shell-Fenster einer anderen auf dem selben Server eingeloggten Person. Dazu muss man die Login des Benutzers kennen, mit dem man quatschen möchte. Da man auf seinem lokalen Rechner recht allein ist, funktioniert dieser Befehl nur sinnvoll in einem Server-Fenster (zip, gnome, etc)! Eine fertige Nachricht schliesst man ab mit einer leeren Zeile und EOF (= <STRG>+D ).

Wenn der Empfänger auf dem selben Server (bei uns also 'Gnome') eingeloggt ist (Überprüfe das zuvor mit "who"):

[martin@gnome]$ write denise<return>

Das offiziell korrekte "write"-Verhalten! (Sonst gibt's Buchstabensalat) :-)
The following protocol is suggested for using write: when you first write to another user, wait for them to write back before starting to send. Each person should end a message with a distinctive signal (that is, (o) for ``over'') so that the other person knows when to reply. The signal (oo) (for ``over and out'') is suggested when conversation is to be terminated.

Das Kommando Talk ermöglicht es zwei Personen direkt zu chatten. Dazu wird das Shell-Fenster für beide in zwei Hälften geteilt, in denen der getippte Text sofort erscheint. Der Partner muss den Talk "annehmen", damit es funktioniert, indem er selbst auch einen "talk" an den anderen startet. Den Dialog beendet man beidseitig mit <strg>+C.

Wenn der Gesprächspartner gerade auf dem selben Server eingeloggt ist (Überprüfe das zuvor mit "who"):

[martin@zip]$ talk denise<return>

Nettikette

Wenn Du Deinen Gesprächspartner in der who-Liste entdeckt und ihm mit write oder talk geschrieben hast, kann es vorkommen, dass er nicht antwortet, weil er gerade nicht in sein Terminal-Fenster schaut. Es ist zudem nicht die feine englische Art, wild in anderer Leute Shell-Fenster Nachrichten erscheinen zu lassen, vielleicht benutzen sie diese ja gerade... Man sollte sich daher vorher einigen, in welchem Shell-Fenster man chatten will -- oder durch die Eingabe von "w<return>" herausfinden, in welchem Fenster der Gesprächspartner gerade arbeitet, und welche frei zum chatten sind. Fenster, in denen gerade kein Programm läuft, erkennt man am Eintrag "-bash".

[martin@gnome]$ w<return>
  4:05pm  up 53 day(s), 21:56,  4 users,  load average: 1.26
User     tty     login@  idle   JCPU   PCPU  what
martin   pts/1  09:25am  1:25     55     54  emacs
martin   pts/4  10:01am           11         -bash
denise   pts/8  10:32am          243         pine
denise   pts/0  10:35am 25:02     38         -bash

Man sollte seinem Gesprächspartner (z.B. Denise) nur direkt in dessen leere '-bash'-Fenster eine Nachricht schreiben, (hier wäre das z.B. Fenster Nummer 'pts/0'):

[martin@zip]$ write denise pts/0<return>
  Hallo!<return>
  EOT

Tipps:

  • Wenn Ihr jemandem sagen wollt, in welchem Fenster Ihr auf seine Nachricht wartet, könnt Ihr Euch mit dem Befehl 'tty' anzeigen lassen, wie Euer aktuelles Fenster heisst (z.B. pts/4).
  • Wenn man versehentlich in einem Fenster landet, in dem schon ein Programm läft, scheinen write und talk zwar den Text dieses Programms zu überschreiben -- aber sie hinterlassen keine Änderungen in Dokumenten! Durch Drücken von >STRG<-L kann man durch write/talk-Querschläger 'zerstörte' Fenster wieder 'reparieren'.
 
   
2008.08.26

http://www.ruthless.zathras.de/