Shell-Tipps und -Tricks

Die Linux-Konsole im Griff

28.01.2016 von David Wolski
Man-Pages zu Kommandozeilen-Tools und Befehlen sind meist extra trocken, wirken im PDF-Reader aber schon weniger abschreckend. SSH springt mit Dressur eine Rolle rückwärts durch die Firewall.

Dokumentation

Man-Pages als PDF lesen
Kommandozeilen-Befehle und Tools liefern unter Linux ihre eigene Dokumentation mit. Diese „man pages“ genannten Handbuchseiten liefern in der Shell mit dem Befehl man [Befehl/Tool]viel Text und Anwendungsbeispiele, um die Verwendung eines Befehls und dessen Optionen sowie Parameter zu erläutern. Bei vielen Seiten lohnt es sich aber, den Text in Ruhe anzugehen.

TIPP: Zuerst sollten Sie sicherstellen, dass die verwendete Distribution auch alle deutschsprachigen Man-Pages bietet. Viele Systeme lassen diesen Teil der Dokumentation nämlich weg, um Platz zu sparen. Bei Ubuntu/Mint, Debian installieren Sie das Paket „manpages-de“ nach und in Fedora „man-pages-de“, während für Open Suse das inoffizielle Repository ein passendes RPM-Paket nachliefert.

Umfangreiche Dokumentation im Terminal zu lesen, ist ermüdend: Viel besser sehen die Handbuchseiten in einem PDF-Reader aus, schwarz auf weiß und mit proportionalen Schriftarten. Dazu kann der Befehl manPostscript-Dateien erzeugen, die sich anschließend mit einem Reader wie Okular und Evince öffnen lassen:

man -t bash >bash.ps

Dieses Kommando erzeugt beispielsweise aus der Dokumentation zur Shell „Bash“ eine Postscript-Datei mit dem Namen „bash.ps“. Soll es stattdessen ein PDF sein, das sich dann auch bequem mit Apps auf Tablets und Smartphones lesen lässt, dann macht das Tool ps2pdf anschließend aus der Postscript-Datei ein PDF. Es ist ein Bestandteil des Pakets „ghostscript“ und bei den meisten Linux-Distributionen vorinstalliert. Mit einem knappen

ps2pdf bash.ps

erhalten Sie eine PDF-Datei mit dem Namen „bash.pdf“ im gleichen Verzeichnis.

Die Linux-Konsole im Griff
Foto: Sergey Nivens - shutterstock.com

Ubuntu/Debian

Programmversionen mit APT überprüfen
Der Paketmanager APT von Debian, der auch bei allen anderen großen DEB-basierten Distributionen zum Einsatz kommt, ist eines der schnellsten und komfortabelsten Werkzeuge zur Software-Verwaltung. Allerdings ist APT mit seinen Kommandos apt-getund apt-cacheauf Geschwindigkeit getrimmt und liefert keinen gigantischen Funktionsumfang. So gibt es keine direkte Möglichkeit, die Version eines Programms herauszufinden, die im Paket-Repository liegt.

TIPP: Mit einem Trick verrät APT auch ohne tatsächliche Installation eines Pakets dessen Versionsnummer: Mit dem Parameter -ssimuliert der Befehl apt-getalle Aktionen und zeigt deren Status an, lädt dabei aber keine Dateien herunter. Damit zeigt APT auch an, welche Pakete in welcher Version installiert werden:

apt-get -s install [Paketname]

In der Ausgabe dieses Befehls zeigen die letzten beiden Zeilen die Versionsnummer des Pakets an. Da es sich um eine Simulation handelt, bei der das System nicht verändert wird, brauchen Sie dazu keine root-Privilegien oder sudo.

Konfiguration

Wunsch-Editor einrichten: Eine Umgebungsvariable in der Datei „.bashrc“ legt fest, welcher Text-Editor in der Shell als Standard dienen soll.

Standard-Editor auf der Konsole
Wer mit unterschiedlichen Distributionen hantiert, merkt schnell, dass es bei den festgelegten Standardprogrammen auf der Konsole kleine, aber gravierende Unterschiede gibt: Ubuntu und Debian nutzen als Standard-Editor beispielsweise nano, Fedora dagegen setzt auf vim. Immer, wenn ein anderes Kommandozeilenprogramm einen Editor aufruft, etwa der Dateimanager Midnight Commander, oder crontab, kommt der festgelegte Standard-Editor zum Einsatz.

TIPP: Gerade vi und vim wirken auf Linux-Einsteiger wie Dinosaurier aus grauer Unix-Vorzeit, die sich anscheinend nur mit einem extra Finger an jeder Hand bedienen lassen. Den bevorzugten Standard-Editor in der Shell können Sie auf aber jedem Linux-System aber selbst festlegen – sofern mehrere installiert sind. Der einfachste Weg ist, dafür die benutzerspezifische Umgebungsvariable $EDITOR zu definieren. Der geeignete Ort für die Definition ist die Konfigurationsdatei „.bashrc“ im Home-Verzeichnis, in der Sie am Ende die Zeile

export EDITOR=[/Pfad/zum/Editor]

eintragen. Damit machen Sie den so eingetragenen Editor zum Shell-Standard. Für nano tragen Sie statt dem Platzhalter beispielsweise /usr/bin/nanoein. Beachten Sie, dass diese Einstellung immer für nur den jeweiligen Benutzer gültig ist. Um beispielsweise für root den Editor festzulegen, tragen Sie die Definition in der Datei „/root/. bashrc“ ein. Ein Spezialfall ist sudo, denn beim Ausführen von Programmen setzt sudo zunächst alle Umgebungsvariablen zurück. Damit auch sudoden Standard-Editor des Benutzers aus der Variablen $EDITOR übernimmt, starten Sie den Befehl mit diesem Parameter:

sudo -E [Befehl/Programme]

Mit Schalter -E berücksichtigt sudo die benutzerspezifischen Umgebungsvariablen.

SSH

Rolle rückwärts: Mit SSH bauen Sie zunächst einen Tunnel vom Server zum Client und kommen dann am Client auf dem Rückkanal zurück – auch auf Server hinter einer Firewall.

Umgekehrtes SSH: Durch die Firewall
Wenn Linux-Rechner im lokalen Netzwerk von außen über das Internet per SSH erreichbar sein sollen, ist eine Portfreischaltung und Portweiterleitung auf dem Router nötig. Im Heimnetzwerk ist das zwar mit etwas Konfigurationsaufwand verbunden, aber kein technisches Hindernis. Anders in Firmennetzwerken oder in öffentlichen WLANs: Eine Portweiterleitung ist dort meist nicht möglich, da diese ein Netzwerkadministrator einrichten müsste.

TIPP SSH (Secure Shell) in ein Protokoll mit Client-Server-Modell. Allerdings kann ein SSH-Tunnel die Rolle von Client und Server bei Bedarf auch vertauschen, wenn die Verbindung schon vorher mit einem geöffneten Rückkanal initiiert wird. Die Voraussetzung ist, dass sowohl ein SSH-Server auf dem Linux-System (Server) hinter der Firewall läuft und ebenfalls auf dem Linux-PC (Client), von dem später aus auf ersteres zugegriffen wird.

Zudem muss der Client von außen erreichbar sein, im Fall des heimischen Linux-PCs etwa über eine normale Portweiterleitung am Router. Vom Server aus bereiten Sie die Verbindung dann mit diesem Kommando vor:

ssh -R 1234:localhost:22 [Client]

Statt des Platzhalters „[Client]“ geben Sie die Internet-IP-Adresse oder den (dynamischen) Host-Namen des Clients an, über den später der Zugriff erfolgt. Später am Client können Sie die bereits aufgebaute SSH-Verbindung nutzen, um sich von dort aus zurück zum Server zu verbinden:

ssh benutzername@localhost -p 1234

Der benötigte Benutzername ist jener auf dem Server, und der hinter dem Parameter -p angegebene Port, hier beispielsweise 1234, ist der zuvor aufgebaute Rückkanal. Falls die Verbindung nach einer Zeit der Inaktivität automatisch abgebrochen wird, braucht SSH auf dem Server eine Ergänzung in der Konfigurationdatei „/etc/ssh/sshd_config“. Sorgen Sie dort dafür, dass dort die beiden Optionen

KeepAlive yes ServerAliveInterval 60

gesetzt sind.


(PC-Welt/ad)