8
Fakultät Informatik, HFU Brückenkurs UNIXEinführung 1 Grundlegende Kommandos unter UNIX / LINUX Allgemeine Schreibweise: kommandoname [-opt1 -opt2 …] [objekt1 objekt2 …] Erste ShellKommandos mkdir directoryname legt ein Verzeichnis mit dem Namen directoryname an cd oder cd~ change directory (ohne Angabe oder mit Angabe ~: Wechsel ins Homeverzeichnis cd .. gehe eine Ebene nach oben (bzw. zurück) cd /etc/init.d/ change directory, Verzeichnisziel mit absoluter PfadAngabe cd Java/Beispiele mit relativer PfadAngabe pwd print working directory, Anzeige des Verzeichnisses, in dem man sich befindet ls list short zeigt die Unterverzeichnisse und Dateien in einem Verzeichnis an. ll oder ls -l list long (ll ist kein Standardbefehl) zeigt ebenfalls die Unterverzeichnisse und Dateien in einem Verzeichnis an. Es werden zusätzliche Infos ausgegeben wie Dateityp, Zugriffsrechte, Eigentümer, Gruppe, Größe und Modifikationsdatum. Optionen zu ls und ll -a -ld directoryname -F zeigt versteckte Dateien (.dateien) zeigt nur Angaben von directoryname, nicht seinen Inhalt kennzeichnet Verzeichnisse mit / und ausführbare Dateien mit * more filename zeigt einen Dateiinhalt seitenweise auf dem Bildschirm an. less filename zeigt einen Dateiinhalt ebenfalls an, man kann in der Datei vorund zurückspringen und nach Begriffen suchen (nicht Standard). echo "irgend ein Text" gibt irgend ein Text auf die Standardausgabe (Bildschirm) aus. touch file berührt die Datei file und ändert das Modifikationsdatum Namenskonventionen für Dateinamen, Verzeichnisnamen: Alle Buchstaben des ASCIIZeichensatzes sind erlaubt (also keine Umlaute oder ß). Zahlen sind erlaubt. MinusZeichen ist NICHT als 1. Zeichen erlaubt (reserviert zur Kennzeichnung von Optionen), innerhalb von Namen ist es erlaubt. Unterstrich _ ist überall im Namen erlaubt. Großbuchstaben und Kleinbuchstaben werden unterschiedlich behandelt (Uebung1 ist NICHT uebung1). Punkt als 1. Zeichen kennzeichnet „versteckte Dateien“. Punkt innerhalb eines Namens ist erlaubt. Leerzeichen sind möglich, müssen aber mit \ (Backslash) maskiert werden. Ansonsten Vorsicht bei Sonderzeichen, denn fast alle haben eine Sonderfunktion in der Shell.

Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

Embed Size (px)

Citation preview

Page 1: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

Fakultät Informatik, HFU  Brückenkurs UNIX‐Einführung  1 

Grundlegende Kommandos unter UNIX / LINUX 

Allgemeine Schreibweise: 

kommandoname [-opt1 -opt2 …] [objekt1 objekt2 …]

Erste Shell‐Kommandos 

mkdir directoryname legt ein Verzeichnis mit dem Namen directoryname an cd oder cd~ change directory (ohne Angabe oder mit Angabe ~: Wechsel ins 

Homeverzeichnis cd .. gehe eine Ebene nach oben (bzw. zurück) cd /etc/init.d/ change directory, Verzeichnisziel mit absoluter Pfad‐Angabe cd Java/Beispiele         mit relativer Pfad‐Angabe pwd print working directory, Anzeige des Verzeichnisses, in dem man sich 

befindet ls list short  zeigt die Unterverzeichnisse und Dateien in einem 

Verzeichnis an. ll oder ls -l list long (ll ist kein Standardbefehl) zeigt ebenfalls die 

Unterverzeichnisse und Dateien in einem Verzeichnis an. Es werden zusätzliche Infos ausgegeben wie Dateityp, Zugriffsrechte, Eigentümer, Gruppe, Größe und Modifikationsdatum. 

Optionen zu ls und ll -a -ld directoryname -F

zeigt versteckte Dateien (.dateien) zeigt nur Angaben von directoryname, nicht seinen Inhalt kennzeichnet Verzeichnisse mit / und ausführbare Dateien mit *

more filename zeigt einen Dateiinhalt seitenweise auf dem Bildschirm an. less filename zeigt einen Dateiinhalt ebenfalls an, man kann in der Datei vor‐ und 

zurückspringen und nach Begriffen suchen (nicht Standard). echo "irgend ein Text"

gibt irgend ein Text auf die Standardausgabe (Bildschirm) aus. 

touch file berührt die Datei file und ändert das Modifikationsdatum  

Namenskonventionen für Dateinamen, Verzeichnisnamen: 

• Alle Buchstaben des ASCII‐Zeichensatzes sind erlaubt (also keine Umlaute oder ß). 

• Zahlen sind erlaubt. 

• Minus‐Zeichen ist NICHT als 1. Zeichen erlaubt (reserviert zur Kennzeichnung von Optionen), innerhalb von Namen ist es erlaubt. 

• Unterstrich _ ist überall im Namen erlaubt. 

• Großbuchstaben und Kleinbuchstaben werden unterschiedlich behandelt (Uebung1 ist NICHT uebung1). 

• Punkt als 1. Zeichen kennzeichnet „versteckte Dateien“. Punkt innerhalb eines Namens ist erlaubt. 

• Leerzeichen sind möglich, müssen aber mit \ (Backslash) maskiert werden. 

• Ansonsten Vorsicht bei Sonderzeichen, denn fast alle haben eine Sonderfunktion in der Shell. 

   

Page 2: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

2   Brückenkurs UNIX‐Einführung   Fakultät Informatik, HFU 

Sonderzeichen in der Shell und ihre Funktion (Liste ist nicht komplett): 

- Als 1. Zeichen kennzeichnet es eine Option, ein Dateiname darf NICHT mit diesem Zeichen beginnen. 

| Pipe, leitet die Ausgabe eines Kommandos als Eingabe des Nachfolgekommandos weiter. 

& legt Prozesse in den Hintergrund. > leitet die Kommandoausgabe in eine Datei um, alter Datei‐Inhalt wird überschrieben 

(Standardausgabe in Datei). >> leitet die Kommandoausgabe in eine Datei um, es wird die bestehende Datei 

weitergeschrieben (Standardausgabe in Datei, Anhängen an bestehende Datei). < versorgt ein Kommando mit dem Inhalt einer Datei (Standardeingabe aus Datei) / Trennzeichen im Pfadnamen für die unterschiedlichen Verzeichnis‐Ebenen * Wild Card,  steht stellvertretend für eine beliebige Zeichenkette oder einen Leerstring. ? Wild Card, steht stellvertretend für genau ein Zeichen, dass beliebig sein kann. [Xx] Sowohl X wie auch x kann an dieser Stelle stehen, X und x stehen hier als Beispiel, 

beliebige andere Zeichen möglich. Space, Tab

Feldseparatoren, z.B. zwischen zwei Parametern 

\ Maskierungszeichen, dass die Funktion des nachfolgenden Sonderzeichens aufhebt (z.B. bei Leerzeichen im Dateinamen wird als Leerzeichen und nicht als Feldseparator behandelt).  

`cmd` cmd steht für ein beliebiges Kommando. Auswertung des Kommandos, wenn es auf der Parameter‐Position eines anderen Kommandos steht (Beispiel:: echo `date`). 

$ kennzeichnet eine Variablen.  'text' Klammerung von Zeichenketten, Sonderzeichen innerhalb der Quotierung haben keine 

Wirkung. "text" Klammerung von Zeichenketten, innerhalb der Quotierung werden aber die Zeichen

$ `cmd` \ ! ausgewertet. .. kennzeichnet die übergeordnete Verzeichnisebene . kennzeichnet das aktuelle Verzeichnis Enter führt  das Kommando aus  Die folgenden Sonderzeichen finden hauptsächlich in Shell‐Skriptes Verwendung {…} […] Klammerungen in Shell‐Skripten # Kennzeichnung eines Kommentares #!... sorgt dafür, dass das Skript in einer bestimmten Shell ausgeführt wird  

Aufgabe 1: 

a) Legt in eurem Homeverzeichnis folgende Verzeichnisstruktur an: 

  ersteSchritte/Verzeichnis1

  ersteSchritte/Verzeichnis2

b) Wechselt in das Verzeichnis1. Mit dem Kommando echo könnt ihr einen Text auf die Standardausgabe schreiben. Über das Umlenkzeichen > wird die Ausgabe von echo in eine Datei umgeleitet: echo blablabla > dateiname. Schreibt den folgenden Text: 

Ich heisse euerName in die Datei meineDaten

Page 3: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

Fakultät Informatik, HFU  Brückenkurs UNIX‐Einführung  3 

c) Nachdem ihr geprüft habt, ob die Datei auch vorhanden ist und den Inhalt enthält, ergänzt ihr meineDaten durch die Angabe

und wohne in eureStadt

Kontrolliert, ob meineDaten wirklich beide Zeilen enthält. 

d) Welche drei Möglichkeiten habt ihr, um in euer Homeverzeichnis zurückzukehren? 

 

Selbstdefinierte Kommandos 

Beim Login werden folgende Dateien durchlaufen (C‐Shell csh oder deren Weiterentwicklung tcsh): 

• /etc/.cshrc für alle User, kann nur mit root‐Rechten geändert werden 

• .cshrc im Homeverzeichnis, kann jeder User selbst ändern 

• .login im Homeverzeichnis, kann auch jeder User selbst ändern 

Über diese Dateien wird die Systemumgebung festgelegt (wichtige Umgebungsvariablen, Aliase). Durch den Alias kann man einem Kommando in Verbindung mit ganz bestimmten Optionen einen neuen "Kurznamen" zuweisen.  

Beispiel: 

  alias ll "ls -al"

 

Löschen von Dateien und Verzeichnissen 

Ein weiterer "wichtiger" Alias, der bei uns durch die /etc/.cshrc gesetzt wird, ist  

alias rm "rm -i" damit interaktiv gelöscht wird 

Über die Option -i für "interaktives Löschen" wird das Kommando rm entschärft, man muss noch einmal bestätigen, dass man wirklich die Datei löschen will. 

rm dateiname löscht Dateien unwiederbringlich, standardmäßig ohne Rückfrage 

rmdir directoryname löscht ein Verzeichnis, das leer sein muss  

Das Kommando rm besitzt zwei weitere, sehr "effektive" Optionen: 

rm -r  löscht rekursiv alle Unterverzeichnisse und deren Dateien, arbeitet aber interaktiv und fragt besonders bei schreibgeschützten Verzeichnisses und Dateien nach. 

rm -f  löscht sofort alle Dateien in einem Verzeichnis, egal ob sie schreibgeschützt sind, ohne nachzufragen (inaktiviert die i‐Option). 

Die "tödliche" Kombination aus beiden Optionen und dem Wild Card‐Zeichen *  

rm -rf *  kann deshalb sehr schnell im Homeverzeichnis Platz schaffen und sollte deshalb nur mit äußerster Vorsicht verwendet werden   

Page 4: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

4   Brückenkurs UNIX‐Einführung   Fakultät Informatik, HFU 

Anzeigen von Dateiinhalten 

more file zeigt einen Dateiinhalt von file seitenweise auf dem Bildschirm an. 

less file zeigt einen Dateiinhalt ebenfalls seitenweise an, man kann in der Datei vor‐ und zurückspringen und nach Begriffen suchen. 

cat file1 file2 ... kann den Dateiinhalt von mehreren Dateien anzeigen, macht keine seitenweise Anzeigeformatierung 

cat file1 file2 >file3 file3 wird aus file1 und file2 gebildet tail –f logfile Die letzten Zeilen von logfile werden angezeigt, tail

wird nicht beendet (zur Beobachtung von Logfiles).  

Aufgabe 2: 

Mit dem Kommando cat und der Ausgabe‐Umlenkung kann von der Konsole direkt in eine Datei geschrieben werden. Die Dateieingabe muss dann über Ctrl d (Setzen des EOF =  End of File bzw. EOD =  End of Data) abgeschlossen werden. 

a) Schreibt mit Hilfe von cat einen beliebigen Text in eine Datei, kontrolliert anschließend, ob die Datei vorhanden ist und tatsächlich den gewünschten Inhalt enthält.  

b) Nun ergänzt über cat diese Datei durch weiteren Text. Was ist zu beachten? Kontrolliert eure Eingabe. 

 

Aufgabe 3: 

Mit dem Kommando touch file "berührt" man eine Datei, das bedeutet, dass das Modifikationsdatum auf die aktuelle Zeit gesetzt wird. Existiert die Datei noch nicht, so wird sie angelegt, enthält aber keinen Inhalt.  

a) Legt über touch eine Datei an und kontrolliert ihr Vorhandensein und ihre Rechte. 

b) Zeigt den Inhalt von ersteSchritte an. Welche Datums‐ und Zeitangaben seht ihr bei den Dateieinträgen? Nun "berührt" das Verzeichnis Verzeichnis2. Kontrolliert abermals die Datums‐ und Zeitangaben.  

c) Löscht alle "leeren" Dateien (Dateien der Länge 0). 

 

Beschreibung aller Kommandos in den Manpages (manual pages) 

Die Manpages ruft man auf über  

  man kommandoname

Kurzbeschreibung der verfügbaren Optionen eines Kommandos über 

  kommandoname --help (nicht standardisiert)

Page 5: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

Fakultät Informatik, HFU  Brückenkurs UNIX‐Einführung  5 

Aufgabe 4: 

Ruft die Manpage des Kommandos ls auf und seht euch danach die Kurzbeschreibung der verfügbaren Optionen dazu an. 

 

Dateirechte 

Jede Datei und jedes Verzeichnis hat bestimmte Rechte, über die das System weiß, wer was damit machen darf. Die Rechte bekommen wir über das Kommando ll bzw. ls –l angezeigt: 

ll ersteSchritte/Verzeichnis2/ total 4 -rw-r--r-- 1 mai users 51 Sep 15 10:09 beispiel1 -rw-r--r-- 1 mai users 0 Sep 15 11:14 leereDatei lrwxrwxrwx 1 mai users 9 Sep 15 11:19 Name2 -> beispiel1 drwxr-xr-x 2 mai users 72 Sep 15 10:12 verz3  

Der erste Wert bezeichnet den Dateityp: 

  -  normale Datei   d  Verzeichnis   l  Link (Verweis auf eine andere Datei / Verzeichnis)   b / c  für Gerätetreiber / devices  

Dann kommen die Rechte des Users (u), der Gruppe (g) und aller anderen (o). 

Die Rechte werden in der Reihenfolge rwx angezeigt, das Minuszeichen zeigt an, dass das entsprechende Recht nicht gesetzt ist: 

  r  read   w  write   x  execute  

Die Rechte können auch in oktaler Form benannt werden, ein gesetztes Recht entspricht einer binären Eins, ein nicht gesetztes Recht eine Null. 

Beispiel: 

u g o u: Besitzer, g: gruppe, o: other d rwx r-x r-x 2 mai users 72 Sep 15 10:12 verz3 111 101 101 = 7558 (default-Rechte für Verzeichnisse))

- rw- r-- r-- 1 mai users 0 Sep 15 11:14 leereDatei 110 100 100 = 6448 (default-Rechte für Dateien)  

Minimale Rechte für Verzeichnisse: 

  r  Verzeichniseinträge können angezeigt werden, wenn zusätzlich das x‐Flag gesetzt ist.   w  Dateien können angelegt und gelöscht werden.   x  Man kann mit cd in das Verzeichnis wechseln. Verzeichniseinträge können angezeigt      werden, wenn zusätzlich das r‐Flag gesetzt ist.  

Page 6: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

6   Brückenkurs UNIX‐Einführung   Fakultät Informatik, HFU 

chmod 700 directory Rechte‐Vergabe über die Oktal‐Werte für ein Verzeichnis chmod 744 file Rechte‐Vergabe über die Oktal‐Werte für eine Datei chmod u+x file Execute‐Recht für Dateibesitzer setzen  chmod go-x directory Execute‐Recht des Verzeichnisses für Gruppe und andere 

entfernen chmod a+x file Execute‐Recht der Datei für alle setzen  

(Besitzer, Gruppe, Other)  

Default‐Rechte festlegen 

Die Maximal‐Rechte in oktaler Form für Verzeichnisse sind 777 und für Dateien 666, da die meisten Dateien nicht ausgeführt werden und deshalb keine Execute‐Rechte brauchen. 

Aber alle ausführbaren Dateien (Shell‐Skripte, Programme) brauchen Execute‐Rechte. 

In der /etc/profile werden Standardprofil‐Einstellungen hinterlegt. Die Maximal‐Rechte bei der Generierung von Verzeichnissen und Dateien werden hier für alle Benutzer des Systems über den Befehl umask maskiert. Der Oktal‐Wert der Generierungsmaske wird von den Maximal‐Rechten abgezogen. 

  umask 022 Verzeichnis: 777  –  022 -> 755  Datei: 666  –  022 -> 644 

Ist eine andere Rechte‐Maskierung bei der Dateierzeugung gewünscht, so kann man in seiner .cshrc im Homeverzeichnis ein entsprechendes umask eintragen. 

 Aufgabe 5: 

Verändert die Rechte eurer Dateien und Verzeichnisse  

• über die entsprechenden Oktal‐Werte und  • über eine beliebige Angaben in der Form ugo±rwx  

 Aufgabe 6: 

Um für die aktuelle Shell die File‐Generierungsmaske neu zu setzen, könnt ihr den umask‐Befehl direkt auf der Konsole absetzen. Definiert eine andere Maske als 022 und testet sie, indem ihr Dateien und Verzeichnisse anlegt und das Ergebnis überprüft. 

 Aufgabe 7: 

Schreibt ein Mini‐Shell‐Skript folgenden Inhaltes  

  echo "Jetzt ist `date`"  (Tipp: cat > heute, Eingabe der Zeile, Eingabe abschließen mit Ctrl d) 

Führt das Programm aus über die Konsolen‐Eingabe   

   ./heute

Es wird zu einer Fehlermeldung kommen, weil die Rechte nicht stimmen. Ändert diese so ab, dass das Programm läuft. 

 

Page 7: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

Fakultät Informatik, HFU  Brückenkurs UNIX‐Einführung  7 

Kopieren / Verschieben von Dateien 

cp file1 file2 kopiere file1 nach file2 cp file1 [file2 ...]verzeichnis2 kopiere eine oder mehrere Dateien nach 

verzeichnis2 mv file1 file2 benenne file1 in file2 um mv file1 [file2 ...] verzeichnis2 verschiebe eine oder mehrere Dateien nach 

verzeichnis2  

Nachtrag zu Namenskonventionen 

Dateiendungen sind unter UNIX kein Muss, sondern ein Kann 

• file.txt      Textfile • file.sh      Shell‐Skript • file.pl      Perl‐Skript • file.tar      mit tar gepackte Datei • file.tar.gz    mit tar gepackte Datei,  

die zusätzlich mit zip komprimiert wurde 

 

Suchen nach bestimmten Dateien oder Dateien mit bestimmten Inhalten 

grep "text" * sucht den angegebenen text in allen Dateien des aktuellen Verzeichnisses, zeigt bei Auffinden die gesamte Zeile an, in der text auftritt, bei mehreren Dateien zusätzlich den Dateinamen 

grep –n "text" * zeigt zusätzlich die Zeilennummer an, in der text auftritt grep –l "text" * zeigt nur den / die Dateinamen  an, die text enthält / enthalten find . –name "*.java" durchsucht ab dem aktuellen Verzeichnis (.) den Verzeichnisbaum 

abwärts nach allen Dateien mit der Endung .java  

Der find‐Befehl ist ein sehr mächtiger Befehl (siehe man find), der auch mit weiteren Befehlen über die Option –exec gekoppelt werden kann: 

find ~ -exec grep -l "suchmuster" {} \;

durchsucht das gesamte Homeverzeichnis nach Dateien, die suchmuster enthalten und zeigt deren Pfad und Namen an. 

 

Identifikationen 

who zeigt an, welche Benutzer an der Workstation eingeloggt sind. whoami gibt den eigenen Benutzernamen aus id zeigt die eigene user id (uid) und group id (gid) an.  

   

Page 8: Grundlegende Kommandos unter UNIX 2webuser.hs-furtwangen.de/~mai/download/Brueckenkurs-Rechner/Unix... · Fakultät Informatik, HFU Brückenkurs UNIX‐Einführung 1 Grundlegende

8   Brückenkurs UNIX‐Einführung   Fakultät Informatik, HFU 

Prozess‐Identifikationen 

Wird ein Prozess gestartet, so bekommt er eine Prozess‐ID. Diese Prozess‐ID und mit dem Prozess verbundene Infos kann man über das Kommando ps (process status) anzeigen. 

ps ohne Optionen zeigt es nur die eigenen Prozesse mit PID, TTY, Time und CMD‐Name an. 

ps -e zeigt alle Prozesse mit den oben genannten Parametern an. ps -f zeigt die eigenen Prozesse mit UID, PID, PPID, C, STIME, TTY, TIME, CMD an. ps auxww nur unter LINUX: bringt weiterführende Infos zu allen Prozessen als die Option –f.  

Angezeigte‐Parameter von ps  

  UID    User‐ID bzw. Login‐Name des Prozessbesitzers    PID    Prozess‐ID,  über diese ID kann der Prozess gekillt werden   PPID    ID des Parents‐Prozesses, der diesen Prozess gestartet hat   C    Prozessor‐Auslastung für Scheduling   STIME    Startzeit des Prozesses   TTY    Terminal, von dem der Prozess gestartet wurde   TIME    gesamte Ausführungszeit des Prozesses bis zu diesem Zeitpunkt   CMD    Kommando‐Name des Prozesses  

Prozesse abbrechen 

Abbruch über Ctrl c 

Die meisten eigenen Prozesse laufen im Vordergrund. Will man einen Vordergrund‐Prozess beenden, so gelingt das in den meisten Fällen durch Drücken von Ctrl c. 

Abbruch über das Kommando kill processID 

Hintergrundprozesse geben ihre Prozess‐ID nach dem Start zurück. Die Prozess‐ID kann man, wie auf der vorhergehenden Seite beschrieben, auch über das Kommando ps herausfinden. Über  

  kill processID

wird das Standardsignal SIGTERM an den Prozess gesendet, der den Prozess beendet. 

Manche Prozesse reagieren nicht auf das Standardsignal SIGTERM. Sie lassen sich nur über das Signal SIGKILL mit der Signalnummer 9 beenden: 

   kill -9 processID Signal SIGKILL beendet den Prozess (Datenverluste möglich) 

 

Suchen einer Prozess‐ID zum Abbrechen über das Kommando kill: 

• Eine weitere Konsole öffnen, • den Prozess suchen über   ps –ef | grep loginname | grep cmd

-> processID, • den Prozess beenden über   kill -9 processID