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.