Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sie manche Aufgabe schneller bewältigen als in grafischen Programmen. Wir stellen interessante Anwendungen und Aufrufparameter vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.
Tipp: Kommandos per SSH ausführen
Sie haben einen Account auf einem anderen Linux-Rechner und melden sich dort regelmäßig per ssh benutzer@rechnername an? Danach führen Sie dort einen oder mehrere Shell-Befehle aus und melden sich wieder ab? Das geht schneller, denn Sie können die Befehle direkt an das ssh-Kommando anhängen. Um beispielsweise auf einem entfernten Rechner das date-Kommando abzusetzen, geben Sie Folgendes ein:
ssh benutzer@rechnername date
Password:
Mi 16 Nov 2016 13:10:14 CET
Nachdem Sie das Kennwort eingegeben und mit Druck auf [Eingabe] bestätigt haben, erscheint sofort die Ausgabe von date. Sie befinden sich aber nach wie vor auf dem lokalen Rechner.
Mehrere Kommandos verknüpfen Sie mit einem Semikolon. Zusätzlich schließen Sie sie in Anführungszeichen ein, damit ssh wirklich alle Befehle an die Gegenseite schickt. Listing 1 zeigt den Unterschied: Der Benutzer heike auf dem Rechner jessie hat einen Account namens huhn auf dem Rechner ubuntu. Per ssh sollen zwei Befehle nach ubuntu wandern, einmal pwd (“print working directory”, gibt das aktuelle Verzeichnis aus) und einmal whoami (zeigt den Benutzernamen an). Ohne Anführungszeichen führt ssh nur das erste Kommando aus und zeigt als Aufenthaltsort das Home-Verzeichnis des Benutzers huhn an. whoami bestätigt: Dieses Kommando hat heike auf jessie aufgerufen. Erst mit den umschließenden Hochkommata laufen wirklich beide Befehle auf dem entfernten Rechner.
Listing 1
“ssh”-Befehle im Vergleich
heike@jessie:~$ ssh huhn@ubuntu pwd; whoami /home/huhn heike heike@jessie:~$ ssh huhn@ubuntu 'pwd; whoami' /home/huhn huhn
Tipp: SSH mit Pseudo-Terminal
Befehle wie date, whoami, pwd usw. erfordern keine weitere Interaktion von Seiten des Benutzers – haben Sie sie einmal abgesetzt, erscheint die Ausgabe im Terminal, und danach sehen Sie wieder den Prompt. Andere Shell-Programme wie beispielsweise top (Prozessmonitor), passwd (zum Ändern des Passworts) oder auch alle Kommandos, denen Sie sudo zum Erlangen von Root-Rechten voranstellen, verlangen nach einer Eingabe von Ihnen. Das folgende Listing zeigt, dass ssh dies nicht ohne Weiteres verarbeiten kann:
heike@jessie:~$ ssh huhn@ich 'sudo tail -f /var/log/messages'
sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
SSH beschwert sich also über das Fehlen eines Terminals. Das beheben Sie schnell mit dem Schalter -t, der ein Pseudo-Terminal erzeugt. Im Klartext heißt das, dass Sie so lange eingeloggt bleiben, bis das aufgerufene Programm beendet ist:
heike@jessie:~$ ssh -t huhn@ich 'sudo tail -f /var/log/messages' [sudo] password for huhn: [...]
Nach dem Eingeben des eigenen Kennworts können Sie mit Administratorrechten die Datei /var/log/messages betrachten. tail -f aktualisiert die Anzeige des Logfiles fortwährend. Erst wenn Sie diese mit [Q] abschließen, wird auch die SSH-Verbindung geschlossen, und Sie sehen wieder den Shell-Prompt des lokalen Rechners.
Tipp: In “.rar”-Dateien hineinschauen
Es gibt etliche Anwendungen zum Komprimieren von Dateien und Ordnern. Besonders in der Windows-Welt verbreitet ist das proprietäre Format RAR. Derart verpackte Archive erkennen Sie an der Dateiendung .rar. Haben Sie eine solche Datei per Mail bekommen oder aus dem Internet heruntergeladen, können Sie diese auch unter Linux auspacken. Die Archivmanager der grafischen Desktopumgebungen (File-Roller unter Gnome und Ark unter KDE Plasma) erreichen Sie über die Startmenüs oder aus den jeweiligen Dateimanagern heraus. Klicken Sie einfach mit der rechten Maustaste auf die .rar-Datei und wählen Sie Mit Archivverwaltung öffnen (Nautilus) oder Mit Ark öffnen (Dolphin). Sie können danach den Inhalt der Archivdatei betrachten und diese entpacken (Abbildung 1).

Abbildung 1: File-Roller (links) und Ark (rechts) zeigen den Inhalt von “.rar”-Archiven und entpacken einzelne sowie alle Dateien.
Schneller geht’s auf der Shell mit dem Programm unrar aus dem gleichnamigen Paket – anstelle mehrerer Mausklicks reicht ein einziger Befehl aus, um den Inhalt aufzulisten. Die Aufrufparameter übergeben Sie ohne führenden Bindestrich. So zeigt das Kommando unrar l archiv.rar alle enthaltenen Dateien, Verzeichnisse sowie Zeitstempel für deren letzte Änderungen an (Listing 2). Unter der Spalte Size steht die Gesamtgröße aller Dateien in KByte; im Beispiel aus Listing 2 belegt der Inhalt nach dem Auspacken also etwa 9 MByte. Die Zahl unter der Spalte Name verrät, wie viele Dateien und Verzeichnisse insgesamt im Archiv stecken.
Listing 2
Ausgabe von “unrar l”
$ unrar l archiv.rar
[...]
Attributes Size Date Time Name
----------- --------- -------- ----- ----
..A.... 81280 16-11-16 10:37 Heft 01-2017/ErsteSeite-anders.png
..A.... 11530 16-11-16 11:07 Heft 01-2017/ErsteSeiteAnders.odt
..A.... 490177 13-11-16 23:31 Heft 01-2017/Fotos/13-11-2016 23-18-27.jpg
..A.... 881382 13-11-16 23:23 Heft 01-2017/Fotos/Monatsbild 2.png
[...]
..A.... 120091 16-11-16 14:32 Heft 01-2017/Kalender März.png
..A.... 2509999 16-11-16 11:07 Heft 01-2017/Kalender.ods
..A.... 32545 16-11-16 14:31 Heft 01-2017/LO-Tipps SD Nov-2016.odt
[...]
...D... 0 16-11-16 14:32 Heft 01-2017/Fotos
...D... 0 16-11-16 14:32 Heft 01-2017
----------- --------- -------- ----- ----
9013992 20
Noch mehr Informationen erhalten Sie, wenn Sie statt l den Schalter v (für englisch “verbose” = “ausführlich”) verwenden: unrar zeigt dann in weiteren Spalten an, wie groß die einzelnen Dateien nach dem Komprimieren sind (Packed) und wie viel Prozent Platzersparnis das im Verhältnis zum Original gibt (Ratio). Außerdem blendet die Spalte Checksum die CRC32-Prüfsumme der enthaltenen Dateien ein. Sie können diese auf der Shell mit dem Befehl crc32 datei kontrollieren.
Tipp: Richtig auspacken mit “unrar”
Nachdem Sie den Inhalt einer Archivdatei überprüft haben, können Sie das Tool unrar auch verwenden, um sie auszupacken. Dabei haben Sie die Wahl: Wollen Sie die im Archiv enthaltene Verzeichnisstruktur mit allen Unterverzeichnissen erhalten, oder möchten Sie einfach den gesamten Inhalt in den aktuellen Ordner befördern?
- Wenn Sie keinen Wert auf die Verzeichnisstruktur legen, packt das Kommando
unrar e archiv.rareinfach alles an Ort und Stelle aus. - Soll die Ordnung jedoch bestehen bleiben, verwenden Sie besser
unrar x archiv.rar.
Was dabei im Hintergrund passiert, verrät das Programm im Terminal:
[...] Extracting LO-Tipps SD Nov-2016.odt OK Extracting seitennummerierung.png OK All OK
Sollte unrar beim Entpacken auf eine Datei oder ein Verzeichnis stoßen, die bzw. das es schon gibt, fragt das Programm nach: “Would you like to replace the existing file … with a new one?” (“Möchten Sie die vorhandene Datei … durch eine neue ersetzen?”) Nun stehen Sie vor der Wahl:
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit
Drücken Sie [Y]+, um die Datei zu ersetzen, [N]+, um das abzulehnen, [A]+, um alle Duplikate durch neue Versionen zu überschreiben, [E]+, um keines davon zu ersetzen, [R]+, um einen neuen Namen zu wählen, und [Q], um den Vorgang ganz abzubrechen.
Tipp: Ein ISO-Image auf der Shell erzeugen
Sie möchten ein Abbild einer Daten-CD oder -DVD erstellen und sich dazu nicht durch sämtliche Menüs der grafischen Brennprogramme (Brasero, K3b usw.) klicken? Mit nur einem kurzen Befehl erstellen Sie ein ISO-Image auf der Kommandozeile. Das Programm dd leistet Ihnen dabei gute Dienste. Es erstellt 1:1-Kopien von Datenträgern – dazu gehören neben Festplatten-Partitionen auch CDs oder DVDs. Außer dem Befehl dd selbst geben Sie hinter if= die Quelle und hinter of= das Ziel an.
Um eine CD zu kopieren, definieren Sie als Quelle das Laufwerk, z. B. if=/dev/cdrom; je nach Konfiguration ist auch die Angabe /dev/dvd möglich – beide Namen verweisen als symbolische Links auf die tatsächliche Gerätedatei des Laufwerks. Das jeweilige Medium muss dazu nicht eingehängt sein. Als Ziel bestimmen Sie einen frei wählbaren Dateinamen, optional mit der Dateiendung .iso. In der Ausgabe im Terminalfenster sehen Sie anschließend, ob der Vorgang erfolgreich war (Abbildung 2). Mit dem Kommando cmp, das zwei Dateien Bit für Bit miteinander vergleicht, können Sie zum Schluss überprüfen, ob dd alle Daten korrekt ausgelesen hat – erscheint keine Meldung, ist alles in Ordnung.

Abbildung 2: Mit dem Befehl “dd” erzeugen Sie in Windeseile ein ISO-Image von einer CD oder DVD. Als Quelle bestimmen Sie das Laufwerk (hier “/dev/dvd”) und als Ziel eine Datei (hier “ubuntu-dvd.iso”).
Tipp: Ein Texteditor für “less”
Mit dem Pager less betrachten Sie Textdateien auf der Konsole. Sie können zeilen- oder seitenweise in den Dateien blättern, vorwärts und rückwärts nach Begriffen suchen. Lesen Sie gerade mit less in einem Text und fällt Ihnen dort ein Fehler auf, müssen Sie das Programm nicht erst über [Q]+ beenden und in einem zweiten Schritt einen Texteditor starten, um die Datei zu bearbeiten. Stattdessen können Sie einfach [V] drücken, um den für die jeweilige Distribution festgelegte Standardeditor zu starten. Bei (K)Ubuntu ist das normalerweise nano, bei OpenSuse startet vim.
Gefällt Ihnen die Voreinstellung nicht, legen Sie einen alternativen Standardeditor fest. Um beispielsweise KWrite zum Favoriten zu erklären, setzen Sie die Umgebungsvariable EDITOR mit dem folgenden Kommando:
export EDITOR=/usr/bin/kwrite
Starten Sie nun im selben Terminal less neu und drücken Sie [V]. Jetzt sollte der Texteditor KWrite starten. Alternativ geben Sie hinter dem Gleichheitszeichen z. B. /usr/bin/vim, /usr/bin/gedit oder /usr/bin/kate ein. Sobald Sie den Texteditor verlassen, befinden Sie sich wieder im Pager less – mit aktualisierter Anzeige.
Bisher gilt die neue Wahl nur für das Terminal, in dem Sie den export-Befehl aufgerufen haben. Sobald Sie die laufende Shell beendet haben, vergisst das System sie wieder. Um sie dauerhaft zu machen, tragen Sie das komplette export-Kommando in die Datei ~/.bashrc ein und laden die veränderte Konfiguration über source ~/.bashrc.
Tipp: Source-Highlight: Farbe für “less”
Anders als viele Texteditoren zeigt der Pager less keine farblichen Hervorhebungen für Syntaxelemente von Konfigurationsdateien oder Quellcode an. Vermissen Sie diesen Komfort, können Sie ihn mit wenigen Schritten für less nachrüsten. Die folgende Schritt-für-Schritt-Anleitung zeigt, wie es geht:
-
- Installieren Sie unter (K)Ubuntu oder OpenSuse das Paket source-highlight über den Paketmanager der Distribution.
- Als Nächstes definieren Sie die Umgebungsvariable LESSOPEN, um einen Filter für die Eingabe einzurichten. Die Variable soll auf das Skript src-hilite-lesspipe.sh zeigen. Unter OpenSuse befindet es sich in /usr/bin:
export LESSOPEN='| /usr/bin/src-hilite-lesspipe.sh %s'
Unter (K)Ubuntu passen Sie den Pfad an, so dass er auf /usr/share/source-highlight/src-hilite-lesspipe.sh zeigt.
-
- Eine weitere Umgebungsvariable ist noch einzurichten: Definieren Sie für
lessdie Aufrufoption-R, die für die Farbdarstellung im Terminal sorgt:
- Eine weitere Umgebungsvariable ist noch einzurichten: Definieren Sie für
export LESS='-R'
- Probieren Sie nun, eine Konfigurationsdatei mit
lesszu öffnen, z. B. /etc/logrotate.conf. Der Pager hebt die Syntaxelemente nun farblich hervor (Abbildung 3).
Beachten Sie, dass die neuen Einstellungen wieder nur für die aktuelle Shell gelten. Wie im vorigen Tipp beschrieben, tragen Sie bei Gefallen die beiden export-Befehle in die Datei ~/.bashrc ein und laden die veränderte Konfiguration über source ~/.bashrc.

Abbildung 3: Im Teamwork mit “source-highlight” und dem Skript “src-hilite-lesspipe.sh” kann “less” Syntax-Highlighting wie ein Texteditor.
Glossar
- Umgebungsvariable
- Diese konfigurierbaren Variablen enthalten Einstellungen für Programme, Pfade zu Anwendungen usw. Die Shell weist vielen dieser Variablen beim Start Werte zu. Einige systemweite Einstellungen finden Sie in der Datei /etc/profile, persönliche gehören in die Datei ~/.bashrc oder ~/.profile.
