Kommandozeile - Shell - Terminal

Einführung in die Welt der Kommandozeile

Jetzt geht es in die Tiefen von Linux: die Bedienung von Linux per Kommandozeile. Dies geschieht über die Shell, welche in einem Terminalprogramm emuliert wird. Dieses Programm bildet virtuell nach, was vor einigen Jahrzehnten an Ort und Stelle stattfand, nämlich das Eingabeterminal an einem Großrechner. So wird also zwischen der GUI und der Shell "vermittelt" - und so arbeitet man aus der grafischen Oberfläche ausgehend in einer Konsole.
https://de.wikipedia.org/wiki/Terminalemulation

Die Eingabe erfolgt durch sogenannte Befehle. Diese werden abgeschickt in dem Schema:

Befehl -Option Argument

Das "Abschicken" des Befehls erfolgt dann per Entertaste.

Wofür braucht man das?

Befehle können Programmaufrufe sein oder bestimmte Aktionen wie das Kopieren von Dateien von einem Ort zu einem anderen. Es können aber auch Befehle sein wie das Herunterfahren oder Neustart eines Rechners. Manche Programme werden innerhalb der Kommandozeile aufgerufen und starten auch dort. Dafür muss man also zwingend die Kommandozeile verwenden. Man kann aber auch Programme wie den Firefox-Browser aus der Kommandozeile heraus aufrufen, gestartet wird er dann aber ganz "normal" über die GUI. Das ist dann eher ein Gimmick, denn Sie könnten ja auch einfach auf das Firefox-Icon mit der Maus klicken. :-) Es gibt aber auch Browser, die in der Kommandozeile aufgerufen werden und dort ein recht textbasiertes Surfen ermöglichen. Das ist ziemlich speziell, und Anwendungsfälle dafür gibt es auch nur sehr wenige (beispielsweise für den Notfall, zum Googlen, falls auf einem Rechner keine grafische Oberfläche zur Verfügung steht).

Also: Ein Linux-System lässt sich auch ganz ohne grafisches User-Interface steuern! Dies kommt in einigen Einsatzbereichen auch tatsächlich vor, zum Beispiel auf Servern. Diese stehen meist an Orten, auf die kein physischer Zugriff möglich ist (also beispielsweise in Rechenzentren), und so muss es einen Remotezugang geben, bei dem man aus der Ferne das System steuern kann. Dazu bietet sich der Verbindungsaufbau per Secure Shell (SSH) an.

Warum also sollte man die Kommandozeile bedienen können? Warum sollen Sie dies kennenlernen? Dies sind Skills, die man vielleicht dort benötigen kann, wo man im Rahmen seines Berufs gebeten wird, beispielsweise auf einem Webserver Daten und Inhalte zu ändern. In der Wissenschaft werden solche Server je nach Fachgebiet selbst betrieben (zum Beispiel auf High Performance Clustern/"Supercomputern", auch Bibliotheken und Archive setzen solche Server ein, auf die man gelegentlich Zugriff braucht.

Los geht's

Sie lernen kennen, wie man sich grundsätzlich auf der Konsole bewegt, Befehle kombiniert, Aktionen startet und können selbst einmal ausprobieren. Keine Angst: Sie können nichts kaputt machen!

Nochmal der grundsätzliche Aufbau eines Befehls:

 Befehl -Option Pfadangabe Dateinamen (immer mit Returntaste/Enter abschließen)

Beispiel Syntax des Befehls ‚ls‘:

ls  →  listet Verzeichniseinträge auf 
ls -a  →  listet alle Verzeichniseinträge auf  
ls -l  →  listet Verzeichniseinträge in langen Form auf
ls -al  →  listet alle Verzeichniseinträge in langen Form auf
ls -al Uni  →  listet alle Verzeichniseinträge des Verzeichnisses Uni in langen Form auf

Hinweis für bessere Kontrolle bei der Eingabe, zur Vermeidung von Tippfehlern und für akute Faulheit ;-)

Benutzen Sie die Pfadvervollständigung mittels der Tabulator-Taste!

  1. Sie spart Ihnen Zeit bei der Eingabe,
  2. sie hilft Ihnen, dass man sich nicht vertippt oder Probleme mit der Case Sensitivity bekommt - und
  3. dann nerven ewig lange Pfade nicht so. ;-)

Auch noch wichtig:

  • History: mit Pfeiltasten die letzen Befehle erneut aufrufen
    • oder den Befehl history zur Anzeige der letzten Befehle
  • zurück zur Eingabe: [Strg] + [C] ("cancel")
  • clear (zum Leeren des Screens, also zum Anzeigen einer komplett leeren Kommandozeile)
  • bei völliger Verzweiflung: Verbindung abschießen: "exit" eingeben und Entertaste drücken oder [Strg] + [D]

Tipps zu den Sonderzeichen

  • ‚~‘ ist eine ‚Tilde‘ – Windows/Linux: ‚Alt Gr‘ + ‚+‘, Mac: ‚Alt‘ + ’n‘
  • ‚|‘ bezeichnet eine ‚Pipe‘: Windows/Linux: ‚Alt Gr‘ + ‚<‚, Mac: ‚Alt‘ + ‚7‘
  • * Sternchen sind sogenannte "Wildcards" - zugehörig zu den "regulären Ausdrücken" (RegEx), mittels derer man beispielsweise eine Suche so erweitern kann, dass anstelle des Sternchens nach beliebigen Zeichen gesucht wird. Die Suche nach Bild* listet als Ergebnis also alle Dateien auf, die mit "Bild" beginnen, danach beispielsweise noch 001, 002 und so weiter angehangen haben.

Anlegen, Kopieren, Umbenennen beziehungsweise Verschieben von Ordnern

mkdir
cp
mv Pfad/Ordnername Pfad/Ordnername

ls   Verzeichnis ansehen

cd Pfadangabe oder ..  innerhalb der Verzeichnisstruktur navigieren

Freiwillige Aufgaben

Hier können Sie gerne noch ein wenig weiter ausprobieren! Mittels der Aufgaben können Sie entdecken, was noch alles mit der Kommandozeile möglich ist.

Aufgabe 1

Erstellen Sie möglichst effizient:

  • 3 Ordner parallel: urkunden handschriften inkunabeln

  • je 3 Unterodner: vor1454; bis1470 und ab1470

rm Pfad/Dateiname Löschen von Dateien

rmdir Pfad/Ordnername Löschen von leeren Verzeichnissen

rm -rf Pfad/Dateiname Löschen von Verzeichnissen (auch mit Inhalt!)

Aufgabe 2

Löschen Sie das Verzichnis vor1454 (wegen groben Unfugs ;-) ) aus dem Ordner inkunabeln.

Aufgabe 3

Legen Sie in jeden der 3 Ordner eine leere Datei

​​​urkunden – kaiserSiegmund1410
handschriften – dieboldLauber
inkunabeln – peterSchoeffer

Das Anlegen leerer Dateien geht mit folgendem Befehl:

touch Pfad/Dateiname

Zugriffsrechte

Schauen Sie sich die Rechtevergabe für Ihre Ordner und Dateien an. (ls -l)

Es wird unterschieden zwischen den Benutzergruppen

  1. u ser
  2. g roup
  3. o thers (world)

und den Rechten

  1. r – read
  2. w – write
  3. x – excutable

Beispiele:

directoy user group others
d rwx rwx rwx Ordner
user, group und others dürfen das Verzeichnis lesen, schreiben und ausführen
r-x r– Datei
user und group und dürfen die Datei lesen, aber nicht schreiben oder ausführen, others dürfen nichts

Rechtevergabe mit chmod

+ Recht vergeben und
– für Recht entziehen

Beispiele:
chmod o-w pfad/datei1 → Alle erhält keine Schreibrechte für die Datei datei1
chmod u+x pfad/datei1 pfad/datei2 … → User erhält execute access für die Datei datei1 und datei2

und:

chmod og-rw pfad/datei1 → Alle und Gruppe erhalten keine Schreib- und Leserechte für die Datei datei1

Aufgabe 4

Bitte verändern Sie die Rechte Ihrer Ordner/Dateien.
Die Verzeichnisse urkunden, handschriften und inkunabeln dürfen nur vom user und der group gelesen werden.
Die Verzeichnisse urkunden, handschriften und inkunabeln dürfen nur vom user verändert werden.
Die Dateien kaiserSiegmund1410 und dieboldLauber müssen genau in dieser Form erhalten bleiben und jeder darf sie ansehen.

Überlegen Sie nun, wie eine sinnvolle Rechtevergabe für folgende Situation aussehen könnte:

  1. Ordner für Dateiaustausch in der Gruppe
  2. Ordner für die Ablage finaler Dokumente
  3. Ordner für die eigenen, unfertigen Arbeiten
  4. Ordner für die Veröffentlichung von Dokumenten

Speicherplatzkontrolle und Handbuch

df „disk free“ zeigt den freien Festplattenspeicher an.

Aufgabe 5

Schauen Sie sich den freien Festplattenspeicher an.

Unverständlich? Handbuch konsultieren:

man df ist der Befehl zum Aufruf des Handbuches. Zurück zur Eingabe kommen Sie mit q.
oder df –help versuchen.

Ausgabeumleitung und mehr

Mittels Ausgangsdatei > Zieldatei
können Sie eine Ausgabeumleitung erreichen. So können Sie zum Beispiel mit ‚man df > df-manual.txt‘ den Handbuchtext für den Befehl df in eine Textdatei namens df-manual.txt umleiten und nicht auf dem Bildschirm anzeigen lassen. Dieser ist nun z.B. mit einem Texteditor bearbeitbar.

Aufgabe 6

Bitte erzeugen Sie eine solche Ausgabeumleitung für den Handbuchtext des Befehls find und du.

Die nun erzeugte Datei können Sie mittels more an.
more pfad/dateineame gibt Textdateien seitenweise auf dem Bildschirm aus.
Zurück zur Eingabe kommen Sie mit q.

cat Zusammenfügen von Dateien

cat Datei1 Datei2 > neueDatei

Aufgabe
Bitte fügen Sie die Dateien find.txt und du.txt zusammen in eine neue Datei namens find_du.txt.

Dateien (wieder)finden

find Pfadangabe ab wo gesucht werden soll (. ~ /) Suchkriterium
Ermöglicht die Suche über Dateiattribute: Suchkriterium z.B. Name, Dateityp oder Zeit

Beispiele:
find -iname ‚*.jpg‘ → alle Dateien mit der Endung .jpg finden und keine Rücksicht auf die Groß-/Kleinschreibung nehmen

find . -type f → alle Dateien ab aktuellen Verzeichnis finden
find . -type d → alle Ordner ab aktuellen Verzeichnis finden
find ~ -type d → alle Ordner im Homeverzeichnis finden
find / -type d → alle Ordner ab dem Rootverzeichnis finden

grep -option Suchbegriff Dateiangabe

Suche über Dateiinhalte, z.B.
grep „disk“ * → sucht alle Dateien mit den Worten disk in allen Dateien.
grep „disk“ *.txt → sucht alle Dateien mit den Worten disk in allen Dateien mit der Endung .txt.
grep -c „disk“ * → sucht die Worte disk in allen Dateien und zählt die Vorkommen.
grep -i „disk“ * → sucht die Worte disk in allen Dateien und ignoriert Groß- und Kleinschreibung.

spannend werden dann die Kombinationen ;-)

Beispiel: find . -type f -exec grep -i „best way“ {} /dev/null \;


Erste Schritte mit der Kommandozeile

https://www.ionos.de/digitalguide/server/konfiguration/linux-befehle-terminal-kommandos-im-ueberblick/

Befehlsübersicht

Hier finden Sie eine Übersicht zu gängigen Befehlen, die man kennen oder brauchen könnte: https://wiki.ubuntuusers.de/Shell/Befehls%C3%BCbersicht/

Software installieren am Beispiel cmatrix

https://www.cyberciti.biz/open-source/command-line-hacks/matrix-digital-rain-on-linux-macos-unix-terminal

Ubuntu-Linux Wiki und -Forum

unter dem Motto "Fragen ist menschlich!" bietet das Ubuntuusers-Wiki Hilfe, Anleitungen und ein Forum an. Sehr empfehlenswert auch wegen der weiteren Schritt-für-Schritt-Anleitungen. https://wiki.ubuntuusers.de/Startseite/