LaTeX | Projekte | Datenschutz | Impressum |
/home/doe/uni/Info1/HelloWorld.javaJedes Verzeichnis enthält zwei ,,Pseudoverzeichnisse'': ,,.'' bezeichnet das Verzeichnis selbst und ,,..'' das übergeordnete Verzeichnis, d.h. das Verzeichnis, in dem das betrachtete Verzeichnis enthalten ist. Um sich nicht dauernd mit irgendwelchen langen Pfaden rumärgern zu müssen, gibt es immer genau ein aktuelles Verzeichnis, und alle Pfade, die nicht mit einem / beginnen, werden relativ zu diesem Verzeichnis interpretiert. Wenn man sich also z.B. in dem Verzeichnis /home/doe/uni/java befindet, d.h. /home/doe/uni/java das aktuelle Verzeichnis ist, so bezeichnet
doe@toliman /tmp >Hier steht im ersten Teil (vor dem @) euer login, danach folgt der Rechner auf dem Ihr euch gerade befindet, dann folgt das aktuelle Verzeichnis, in dem Ihr euch befindet. In diesem Beispiel seit Ihr auf dem Rechner toliman und in dem Verzeichnis /tmp. Steht dort nur
doe@toliman~ >so befindet Ihr Euch direkt in Eurem Homeverzeichnis (vgl. 2.2.3). Hinter dem ,,Prompt'' könnt Ihr nun Befehle eingeben, wobei das erste ,,Wort'' von der Shell als Befehl interpretiert wird. Zum Beispiel liefert der Befehl date das aktuelle Datum26 und die Uhrzeit:
doe@toliman~ > date
Thu Aug 20 17:02:24 MET DST 1998
doe@toliman~ > xem [TAB]Ist der Fall eindeutig, so wird - wie bei Dateinamen - (nur) der richtige Befehl ergänzt. dat < Tab > führt beispielsweise sofort zu date. Im Gegensatz zur Dateinamen-,,Komplettierung'' durchsucht die Befehls-,,Komplettierung'' den gesamten Pfad - nicht nur das aktuelle Verzeichnis - nach ausführbaren Programmen. D.h. von ihr werden alle Befehle gefunden, die ausführbar sind und auch ohne weitere Pfadangabe ausgeführt werden können.
xemacs xemacs-21.1.14
ls . > dateinameneine Datei dateinamen, in der die Namen der Dateien im aktuellen Verzeichnis stehen. Existierte die Datei vorher, so wied diese überschrieben!
ls programme/ >> dateinamenschreibt zusätzlich die Namen der Dateien im Verzeichnis programme in die Datei dateinamen
java MeineDemo < demoeingabenHier liest das Java-Programm ,,MeineDemo'' seine Eingaben aus der Datei demoeingaben. Das ist z.B. praktisch, wenn man einen Fehler sucht und nicht ständig wieder die gleichen Eingaben tippen will.
du -h - lesszeigt den Platzverbrauch der Unterverzeichnisse des aktuellen Verzeichnisses an. Die Ausgabe erfolgt dabei - etwas komfortabler - durch das Programm less, das sich über die Cursortasten bedienen läßt. Eine Hilfe innerhalb von less erhält man mit < h > oder < H > . Beenden kann man less29 mit < q > , < :q > , < Q > , < :Q > oder < ZZ > .
latex test.tex ; dvips test.dvi
javac MeineDemo.java && java MeineDemoHier wird der Java-Interpreter (,,java'') nur gestartet, falls der Compiler (,,javac'') den Quelltext ohne Fehler kompilieren konnte.
cp * InfoI/diese Aufgabe. Der ,,*'' steht hierbei für beliebig viele beliebige Zeichen, die an dieser Stelle stehen können.
cp h* InfoI/kopiert also alle Dateien, die mit einem ,,h'' beginnen - egal, was dem ,,h'' nachfolgt. Dies kann man weiter einschränken:
cp h*.ps InfoI/kopiert alle Dateien, die mit einem ,,h'' beginnen, jedoch auch mit ,,.ps'' enden. So würde im zweiten Beispiel (cp h* InfoI/) die Datei haskell.txt kopiert, im letzten Beispiel jedoch nicht. Im Gegensatz zu DOS ist es unter UNIX möglich, auch mehr als einen ,,*'' zu verwenden. So kopiert
cp l*aufg*.ps InfoI/alle Dateien, die mit ,,l'' beginnen, in der ,,Mitte'' ,,aufg'' enthalten und mit ,,.ps'' enden. Also z.B. loesung.aufg01.ps, l.aufgabe02.ps, laufg.ps, ... Das Fragezeichen Das zweite Jokerzeichen ist das ,,?'': Es steht für ein beliebiges Zeichen. Will man z.B. die Datei haskell.txt kopieren, weiß aber nicht mehr, ob diese mit einem großen oder kleinen ,,h'' beginnt, so kann man dies ohne nachzuschauen mit
cp ?askell.txt InfoI/erledigen. In diesem Beispiel werden alle Dateien kopiert, deren Name aus einem beliebigen Zeichen (außer einem Punkt) und ,,askell.txt'' bestehen. Also haskell.txt, Haskell.txt, aber auch Xaskell.txt - nicht aber .askell.txt, Ahaskell.txt... Versteckte Dateien Noch schnell ein Wort zu ,,versteckten Dateien'': Der ,,*'' und ,,?'' stehen nicht als ,,Platzhalter'' für einen Punkt als erstes Zeichen eines Dateinamens zur Verfügung. Dateien, die mit einem ,,.'' beginnen, sind ,,versteckten Dateien'', die etwas besser z.B. vor versehentlichem Löschen geschützt sind.
cp *txt InfoI/kopieren also z.B. die Datei haskell.txt, nicht aber .haskell.txt.
cp ?hask* InfoI/kopiert die Datei .haskell.txt ebenfalls nicht. Dateien, die mit einem ,,.'' beginnen, müssen also extra z.B. mit Hilfe von
cp .?askel* InfoI/kopiert werden. Beim Löschen dieser Dateien ist äußerste Vorsicht geboten. Diese ,,versteckten'' Dateien sind meist Konfigdateien, die von den Programmen benötigt werden - man sollte sie nicht ohne Grund oder Wissen, was man da gerade tut, löschen oder überschreiben.30
doe@toliman~ > cd programmewechselt in das Verzeichnis programme. Wird cd ohne ein Argument aufgerufen, wird in das Homeverzeichnis gewechselt. Den Namen des jeweils aktuellen Verzeichnisses kann man sich mit dem Befehl pwd anzeigen lassen:
doe@toliman~ > pwdDateien und Verzeichnisse anlegen und löschen Angelegt werden Verzeichnisse mit dem Befehl mkdir, gelöscht werden können leere Verzeichnisse mit rmdir. Das Anlegen von mehreren Verzeichnissen ist deshalb sinnvoll, weil man so besser die Übersicht über aktuelle, alte oder wichtige Daten behält. Die Eingabe von
/home/doe
doe@toliman~/studium/InfoI > mkdir javaerstellt demnach das Verzeichnis java als Unterverzeichnis im aktuellen Verzeichnis (hier ~/studium/InfoI),
doe@toliman~/studium/InfoI > rmdir javaentfernt das Verzeichnis wieder, wenn es leer ist.
Warnung: Einmal gelöschte Dateien und Verzeichnisse sind weg und können nicht selbst 31 wiederhergestellt werden! Darum sollte man genau überlegen, bevor man seine Dateien und Verzeichnisse löscht.Dateien werden mit dem Befehl rm gelöscht. rm ist die Abkürzung für ,,remove''. Zum Beispiel kann man mit
doe@toliman~/uni > rm *.classalle Dateien mit der Endung .class im aktuellen Verzeichnis löschen. Um nun ganze Verzeichnisse, mitsamt Inhalt und eventuellen Unterverzeichnissen zu löschen, hat rm die Option -r (engl. für ,,recursive'').
doe@toliman~ > rm -r /home/doe/studiumwürde dann das komplette Studiums-Verzeichnis von hansi mit allen darin enthaltenen Dateien und Verzeichnissen löschen. Falls John Doe nicht vor hat, sein Studium zu beenden, könnte das eine ziemlich schlechte Idee sein... Mit der Option -r sollte sehr vorsichtig umgegangen werden, denn - wie schon gesagt: es gibt für euch keine Möglichkeit einmal gelöschte Daten wieder herzustellen. Kopieren und Umbenennen von Dateien Dateien werden mit dem Befehl cp kopiert, er hat die Form
doe@toliman~ > cp Quelle ZielWill man z.B. die Datei HelloWorld.java nach HelloDu.java kopieren, lautet der Befehl
doe@toliman~ > cp HelloWorld.java HelloDu.javaAchtung: Falls die Ziel-Datei schon existiert, so wird diese ohne Rückfrage überschrieben! Das kann man vermeiden, wenn man den Parameter -i (engl. interactive) benutzt. cp fragt dann nach, bevor eine Datei überschrieben wird32:
Antwortet man mit ,,y'', wird die Datei überschrieben, andernfalls nicht. Mit dem Befehl mv (engl. ,,move'') werden Dateien und Verzeichnisse verschoben. Die Syntax ist mit der von cp identisch. Mit mv werden Dateien auch umbenannt, z.B. benenntcp -i HelloWorld.java HelloDu.java cp: overwrite 'HelloDu.java'?
doe@toliman~ > mv emil testdie Datei emil in test um (falls emil existiert). Achtung: Auch hier gilt, dass eine Datei die bereits existiert ohne Rückfrage überschrieben wird! Und auch hier hilft der Parameter -i weiter. Informationen über Dateien Um sich den Inhalt eines Verzeichnisses anzeigen zu lassen wird der Befehl ls benutzt.
doe@toliman~> ls /binzeigt den Inhalt des Verzeichnisses /bin an. Dabei werden ausführbare Dateien mit einem ,,*'' am Ende gekennzeichnet und Verzeichnisse haben ein ,,/'' am Ende. Mit der Option -l wird die Ausgabe von ls um einiges informativer. Zum Beispiel liefert ls -l bei unserem Beispielstudenten hansi unter anderem:
doe@toliman ~ > ls -l total 436 drwxr-xr-x 22 doe student 512 Aug 31 18:06 info1// drwxr-xr-x 2 doe student 512 Oct 2 02:58 tkirc/ -rwxr-xr-x 1 doe student 206174 Oct 2 02:59 xearth*
Rechte | Das erste Zeichen gibt den Typ an, d bedeutet Verzeichnis (engl. Directory), l steht für Link und - für normale Dateien. Eine genaue Beschreibung der Zugriffsrechte gibt es in Abschnitt 2.3.10. |
Anzahl | Die Anzahl der enthaltenen Dateien (Unterverzeichnisse zählen wie eine Datei). |
Besitzer | Der Eigentümer der Datei (siehe auch 2.3.10). |
Gruppe | Die Gruppenzugehörigkeit der Datei (normalerweise auch die des Eigentümers). |
Größe | Die Größe der Datei in Bytes. |
Datum | Das Datum und die Uhrzeit der letzten Änderung. Fehlt die Jahresangabe, so sind die Datan aus dem aktuellen Jahr. |
Name | Der Name der Datei, bzw. des Verzeichnisses. |
/home/doe/public/auch als /home/doe/pub/ ansprechen will33, kann man sich den Festplattenplatz sparen, indem man einen symbolischen Link benutzt:
doe@toliman~> ln -s /home/doe/public ~/pubSymbolische Links sind nur Referenzen auf die richtigen Dateien und Verzeichnisse. Sie lassen sich behandeln wie normale Dateien, also auch mit rm löschen (dabei wird nur der Link und nicht die referenzierte Datei gelöscht). Mehr dazu steht in der Manpage (siehe Anhang 8.1) zu ln.
doe@toliman ~/test > ls -l %scorpio@ ~/test > ls -l total 6 -r-------- 1 doe student 789 Feb 6 1997 DaemonThread.class -rw-r--r-- 1 doe student 1244 Sep 2 11:14 Fib.class -rw-rw-r-- 1 doe fib 992 Sep 2 11:14 Fib.java -rw------- 1 doe student 1347 Feb 6 1997 RunPrimes.java -rwxr-xr-x 1 doe student 206174 Oct 2 02:59 xearth*Die einzelnen Teile so einer Ausgabe wurden schon in Kap. 2.3.8 erklärt. Hier geht es jetzt um die Einzelheiten der ersten, dritten und vierten Spalte:
-rwxr-xr-xRechte 1 doeBesitzer studentGruppe 206174 Oct 2 02:59 xearth*Das erste Zeichen bei den Rechten gibt den Typ an (siehe 2.3.8). Die restlichen neun Zeichen definieren die Zugriffsrechte für den Besitzer, die Gruppe und alle anderen Benutzer (jeweils drei Zeichen). Dabei steht ,,r'' für lesbar, ,,w'' für beschreibbar (das schließt auch Löschen ein!) und ,,x'' für ausführbar. Ein ,,-'' bedeutet, dass das entsprechende Recht nicht erteilt wurde. Für das obige Beispiel gilt demnach, dass die Datei RunPrimes.java nur von hansi - er ist der Besitzer - gelesen und bearbeitet werden kann. Fib.java kann hingegen von doe und den Mitgliedern der (erfundenen) Gruppe fib gelesen und bearbeitet werden, alle anderen können die Datei nur lesen. Zur Gruppe student gehören - wie unschwer zu erraten - alle Studenten. Daher ist es nie eine gute Idee, eine Datei für die Gruppe student schreibbar zu machen. Das Programm xearth ist für alle lesbar und ausführbar34, aber nur für doe beschreibbar. Die Dateirechte können mit dem Befehl chmod geändert werden. Die Syntax sieht so aus:
chmod {u - g - o}{+ - - - =}{r - w - x} Namedabei steht u für user, g für group users und o für other users. Mit + (bzw. -) werden die nachfolgenden Rechte erteilt (bzw. weg genommen). Um die Zugriffsrechte für ganze Verzeichnisse zu ändern kann chmod optional mit der Option -R (engl. Recursive) aufgerufen werden. Will nun doe die Rechte für das Verzeichnis
drwxrwxr-x 22 doe student 512 Aug 31 18:06 info1/und die darin enthaltenen Unterverzeichnisse so ändern, dass nur noch er lesend und schreibend darauf zugreifen kann, dann sieht das so aus:
Weitere Informationen zu chmod gibt es in der Manpage zum Programm. Die Befehle zum Ändern des Besitzers und der Gruppenzugehörigkeit von Dateien heißen chown und chgrp. Informationen dazu gib es mit man chown, bzw. man chgrp. Der Befehl chown ist hier an der Fakultät aber eigentlich uninteressant, da er von Euch nicht verwendet werden kann. Ihr dürft eure Dateien nicht ,,verschenken''. Auch, wenn sie wirklich euch gehören... Der Befehl chgrp wird wohl auch erst später interessant werden, wenn Du in eine weitere Gruppe außer student aufgenommen wirst - zum Beispiel, wenn Du das Datenbankpraktikum machst.doe@toliman:~ > chmod -R go-rw info1 doe@toliman:~ > ls -l ... drwx--x--x 22 doe student 512 Aug 31 18:06 info1/