Nun, dies ist meine ganz persönliche Art, Hilfeseiten zu lesen:
Der Manpager
Wenn Sie eine Manpage mit dem man
Befehl öffnen , wird die Ausgabe mit dem Befehl less
oder more
oder einem anderen Befehl, der als Ihr Pager (Manpager) festgelegt wird, angezeigt / gerendert .
Wenn Sie Linux verwenden, werden Sie wahrscheinlich mit Ihrer bereits konfigurierten man-Infrastruktur bedient /usr/bin/less -is
(es sei denn, Sie haben eine minimale Distribution installiert), wie man(1)
im Abschnitt "Optionen" erläutert:
-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable,
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.
Unter FreeBSD und OpenBSD muss nur die MANPAGER
Umgebungsvariable bearbeitet werden, da sie meistens verwendet more
wird und einige Funktionen wie Suchen und Hervorheben von Texten fehlen könnten.
Es gibt eine gute Antwort auf die Frage, welche Unterschiede more
, less
und most
hat hier (nie benutzt most
). Beim Durchsuchen von Hilfeseiten ist es wichtig , dass Sie einen Bildlauf rückwärts und seitenweise Spaceoder in beiden Richtungen zeilenweise mit ↓oder ↑(auch unter Verwendung von vi
Bindungen jund k) durchführen können. Drücken Sie hwährend der Verwendung less
, um die Zusammenfassung der verfügbaren Befehle anzuzeigen.
Und deshalb empfehle ich Ihnen, less
als Mann Pager zu verwenden. less
Einige wichtige Funktionen, die in dieser Antwort verwendet werden.
Wie wird ein Befehl formatiert?
Utility-Konventionen : Die Open Group Base-Spezifikationen Ausgabe 7 - IEEE Std 1003.1, Ausgabe 2013. Sie sollten diesen Link besuchen, bevor Sie versuchen, eine Manpage zu verstehen. Diese Online-Referenz beschreibt die Argumentensyntax der Standarddienstprogramme und führt in die in POSIX.1-2017 verwendete Terminologie ein, um die von den Dienstprogrammen verarbeiteten Argumente zu beschreiben. Dadurch werden Sie auch indirekt über die wahre Bedeutung von Wörtern wie Parametern, Argumenten, Argumentoptionen usw. informiert.
Der Kopf einer Manpage erscheint Ihnen weniger kryptisch, wenn Sie die Notation der Utility-Konventionen verstanden haben:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Denken Sie daran, was Sie tun möchten.
Wenn du deine Nachforschungen über xargs
dich anstellst, hast du das für einen bestimmten Zweck getan, oder? Sie hatten ein bestimmtes Bedürfnis, das darin bestand, die Standardausgabe zu lesen und Befehle basierend auf dieser Ausgabe auszuführen.
Aber wenn ich nicht weiß, welchen Befehl ich will?
Verwenden Sie man -k
oder apropos
(sie sind gleichwertig). Wenn ich weiß nicht , wie eine Datei zu finden: man -k file | grep search
. Lesen Sie die Beschreibungen und finden Sie eine, die Ihren Anforderungen besser entspricht. Beispiel:
apropos -r '^report'
bashbug (1) - report a bug in bash
df (1) - report file system disk space usage
e2freefrag (8) - report free space fragmentation information
filefrag (8) - report on file fragmentation
iwgetid (8) - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1) - report or set the keyboard mode
lastlog (8) - reports the most recent login of all users or of a given user
pmap (1) - report memory map of a process
ps (1) - report a snapshot of the current processes.
pwdx (1) - report current working directory of a process
uniq (1) - report or omit repeated lines
vmstat (8) - Report virtual memory statistics
Apropos arbeitet standardmäßig mit regulären Ausdrücken ( man apropos
lesen Sie die Beschreibung und finden Sie heraus, was -r
passiert). In diesem Beispiel suche ich nach jeder Manpage, deren Beschreibung mit "report" beginnt.
So suchen Sie nach Informationen zum Lesen der Standard-Eingabe- / Ausgabeverarbeitung und zum Erreichen xargs
einer möglichen Option:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Lesen Sie immer die DESCRIPTION
vor dem Start
Nehmen Sie sich Zeit und lesen Sie die Beschreibung. Wenn Sie nur die Beschreibung des xargs
Befehls lesen, erfahren Sie Folgendes:
xargs
liest aus STDIN und führt den benötigten Befehl aus. Dies bedeutet auch, dass Sie einige Kenntnisse darüber haben müssen, wie Standardeingaben funktionieren und wie Sie sie über Pipes zur Verkettung von Befehlen manipulieren
- Standardmäßig verhält es sich so
/bin/echo
. Dies gibt Ihnen einen kleinen Hinweis, dass Sie xargs
zum Drucken kein Echo verwenden müssen , wenn Sie mehr als ein Element verketten müssen.
- Wir haben auch erfahren, dass Unix-Dateinamen Leerzeichen und Zeilenumbrüche enthalten können, dass dies ein Problem sein kann und das Argument
-0
eine Möglichkeit darstellt, um zu verhindern, dass Dinge explodieren, indem Leerzeichen als Trennzeichen verwendet werden. Die Beschreibung warnt Sie, dass der als Eingabe verwendete Befehl auch diese Funktion unterstützen muss und dass GNU sie find
unterstützt. Toll. Wir verwenden viel Fund mit xargs
.
xargs
stoppt, wenn der Ausgangsstatus 255 erreicht ist.
Einige Beschreibungen sind sehr kurz und das liegt im Allgemeinen daran, dass die Software auf sehr einfache Weise funktioniert. Denken Sie nicht einmal daran, diesen Teil der Manpage zu überspringen ;)
Andere Dinge zu beachten ...
Sie wissen, dass Sie mit nach Dateien suchen können find
. Es gibt eine Menge Möglichkeiten und wenn Sie sich nur die ansehen SYNOPSIS
, werden Sie von diesen überwältigt sein. Es ist nur die Spitze des Eisbergs. Mit Ausnahme von " NAME
," SYNOPSIS
und " DESCRIPTION
haben Sie die folgenden Abschnitte:
AUTHORS
: die Personen, die den Befehl erstellt oder an dessen Erstellung mitgewirkt haben.
BUGS
: listet alle bekannten Mängel auf. Könnte nur Implementierungsbeschränkungen sein.
ENVIRONMENT
: Aspekte Ihrer Shell, die vom Befehl betroffen sein könnten, oder verwendete Variablen.
EXAMPLES
oder NOTES
: Selbsterklärend.
REPORTING BUGS
: Wen müssen Sie kontaktieren, wenn Sie Fehler in diesem Tool oder in dessen Dokumentation finden?
COPYRIGHT
: Person, die die Software erstellt hat, und Haftungsausschluss. Alles im Zusammenhang mit der Lizenz der Software selbst.
SEE ALSO
: Andere Befehle, Tools oder Arbeitsaspekte, die sich auf diesen Befehl beziehen und in keinen der anderen Abschnitte passen.
Im Abschnitt Beispiele / Hinweise finden Sie höchstwahrscheinlich interessante Informationen zu den Aspekten, die Sie von einem Tool erwarten.
Beispiel
Die folgenden Schritte werden find
als Beispiel angeführt, da die Konzepte "einfacher" sind als xargs
zu erläutern (ein Befehl findet Dateien und der andere befasst sich mit der Standard- und Pipeline-Ausführung anderer Befehlsausgaben). Tun wir einfach so, als wüssten wir nichts (oder nur sehr wenig) über diesen Befehl.
Ich habe ein spezifisches Problem, nämlich: Ich muss nach jeder Datei mit der .jpg
Erweiterung suchen und zwar mit 500 KB (KiB = 1024 Byte, üblicherweise Kibibyte genannt) oder mehr in der Größe in einem FTP-Serverordner.
Öffnen Sie zunächst das Handbuch: man find
. Das SYNOPSIS
ist schlank. Lassen Sie uns nach Dingen im Handbuch suchen: Geben Sie /plus das gewünschte Wort ein ( size
). Es werden viele Einträge indiziert -size
, die bestimmte Größen zählen. Stecken geblieben. Ich weiß nicht, wie ich mit "mehr als" oder "weniger als" einer bestimmten Größe suchen soll, und der Mann zeigt mir das nicht.
Probieren Sie es aus und suchen Sie den nächsten gefundenen Eintrag, indem Sie auf klicken n. OKAY. Haben Sie etwas interessant: find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Vielleicht zeigt uns dieses Beispiel, dass -size +100M
es Dateien mit 100 MB oder mehr findet. Wie könnte ich das bestätigen? Gehen Sie zum Kopf der Manpage und suchen Sie nach anderen Wörtern.
Versuchen wir es noch einmal mit dem Wort greater
. Durch Drücken von gelangen gwir zum Kopf der Manpage. /greater
, und der erste Eintrag ist:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Klingt gut. Dieser Block des Handbuchs scheint zu bestätigen, was wir vermutet haben. Dies gilt jedoch nicht nur für Dateigrößen. Sie gilt für alle n
auf dieser Hilfeseite enthaltenen Elemente (wie der Satz besagt: "Numerische Argumente können angegeben werden als").
Gut. Lassen Sie uns einen Weg nach Namen filtern finden: g /insensitive
. Warum? Unempfindlich? Wtf? Wir haben eine hypothetische FTP - Server, in dem „das andere OS“ Menschen einen Dateinamen mit Erweiterungen wie geben könnte .jpg
, .JPG
, .JpG
. Dies führt uns zu:
-ilname pattern
Like -lname, but the match is case insensitive. If the -L
option or the -follow option is in effect, this test returns
false unless the symbolic link is broken.
Nach der Suche werden lname
Sie jedoch feststellen, dass nur nach symbolischen Links gesucht wird. Wir wollen echte Dateien. Der nächste Eintrag:
-iname pattern
Like -name, but the match is case insensitive. For example, the
patterns `fo*' and `F??' match the file names `Foo', `FOO',
`foo', `fOo', etc. In these patterns, unlike filename expan‐
sion by the shell, an initial '.' can be matched by `*'. That
is, find -name *bar will match the file `.foobar'. Please note
that you should quote patterns as a matter of course, otherwise
the shell will expand any wildcard characters in them.
Toll. Ich muss nicht einmal nachlesen, um -name
zu sehen, dass -iname
die Groß- und Kleinschreibung dieses Arguments unwichtig ist. Stellen wir den Befehl zusammen:
Befehl: find /ftp/dir/ -size +500k -iname "*.jpg"
Was ist hier implizit: Das Wissen, dass der Platzhalter ?
"ein beliebiges Zeichen an einer einzelnen Position" und *
"null oder mehr eines beliebigen Zeichens" darstellt. Der -name
Parameter gibt Ihnen eine Zusammenfassung dieses Wissens.
Tipps, die für alle Befehle gelten
Einige Optionen, Mnemonics und "Syntaxstile" durchlaufen alle Befehle, sodass Sie Zeit sparen, wenn Sie die Hilfeseite überhaupt nicht öffnen müssen. Diese werden durch Übung erlernt und sind am häufigsten:
- Im Allgemeinen
-v
bedeutet wortreich. -vvv
ist eine "sehr, sehr ausführliche" Variante einiger Software.
- Nach dem POSIX-Standard können im Allgemeinen Argumente mit einem Gedankenstrich gestapelt werden. Beispiel:
tar -xzvf
, cp -Rv
.
- Im Allgemeinen
-R
und / oder -r
bedeutet rekursiv.
- Fast alle Befehle haben eine kurze Hilfe zu dieser
--help
Option.
--version
Zeigt die Version einer Software an.
-p
Wenn Dienstprogramme zum Kopieren oder Verschieben verwendet werden, werden die Berechtigungen beibehalten.
-y
bedeutet JA oder in den meisten Fällen "ohne Bestätigung fortfahren".
Beachten Sie, dass die obigen Aussagen nicht immer zutreffen. Beispielsweise kann der -r
Schalter für verschiedene Software sehr unterschiedliche Bedeutungen haben . Es ist immer eine gute Idee, zu überprüfen, ob ein Befehl gefährlich sein kann, aber dies sind übliche Standardeinstellungen.
Standardwerte von Befehlen.
Beim Pager-Teil dieser Antwort haben wir gesehen, dass dies less -is
der Pager von ist man
. Das Standardverhalten von Befehlen wird nicht immer in einem getrennten Abschnitt auf den Hilfeseiten oder in dem Abschnitt angezeigt, der am höchsten platziert ist.
Sie müssen die Optionen lesen, um die Standardeinstellungen zu ermitteln. Wenn Sie Glück haben, /pager
werden Sie durch Eingabe zu diesen Informationen geführt. Dazu müssen Sie auch das Konzept des Pagers (Software, mit der die Manpage gescrollt wird) kennen, und dies ist eine Sache, die Sie erst nach dem Lesen vieler Manpages erlernen.
Warum ist das so wichtig? Dies wird Ihre Wahrnehmung verbessern, wenn Sie beim Lesen man(1)
unter Linux ( less -is
Pager) oder FreeBSD Unterschiede im Bildlauf- und Farbverhalten feststellen man(1)
.
Und was ist mit der SYNOPSIS
Syntax?
Nachdem Sie alle für die Ausführung des Befehls erforderlichen Informationen erhalten haben, können Sie Optionen, Optionsargumente und Operanden inline kombinieren, um Ihre Aufgabe zu erledigen. Konzeptübersicht:
- Optionen sind die Schalter, die ein Befehlsverhalten vorgeben. " Tu das " " Tu das nicht " oder " Benimm dich so ". Oft Schalter genannt.
- Optionsargumente werden in den meisten Fällen verwendet, wenn eine Option nicht binär (ein / aus) ist, wie dies
-t
bei einem Mount der Fall ist, der den Typ eines Dateisystems angibt ( -t iso9660
, -t ext2
). " Mach das mit geschlossenen Augen " oder " füttere die Tiere, aber nur die Löwen ". Auch Argumente genannt.
- Operanden sind Dinge, auf die dieser Befehl einwirken soll. Wenn Sie verwenden
cat file.txt
, ist der Operand eine Datei in Ihrem aktuellen Verzeichnis, auf der der Inhalt angezeigt wird STDOUT
. ls
ist ein Befehl, bei dem ein Operand optional ist. Die drei Punkte nach dem Operanden weisen implizit darauf hin, dass cat
mehrere Operanden (Dateien) gleichzeitig bearbeitet werden können. Möglicherweise stellen Sie fest, dass einige Befehle festgelegt haben, welcher Operandentyp verwendet wird. Beispiel:cat [OPTION] [FILE]...
Verwandte Inhalte:
Wann funktioniert diese Methode nicht?
- Hilfeseiten ohne Beispiele
- Hilfeseiten, auf denen Optionen kurz erklärt werden
- Wenn Sie generische Begriffe wie
and
, to
, for
in den manpages
- Hilfeseiten, die nicht installiert sind. Es scheint offensichtlich zu sein, aber wenn Sie nicht
lftp
(und seine Hilfeseiten) installiert haben, können Sie nicht wissen, dass dies eine geeignete Option für einen anspruchsvolleren FTP-Client istman -k ftp
In einigen Fällen sind die Beispiele recht einfach und Sie müssen einige Befehle ausführen, um sie zu testen, oder im schlimmsten Fall Google.
Sonstiges: Programmiersprachen und ihre Module:
Denken Sie beim Programmieren oder Erstellen von Skripten daran, dass einige Sprachen über eigene Manpages-Systeme verfügen, z. B. perl
( perldocs
), Python ( pydocs
) usw., die spezifische Informationen zu Methoden / Funktionen, Variablen, Verhalten und andere wichtige Informationen zum Modul enthalten du versuchst zu benutzen und zu lernen. Dies war nützlich, als ich ein Skript zum Herunterladen ungelesener IMAP-E-Mails mithilfe des perl Mail::IMAPClient
Moduls erstellte.
Sie müssen diese spezifischen Hilfeseiten mithilfe von man -k
oder online suchen. Beispiele:
[root@host ~]# man -k doc | grep perl
perldoc (1) - Look up Perl documentation in Pod format
[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1) User Contributed Perl Documentation IMAPCLIENT(1)
NAME
Mail::IMAPClient - An IMAP Client API
SYNOPSIS
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => ’localhost’,
User => ’username’,
Password => ’password’,
Ssl => 1,
Uid => 1,
);
... Tonnen von anderem Zeug hier, mit Abschnitten wie einer regulären Manpage ...
Mit Python:
[root@host ~]# pydoc sys
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...
Oder die help()
Funktion in der Python-Shell, wenn Sie weitere Details zu einem Objekt lesen möchten:
nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
Bonus: Der wtf
Befehl kann Ihnen bei der Eingabe von Akronymen behilflich sein und funktioniert so, als whatis
ob kein Akronym in der Datenbank gefunden wird. Was Sie jedoch suchen, ist Teil der Man-Datenbank. Unter Debian ist dieser Befehl Teil des bsdgames
Pakets. Beispiele:
nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee... I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7) - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1) - systemd system and service manager