ManPages und der Textviewer less
Heute geht es um die eingebaute Systemdokumentation, aber auch um den Textviewer genannt less.
- Wie finde ich ein Kommando für eine Aufgabe?
- Wie finde ich Hilfe zu einem Kommando?
- Wie finde ich mich in der angezeigten Hilfe zurecht?
- Was kann ich mit dem Less Textviewer noch so anstellen?
Für den Anfänger an der Kommandozeile ist bereits das Auffinden des für eine Aufgabe nötigen Kommandos eine große Hürde. Man kann sich hier mit Literatur in Buchform oder einer Suche im Internet behelfen, meist ist das aber überhaupt nicht notwendig. Wenn man ein paar zentrale Kommandos kennt, so kann man zu vielen Themen genaue Hilfe auf dem System selbst finden.
Die beiden Kommandos die man dazu kennen sollte heißen:
- apropos
- man
Das Kommando apropos durchsucht die auf dem System installierte Dokumentation nach Schlüsselwörtern, die man dem Kommando übergibt. Damit lassen sich auch unbekannte Kommandos auffinden.
Das Kommando man sucht nach dem Kommando, das man man als Argument angibt und stellt die zugehörige Dokumentation gewöhnlich im Textviewer dar.
Beispiel - Wir wollen eine Datei kopieren, kennen aber das Kommando nicht:
root@primary:~# apropos copy cp (1) - copy files and directories cpgr (8) - copy with locking the given file to the password or group file cpio (1) - copy files to and from archives cppw (8) - copy with locking the given file to the password or group file dd (1) - convert and copy a file debconf-copydb (1) - copy a debconf database doveadm-copy (1) - Copy messages matching the given search query into another mailbox git-checkout-index (1) - Copy files from the index to the working tree install (1) - copy files and set attributes mysqlhotcopy (1) - a database backup program objcopy (1) - copy and translate object files rcp (1) - secure copy (remote file copy program) rsync (1) - a fast, versatile, remote (and local) file-copying tool scp (1) - secure copy (remote file copy program) ssh-copy-id (1) - use locally available keys to authorise logins on a remote machine x86_64-linux-gnu-objcopy (1) - copy and translate object files root@primary:~#
In der ersten Spalte steht das gefundene Kommando. In der zweiten Spalte ein Kurztext, der dieses Kommando beschreibt. Wie man sieht, gibt es viele Kommandos, welche sich mit kopieren im weiteren Sinn beschäftigen. Der aussichtsreichste Kandidat in der Liste ist aber cp. Also rufen wir die man Page für dieses Kommando auf:
root@primary:~# man cp
Beispiel man Page des Kommandos cp:
CP(1) User Commands CP(1) NAME cp - copy files and directories SYNOPSIS cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... DESCRIPTION Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too. ///Hier wurde die man Page gekürzt ///
AUTHOR Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering. REPORTING BUGS GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report cp translation bugs to <http://translationproject.org/team/> COPYRIGHT Copyright © 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO Full documentation at: <http://www.gnu.org/software/coreutils/cp> or available locally via: info '(coreutils) cp invocation' GNU coreutils 8.23 March 2015 CP(1)
Die man Page wurde gekürzt, der Übersichtlichkeit halber. Die man pages sind nach einem sehr ähnlichem Muster aufgebaut. In der Regel findet man im Kopf eine Kurzbeschreibung des Kommandos. Hier das mit dem Kommando Dateien und Verzeichnisse kopiert werden können. In diesem Bereich sucht das Kommando apropos nach dem eingegebenen Suchwort.
Es folgt der Abschnitt SYNOPSIS. Hier werden alle möglichen Arten des Kommandoaufrufs dargestellt. Die Frage wo muss ich welche Option in der Zeile platzieren wird hier beantwortet.
[OPTIONS] sind ein oder mehrere Schalter, die das Verhalten des cp Kommandos verändern. SOURCE... sind ein oder mehrere Dateien und Verzeichnisse. Wie man sehen kann sind keine Punkte hinter DEST. Es darf also nur ein Ziel angegeben werden.
Der Nächste Bereich der man Page ist DESCRIPTION. Hier wird nicht nur das Kommando detailiert beschrieben, sondern alle Optionen/Argumente die man dem Kommando übergeben kann und wie sie sich auswirken. Nicht alle Optionen muss man kennen, man kann sie ja jederzeit in der man Page nachlesen.
Die weiteren Bereiche beschreiben den Autor, das Copyright und Referenzen zu weiterführender Dokumentation. Jedes Kommando kann eine leicht unterschiedliche Struktur aufweisen, aber man findet stets eine SYNOPSIS und DESCRIPTION, die einem weiterhelfen.
Gefangen in der man Page
Für Anfänger kann der Aufruf einer man Page sich zu einem schwierigen Problem entwicheln: Wie kommt man da wieder raus?
Das man Programm ruft zur Darstellung auf der Kommandozeite in der Regel den Textviewer less auf. Dieser erwartet Tastendrücke als Kommandos. Das Kommando "q" wie "quit" sagt ihm, das er sich beenden soll.
Aber less kann noch mehr. Mit den Pfeiltasten kann man im Textdokument herauf und herunter laufen. Wenn man alle Kommandos sehen möchte, die less unterstützt, so drückt man die Taste "h".
Es erscheint die folgende Hilfeseite:
SUMMARY OF LESS COMMANDS
Commands marked with * may be preceded by a number, N.
Notes in parentheses indicate the behavior if N is given.
A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
h H Display this help.
q :q Q :Q ZZ Exit.
---------------------------------------------------------------------------
MOVING
e ^E j ^N CR * Forward one line (or N lines).
y ^Y k ^K ^P * Backward one line (or N lines).
f ^F ^V SPACE * Forward one window (or N lines).
b ^B ESC-v * Backward one window (or N lines).
z * Forward one window (and set window to N).
w * Backward one window (and set window to N).
ESC-SPACE * Forward one window, but don't stop at end-of-file.
d ^D * Forward one half-window (and set half-window to N).
u ^U * Backward one half-window (and set half-window to N).
ESC-) RightArrow * Left one half screen width (or N positions).
ESC-( LeftArrow * Right one half screen width (or N positions).
F Forward forever; like "tail -f".
r ^R ^L Repaint screen.
R Repaint screen, discarding buffered input.
---------------------------------------------------
Default "window" is the screen height.
Default "half-window" is half of the screen height.
---------------------------------------------------------------------------
SEARCHING
/pattern * Search forward for (N-th) matching line.
?pattern * Search backward for (N-th) matching line.
n * Repeat previous search (for N-th occurrence).
Die Hilfe geht über mehr als eine Bildschirmseite. Man kann auch hier mit den Pfeiltasten durch die Hilfe scrollen.
Interessante Kommandos:
g und G
Das kleine g springt zum Anfang zurück. Das große G springt ans Ende der Datei. Das ist vorallem bei Ansicht von Lofdateien sehr nützlich.
/Suchbegriff
Nach einem Text suchen. Der Suchtext muss hinter dem / Zeichen eingegeben werden. Achtung, Das Kommando erwartet eine Regular Expression, es werden also bestimmte Zeichen wie "{", "}" und "." werden interpretiert. Alle Fundstellen werden hervorgehoben.
?Suchbegriff
Suche wie mit / nur rückwärts durchs Dokument.
n
Den nächsten Fundort anspringen. Springt bei / vorwärts und mit ? rückwärts zur nächsten Stelle.