|
based almost completely on the UNIX-Intro by Tobias Oettiker, SysAdmin at the ETH in Zürich
Hier ein kurzer Abriss über einige der wichtigsten UNIX `Commands'. Eine Bemerkung zu den `Commands' gleich vorne weg:
Gross und Kleinschreibung sind bei Unix signifikant!
Passwort ändern
Das Passwort welches Dir zugeteilt worden ist, kann geändert werden, was auch von Zeit zu Zeit gemacht werden sollte.
|
username@stinky:~> passwd |
Ich brauche Hilfe
Einer der wichtigsten Befehle unter Unix dürfte wohl "man" (Abkürzung für Manual = Handbuch) sein.
Dieser gibt Auskunft über Funktion, Anwendung und Optionen von Befehlen.
Natürlich gibt "man" auch gleich Auskunft über sich selbst. Die Ausgabe erfolgt Seitenweise.
Um die nächste Seite anzuzeigen muss die Space-Taste kurz angetippt werden. Mit der Taste [b] lässt
sich eine Seite zurückblättern. Hat man einmal die falsche Seite erwischt der die gewünschte Information
bereits gefunden, kann man durch drücken der Taste [q] die Ausgabe abbrechen.
username@stinky:~> man man
MAN(1) USER COMMANDS MAN(1)
NAME
man - display reference manual pages; find reference
pages by keyword
SYNOPSIS
man [-] [-t] [-M path] [-T macro-package] [[section] title...] ...
man [-M path] -k keyword ...
man [-M path] -f filename ...
DESCRIPTION
man displays information from (...)
|
Oftmals kennt man jedoch gerade die Schreibweise eines Befehls nicht. Hier kommt der
Befehl apropos zum Zug. Damit lassen sich alle man-pages-Einträge finden, die ein bestimmtes
Stichwort enthalten.
|
username@stinky:~> apropos shell |
Bei Syntaxfehlern wird oft eine kurze Erklärung über den korrekten Gebrauch des Befehls ausgegeben.
Meistens ist diese kleine Hilfe auch mit der Option "-h" oder "--help" zu erreichen.
|
username@stinky:~> mv --help |
Die tcsh-Shell
Nach dem Aufstarten des Accounts erscheint auf dem Bildschirm ein weisses Fenster (xterm), in welches
man Unix Befehle eintippen kann. Das Programm welches in dem Fenster drin die Befehle entgegennimmt und verarbeitet heisst
tcsh (sprich Ti-Si-Schell).
Darüber informiert man sich am besten gleich selbst.
|
username@stinky:~> man tcsh |
Da die tcsh-Shell mit der csh-Shell (sprich Si-Schell) verwandt ist, sind viele wichtige Informationen
in den tcsh-man-pages nicht mehr aufgeführt. Diese findet man also mit
|
username@stinky:~> man csh |
Dennoch ein paar Tips am Rand
Tip 1
Nach Drücken der Tabulator-Taste versucht die Shell die Eingabe zu vervollständigen. Hierzu ein Beispiel:
Die Eingabe von "cd LangerDirectoryName" kann abgekürzt
werden mit "cd Lang" + Tabulatortaste. Allerdings nur falls "Lang"
eindeutig zuzuordnen ist. Das heisst, es existiert kein weiteres Directory,
das mit "Lang" beginnt. Andernfalls wird eine Liste aller möglichen
passenden Verzeichnis Namen angezeigt.
Tip 2
Mit den Cursor-Tasten [UP] und [DOWN] kann man die letzen Eingaben auf die Eingabezeile zurückholen.
Das Filesystem
Gibt eine Liste der Directoryeinträge im aktuellen Verzeichnis aus, die mit dem Parameter
näher bestimmt werden können.
Verschiedene nützliche Optionen sind zum Beispiel:
- ls -l
- zeigt ausfürlichere Informationen, insbesondere die File-Attribute.
- ls -a
- Einträge, deren Name mit einem "." beginnen werden auch
aufgelistet.
- ls -R
- Der ganze Sub-Baum wird auch angezeigt.
- ls -F
- Bei jeder Datei wird gleich mitangezeigt ob es sich dabei um ein Programm
oder ein Verzeichnis handelt.
Natürlich können die Optionen kombiniert werden (Gross-/Kleinschreibung!).
|
username@stinky:~> cd <directoryname> |
|
Damit wechselt man ins Verzeichnis <directoryname>. Anstelle von <directoryname>kann man auch `..' schreiben,
um im Verzeichnisbaum eine Stufe nach oben zu wechseln. Eine weitere nützliche Variante ist `cd damit
landet man wieder im eigenen Home-Directory. Am Anfang jeder Eingabezeile wird jeweils der aktuelle Verzeichnis Namen angezeigt.
|
username@stinky:~> mkdir <directory-namen> |
|
Erzeugt ein neues Directory. Und zwar in dem Verzeichnis, in dem man
sich gerade befindet.
Tja und so geht es weiter. Hier eine kleine Tabelle mit Befehlen und
ihren Auswirkungen.
|
rmdir <directoryname> |
löscht ein (leeres) Directory. |
| rm -r <directoryname> |
löscht ein Directory inklusiv Inhalt. |
| mv <quelle> <ziel> |
um eine Datei umzubenennen. |
| mv <quelle> <ziel-verzeichis> |
um eine Datei in einem anderen Directory zu plazieren. |
| mv <quellen-dir> <ziel-dir> |
um ein Directory umzubenennen oder es in einem anderen Directory zu plazieren. |
| cp <quelle> <ziel> |
kopiert eine Datei. |
| cp <quelle> <ziel-dir> |
kopiert eine Datei in ein anderes Directoy unter Beibehaltung des Namens. |
Achtung DOS-User: Sachen wie `cp *.dat *.txt' funktionieren nicht! Dazu später mehr.
Fileattribute
Jede Datei und jedes Directory, besitzt unter Unix nicht nur einen Namen sondern noch eine ganze Reihe weiterer
Informationen. So ist zum Beispiel fuer jede Datei festgelegt wem sie gehört und unter welchen Umständen
sie gelesen und verändert werden darf.
Vorallem das mit den Lese und Schreibrechten ist eine interessante Sache,
schauen wir uns doch einmal eine Datei von nahem an:
username@stinky:~> ls -al
[...]
drwxr-xr-x 3 gaba 512 Jul 12 17:03 ./
-rw------- 1 gaba 1621 Jul 12 16:22 mbox
0123456789
|
10 Attribute (0-9) werden angezeigt.
Das Attribut 0 gibt Auskunft über die Art des Eintrags: `-' steht für ein normales File.
`d' zeigt an, dass es sich um ein Directory handelt. Daneben sind auch noch andere Einträge
im Feld null möglich, ich möchte hierzu aber auf die Manpage des chmod Commands verweisen.
Die Attribute 1-9 regeln die Zugriffsrechte auf das File bzw. Directory und haben folgende
Bedeutung: `r' lesbar, `w' schreibbar (also auch löschbar), `x' ausführbar (Bei einer
normalen Datei bedeutet das dass es sich dabei um ein Programm handelt. Bei einem Directory, bedeutet das `x' dass man
mit cd in das Verzeichnis hinein wechseln kann).
Die Attribute 1-3 sind die sogenannten user-Attribute und regeln somit die Zugriffsrechte des
Besitzers auf ein File bzw. Directory. Die Attribute 4-6, die group-Attribute, regeln analog die
Zugriffsrechte einer Gruppe, in diesem Fall die aller Studenten an der Abteilung IIIB. Die Attribute 7-9,
die others-Attribute, regeln die Zugriffsrechte von jedem beliebigen Aussenstehenden.
Files oder Directories vor fremdem Zugriff schützen
Wenn immer du in Deinem Account ein File oder ein Directory erzeugst werden die Attribute automatisch wie folgt gesetzt:
- Directory: drwxr-xr-x
- File: drw-r--r--
Das bedeutet, dass jedermann deine Directories einsehen, deine Files lesen und Programme ausführen kann.
Auch neu erzeugte Files sind der Öffentlichkeit zur Einsicht freigegeben. Dies entspricht der offenen
Philosophie von UNIX, sollte jedoch nie vergessen werden!
Eine Ausnamhe bilden `persönliche' Dateien wie Mail, News oder Netscape Sachen. Diese werden automatisch
mit Attributen erzeugt, die einlesen durch andere verhindern.
Natürlich ist es auch möglich die File Attribute zu verändern. Und man kann auch festlegen welche
Attribute vergeben werden wenn man Files neu erzeugt. Weitere Informationen dazu finden sich in den Manpages von
chmod und umask
Wildcards
Die Zeichen `*', `?' und `[xyz]' werden von der tcsh speziell behandelt.
Sie heissen wildcards und funktionieren folgendermassen:
Wenn immer die shell z.B. einen `*' in der Eingabezeile findet, wird dieser durch eine Liste der Dateinamen
im aktuellen Verzeichnis ersetzt. Erst dann startet die shell das entsprechende Programm.
Wenn du also in einem Verzeichnis mit den Dateien `hallo.txt' und `timelord.txt' das command `ls *'
eingibst, wird von der Shell erstmal der `*' durch `hallo.txt timelord.txt' ersetzt und dann `ls hallo.txt timelord.txt'
ausgeführt. Daher wird ls dann die Verzeichnis Einträge für hallo.txt und timelord.txt
zeigen.
Was bedeuten die Wildcards im einzelnen
| * |
Steht für beliebig viele (auch Null) Zeichen. |
| ? |
Ist Platzhalter für genuau ein einzelnes Zeichen. |
| [xyz] |
Steht für jedes in der Klammer aufgeführte Zeichen. Hier also x,y und z. |
| [g-t] |
Ist Platzhalter für alle im Bereich enthaltenen Zeichen. Ein Bereich besteht aus zwei, durch ein "-" getrennte
Zeichen. Hier also g bis t. |
Weitere Informationen findet man etwas versteckt in den man-pages zu csh unter dem Titel
"filename substitution".
Hier noch einige weitere Beispiele
| ls -a .* |
Listet alle Directoryeinträge auf, die mit einem Punkt beginnen. |
| ls -a [a-z]* |
Listet alle Directoryeinträge auf, die mit einem kleinen Buchstaben beginnen. |
| ls *.* |
(Achtung DOS User) zeigt nicht wie gewohnt alle vorhandenen Files, sondern nur die, die einen Punkt im Namen enthalten. |
Programme im Hintergrund laufen lassen.
Hat man ein Programm aufgerufen, so bleibt die Shell "hängen", bis dieses beendet wird. Das kann verhindert
werden, indem man das Programm im Hintergrund laufen lässt. Dies wird erreicht, indem man dem Programmnamen
und den Parametern ein "&" anhängt.
Alternativ lassen sich Programme auch mit [Control]-[Z] und dem Befehl `bg' in den Hintergrund befördern.
Editoren
Für Einsteiger empfehle ich pico zu starten. Dies ist einen einfachen Texteditor.
vi
"vi" ist der unter UNIX wohl am weitesten verbreitete Editor. Und es gibt auch Leute die Fans davon sind.
Sein grösstes Plus ist wohl, dass er wirklich auf jedem UNIX-System zu finden ist. Er basiert auf dem Zeileneditor
"ex", von dem er auch etliche Komfortmängel geerbt hat. Wer sich die Mühe machen will, findet in den man-pages
eine brauchbare Anleitung. Ohne Mühe geht's mit dem neuen "vi"-FAQ
Fileinhalt anzeigen mit "less"
Less zeigt eine Datei seitenweise an. Mit den Pfeiltasten kann man sich darin hin und her bewegen.
[?] zeigt einem alle verfügbaren Komandos an und mit [/] kann man die Datei durchsuchen.
Prozesse
Unter Unix laufen immer eine ganze Menge von Programmen (Prozessen) gleichzeitig. Mit den Befehlen
ps und top kann man sich die Sache ansehen.
Besonders interessant ist top, da es die Prozesse gleich noch sortiert nach Belastung des Computers.
Ein Kurze Befehls Übersicht zu top:
| u <username> |
Zeigt nur die prozesse eines bestimmten Benutzers. |
| k <PID> |
Fordert ein Programm auf, sich zu beenden. |
| k -9 <PID> |
Kill ein Programm. Wer nicht hören will ... |
Für Details verweise ich wieder einmal auf die man-pages, einem wirklich nicht zu unterschätzenden Hilfsmittel.
Output umleiten
| username@stinky:~> <command> > <filename> |
- schreibt die Daten, die der Befehl liefert, in ein File. Dies wird durch die noclobber option beinflusst. Mehr dazu in der csh manpage.
|
username@stinky:~> ls -l > savedir.txt |
- Erzeugt ein File namens savedir.txt, das eine Liste der Dateien im aktuellen Verzeichnis enthät
|
username@stinky:~> <Command> >> <filename> |
- fügt die Daten, die der Befehl liefert, einem File hinzu.
Pipe
leitet die Ausgabe des ersten Befehls direkt zum zweiten Befehl, der die kommenden Daten als Eingabe
weiterverarbeitet.
Ich will mehr Details ...
OK also gut ... Im folgenden Abschnitt werde ich ein paar Worte über weitere grundsätzliche UNIX Konzepte verlieren:
Environmentvariablen
Gewisse Informationen werden unter UNIX in sogenannten Environmentvariablen abgelegt. Das funktioniert
folgendermassen: Wenn immer ein Programm aufgerufen wird, erhält es eine Kopie aller environment Variablen seiner Eltern
mit auf den Weg. Auf diese Weise können Informationen weitergegeben werden, ohne dass sie in irgend einer Datei gespeichert
werden müssen. Mit folgenden Befehlen kannst Du den Inhalt von Environment-Variablen ansehen
und verändern:
|
setenv XYZ "hi world" |
Weist der Variable XYZ den Wert "hi world" zu |
| unsetenv XYZ |
Löscht die Variable XYZ. |
| echo $XYZ |
Zeigt den Inhalt von XYZ |
| printenv |
Zeigt ALLE Environmentvariablen, die zur Zeit definiert sind. |
Hier eine Aufstellung einiger wichtiger Environmentvariablen:
|
PATH |
Eine durch ':' getrennte Liste der Verzeichnisse in denen nach Programmen gesucht wird. |
| EDITOR |
Der Name des Programms, das im Normalfall als Editor verwendet werden soll.
|
Aliases
Eine sehr praktische Funktion der (t)csh sind die Aliase. Damit können auf einfache Art und Weise neue Befehle erzeugt werden.
|
alias |
Zeigt eine Liste der momentan definierten Aliases. |
| alias <name> <text> |
Erzeugt ein neues alias (name), das den Befehl (text) ausführt. |
Ist man es leid, "ls -al" zu tippen, und möchte dafür eine Abkürzung, zum Beispiel "la",
definieren, so geht man folgendermassen vor:
Diese Definition geht allerdings beim Auschalten wieder verloren. Um das zu umgehen, kannst du die Alias-Definition in dein
~/.cshrc File einfügen.
.cshrc und .login
Wenn du dich in dein Konto einloggst werden folgende Dateien automatisch ausgeführt, bevor du irgendwelche
Eingriffsmöglichkeit bekommst:
- /etc/.cshrc
- ~/.cshrc
- /etc/.login
- ~/.login
Die beiden Dateien im /etc Verzeichnis kannst du nicht verändern. Sie enthalten allgemeine
Konfigurationsanweisungen die für jedes Konto auf Tardis gelten. Die Dateien in deinem Home Verzeichnis (~/.cshrc und
~/.login) kannst du jedoch mit einem Texteditor verändern.
Während die .login Dateien nur beim login gelesen werden, werden die beiden .cshrc jedes mal,
wenn du eine neue tcsh startest, gelesen.
Bei Bedarf kann man die .login und .cshrc Dateien auch mit dem Befehl source .login oder
souce .cshrc gezielt ausführen.
The End
Das sollte eigentlich reichen für den Anfang. Viel Spass beim Ausprobieren!
|