====== Linux - Grundlagen - Konsole ====== Für die Konsole gibt es viele (mehr oder weniger gleichwertige) Namen, wie z.B. Terminial, Shell, CLI (für Command Line Interface), Bash, usw. Wir verwenden hier die Bash. ===== Die Linux Konsole ===== {{ :inf:linux:shell_kernel_linux.png?450 |}} * **Kernel**: Der Kernel bildet das eigentliche Betriebssystem (engl. Operating System). * **Shell:**Durch die Shell (engl. Muschel, auch Konsole, Bash) kann der Anwender (USER) sowohl mit dem Kernel als auch mit Anwendungen kommunizieren. * **Application** (Anwendungen): Der Benutzer verwendet in der Regel lediglich die Programme (Anwendungen). Die Arbeit des Kernels läuft meistens völlig unbemerkt im Hintergrund ab. ===== Linux Prompt ===== Das erste was man sieht, wenn man die Konsole aufruft (bei Ubuntu z.B. mit "Strg+Alt+T") ist der sogenannte Prompt: //**user@host:~>**// {{:inf:sample.gif?|}} **//student@saturn:~> //** | **student**|**@** |**saturn** |**:** |**~**|**>**| |Hier der Benutzer "student" | | Angemeldet am Computer saturn| |Pfadangabe (~ ist eine Abkürzung für das Homeverzeichnis) | Normaler User haben das > Symbol. | Dem Prompt kann man entnehmen: - **Benutzer** - **Host (Computer)** - **aktuellen Pfad** - Außerdem erkennt man am letzten Zeichen, ob man im Root-Modus (#) oder als User angemeldet ist. ===== Linux Konsolenbefehle ===== {{ :inf:linux:console.png?400 |}} Der Befehl für die Konsole kann aus mehreren Teilen bestehen. * Dem Befehl an sich * Den Optionen * Und dem/den Argument/en Der Befehl an sich reicht in vielen Fällen aus, um die Grundfunktion zu nutzen. ==== Anwendungsbeispiel ==== {{:inf:sample.gif?|}} Das //ls// Komanndo. Mit dem Befehl //ls//, kann man die Verzeichnisstruktur auflisten. Das Beispiel zeigt, wie das Kommando ohne oder mit Parameter aufgerufen wird. === 1. Der ls-Befehl ohne Parameter === |{{:inf:linux:shell1.png? |}}| |Der ls Befehl ohne Optionen und Argumente aufgerufen.| === 2. Der ls-Befehl mit Optionen === |{{:inf:linux:shell2.png? |}}| |Wird ls mit der Option -l aufgerufen, erhalten wir eine ausführlichere Ausgabe.| === 3. Der ls-Befehl mit Argument === |Nun nutzen wir den Befehl nur mit einem Argument:| |{{:inf:linux:shell3.png? |}}| === 4. Der ls-Befehl mit Optionen und Argument === |Als letztes kombinieren wir alles, d.h Option und Argument werden verwendet:| |{{:inf:linux:shell4.png? |}}| ==== Linux Konsolenbefehle für die Dateiverwaltung==== ^Befehl^Übersetzung^Erklärung^Beispiel^ |ls|list|Es werden alle Ordner im aktuellen Verzeichnis aufgelistet|''ls''| |cd|change directory|Der User wechselt in das angegebene Verzeichnis|''cd Downloads/''| |cp|copy|Die angegebene Datei oder der angegebene Ordner wird in das angegebene Verzeichnis kopiert.|''cp text.txt /home/student/Dokumente/''| |mkdir|make directory|Erstellt einen Ordner mit dem angegebenen Namen|''mkdir neuerordner''| |mv|move|Verschiebt Datei oder benennt Datei um|''mv test.txt /home/student/Dokumente''| |pwd|print working directory|Gibt das aktuelle Verzeichnis aus|''pwd''| |touch|Erstellt eine nicht vorhandene Datei oder aktualisiert den Zeitstempel einer Datei|''touch test.txt''| |rm|remove|Löscht Dateien oder Verzeichnisse|''rm test.txt''| |echo|"Zurückgeben"|schreibt die nachfolgenden Zeichenketten auf die Konsole|''echo "Sag dies zu mir"''| |cat|concatenate|gibt Datei auf der Konsole aus|''cat test.txt''| ==== Linux Konsolenbefehle für die Prozessverwaltung ==== ^Befehl^Erklärung^Beispiel^ |pidof|zeigt die ID eines Prozesses|''pidof firefox''| |pstree|zeigt alle Prozesse in einer Baumansicht an| | |top|zeigt eine Übersicht über alle Prozesse an| | |kill|Befehl zur Inter-Process-Communication: Prozesse beenden, schlafend setzen,...| | |nice|Startet ein Programm mit dem vorgegebenen Nice-Wert|''nice -n 5 kcalc''| |renice|Verändert den Nice-Wert eines Programms|''renice -n 10 -p 5473''| ==== Linux Konsolenbefehle für die Rechteverwaltung ==== Die ausführliche Ausgabe der Dateiliste enthält für jede Datei am Zeilenanfang eine Kombination aus 10 Zeichen. Dabei gibt das erste Zeichen den Dateityp an * (d für ein Verzeichnis, * ein Strich (-) für eine Datei). Die nachfolgenden 9 Zeichen sind in drei Tripeln zu lesen und geben die Berechtigungen für die entsprechende Datei an. * R steht für Lesen der Datei (Read), * W für Schreiben (Write) und * X für Ausführen (Execute), falls es sich um ein Programm handelt. Das erste Tripel gibt die Berechtigungen des Besitzers der Datei an. Das zweite Tripel gibt die Berechtigungen für die Gruppe an, der der Besitzer angehört. Das dritte Tripel gibt die Berechtigungen für die übrigen Nutzer an, die weder Besitzer der Datei noch Mitglieder seiner Gruppe sind. Beispiel: -rwxr-xr-x Es handelt sich um eine Datei, die von ihrem Besitzer gelesen, bearbeitet/gelöscht werden kann und enthaltene Programme können ausgeführt werden. Von der Gruppe des Besitzes und anderen Benutzern kann die Datei jedoch nur gelesen und enthaltene Programme können ausgeführt werden. ^Befehl^Übersetzung^Erklärung^Beispiel^ |chmod|change mode|ändert die Zugriffsrechte einer Datei/eines Verzeichnisses|''chmod u=rw test.txt''| |chown|change owner|ändert den Besitzer einer Datei/eines Verzeichnisses|''chown root test.txt''| |chgrp|change group|ändert die Gruppenzugehörigkeit einer Datei| | === Beispiel chmod === In Linux-Systemen werden mittels ''chmod'' Datei- und Ordnerberechtigungen vergeben. Zu jeder Datei und jedem Ordner können einzeln die Rechte **Lesen**, **Schreiben** und **Ausführen** pro Eigentümer, Gruppe und Public (Others) vergeben werden. Gewichtung der Berechtigungen: Lesen (read) 4 Schreiben (write) 2 Ausführen (execute) 1 ===== Linux Pipes und mehr (|, >, >> more und less) ===== * **stdin** (Standardeingabekanal, Kanal 0) daher bezieht ein Befehl seine Eingabe, wenn nicht weiter spezifiziert, dann von der Tastatur, welche mit dem Terminal verbunden ist. * **stdout** (Standardausgabekanal, Kanal 1) dahin schickt ein Befehl seine Ausgabe, wenn nicht weiter spezifiziert, dann an den Bildschirm, welcher mit dem Terminal verbunden ist. * **stderr** (Standardfehlerkanal, Kanal 2) falls etwas schief geht, schickt ein Befehl dahin seine Fehlermeldung, falls nich weiter spezifiziert an den Bildschirm, welcher mit dem Terminal verbunden ist. Mit Hilfe des "Größer als"-Zeichens > lässt sich die Standardausgabe beispielsweise in eine Datei umleiten. \\ \\ Beispiel: ls > inhalt.txt Dies schreibt den Inhalt des aktuellen Verzeichnisses in die Datei //inhalt.txt// anstatt ins Terminal \\ **Anmerkung**: Falls die Datei inhalt.txt schon existiert, wird sie überschrieben, falls nicht, wird sie neu angelegt.\\ \\ Mit Hilfe des „Kleiner als“-Zeichens < lässt sich die Standardeingabe umleiten. \\ Mit dem Pipe-Operator | (engl. pipeline = Rohrleitung) kann man die Ausgabe eines Befehls direkt als Eingabe an den nächsten Befehl leiten (anstatt ins Terminal). ===== Linux Programme ausführen ===== Wenn man über die Linux Konsole ein Programm aufruft, beispielsweise "firefox", steht man vor dem Problem, dass das Programm zwar ordentlich ausgeführt wird, man aber das aktuelle Konsolenfenster nicht weiter nutzen kann, da dort nur die Ausgaben von Firefox angezeigt werden. Wenn man hier nun mit Ctrl+C arbeitet, wird der Prozess beendet und man kann normal weiterarbeiten. Um dieses Problem zu umgehen erweitert man den Befehl um das Zeichen "&". firefox & Hier wird beim Aufrufen nur noch die PID angezeigt und man kann die Konsole weiter benutzen. ===== Linux Bashtipps ===== * Konsole funktioniert nicht mehr → //"ctrl-c"// * Tab - Taste * **↑↓** Pfeiltasten * Drei nützliche Shortcuts //"ctrl-u"//, //"ctrl-l"// und //"ctrl-c" // ==== Die Schreibweise für Verzeichnisse (Pfade) ==== Eine Folge von jeweils direkt untergeordneten Verzeichnisnamen heißt Pfad. Verzeichnisnamen werden voneinander und vom Dateinamen durch / (slash) getrennt. #z.B. /schiller/Schüler Eine absolute Pfadangabe geht immer vom obersten verfügbaren Verzeichnis (root) aus und beginnt daher mit dem slash. * Bei relativen Pfadangaben wird der Pfad in Bezug auf das aktuelle Verzeichnis angegeben.Darauf bezieht man sich mit einem Punkt (.) * Das übergeordnete Verzeichnis wird mit zwei Punkten (..) angesprochen.