GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie verwendet man Manpages, um zu lernen, wie man Befehle verwendet?

Bei der Suche nach einem anderen Problem bin ich auf einen Befehl gestoßen,

locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"

über die ich mehr erfahren wollte. Also habe ich man xargs ausgeführt und erhalte die folgende Ausgabe:

XARGS(1)                    General Commands Manual                   XARGS(1)

NAME
       xargs - build and execute command lines from standard input

SYNOPSIS
       xargs  [-0prtx]  [-E  eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
       [-d delimiter] [--delimiter delimiter]  [-I  replace-str]  [-i[replace-
       str]]    [--replace[=replace-str]]   [-l[max-lines]]   [-L   max-lines]
       [--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s  max-
       chars]  [--max-chars=max-chars]  [-P max-procs] [--max-procs=max-procs]
       [--interactive]      [--verbose]      [--exit]      [--no-run-if-empty]
       [--arg-file=file]   [--show-limits]   [--version]   [--help]   [command
       [initial-arguments]]

DESCRIPTION
       This manual page documents the GNU version of xargs...

Ich versuche, besser darin zu werden, die Dokumentation zu verwenden, um etwas über Linux-Programme zu lernen, aber dieser Abschnitt „Zusammenfassung“ ist für neue Benutzer einschüchternd. Es sieht im Vergleich zu man locate buchstäblich wie Kauderwelsch aus oder man free .

Bisher verstehe ich, dass eckige Klammern optionale und verschachtelte Klammern optionale Optionen bedeuten. Aber wie soll ich damit einen gültigen Befehl herbeiführen?

Ich bitte hier nicht um Hilfe mit xargs. Ich suche Hilfe bei der Interpretation einer Manpage, um komplizierte Befehle zu verstehen. Ich möchte aufhören, von Google indizierte Webblogs und persönliche Hilfe von anderen zu meinem ersten Ansatz zum Erlernen von Linux-Befehlen zu machen.

Akzeptierte Antwort:

Nun, das ist meine ganz persönliche Art, Manpages zu lesen:

Der Manpager

Wenn Sie eine Manpage mit man öffnen Befehl wird die Ausgabe durch less angezeigt/gerendert oder more Befehle oder andere Befehle, die als Ihr Pager (Manpager) festgelegt werden.

Wenn Sie Linux verwenden, werden Sie wahrscheinlich mit Ihrer Man-Infrastruktur bedient, die bereits für die Verwendung von /usr/bin/less -is konfiguriert ist (es sei denn, Sie haben eine minimale Distribution installiert) als man(1) , erklären Sie im Abschnitt „Optionen“:

-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 lediglich der MANPAGER bearbeitet werden Umgebungsvariable, da sie meistens more verwenden , und einige Funktionen wie Suche und Texthervorhebung könnten fehlen.

Auf die Frage, welche Unterschiede more bestehen, gibt es eine gute Antwort , less und most habe hier(habe nie most verwendet ). Die Möglichkeit, mit Space seitenweise rückwärts und vorwärts zu scrollen oder in beide Richtungen per Zeile mit oder (auch mit vi Bindungen j und k ) ist beim Durchsuchen von Manpages unerlässlich. Drücken Sie h bei Verwendung von less um die Zusammenfassung der verfügbaren Befehle anzuzeigen.

Und deshalb empfehle ich Ihnen, less zu verwenden als Ihr Manpager. less haben einige wesentliche Funktionen, die während dieser Antwort verwendet werden.

Wie wird ein Befehl formatiert?

Utility-Konventionen:The Open Group Base Specifications Issue 7 – IEEE Std 1003.1, 2013 Edition. Sie sollten diesen Link besuchen, bevor Sie versuchen, eine Manpage zu verstehen. Diese Online-Referenz beschreibt die Argumentsyntax der Standarddienstprogramme und führt die Terminologie ein, die in POSIX.1-2017 verwendet wird, um die von den Dienstprogrammen verarbeiteten Argumente zu beschreiben. Dies wird Sie auch indirekt über die wahre Bedeutung von Wörtern wie Parameter, Argumente, Argumentoption … auf dem Laufenden halten.

Der Kopf jeder Manpage wird Ihnen weniger kryptisch erscheinen, nachdem Sie die Notation der Dienstprogrammkonventionen verstanden haben:

utility_name[-a][-b][-c option_argument]
    [-d|-e][-f[option_argument]][operand...]

Denken Sie daran, was Sie tun möchten.

Bei Ihren Recherchen zu xargs du hast es mit Absicht gemacht, oder? Sie hatten ein spezielles Bedürfnis, nämlich das Lesen der Standardausgabe und das Ausführen von Befehlen basierend auf dieser Ausgabe.

Aber wenn ich nicht weiß, welchen Befehl ich will?

Verwenden Sie man -k oder apropos (Sie sind gleichwertig). Wenn ich nicht weiß, wie ich eine Datei finden soll: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 ist tut), und in diesem Beispiel suche ich nach jeder Manpage, deren Beschreibung mit „report“ beginnt.

Um nach Informationen zu suchen, die sich auf das Lesen der Standard-Eingabe-/Ausgabeverarbeitung und das Erreichen von xargs beziehen als mögliche 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. Indem Sie einfach die Beschreibung der xargs lesen Befehl werden wir das lernen:

  • xargs liest von STDIN und führt den erforderlichen Befehl aus. Das bedeutet auch, dass Sie etwas wissen müssen, wie die Standardeingabe funktioniert und wie man sie durch Pipes manipuliert, um Befehle zu verketten
  • Das Standardverhalten ist, sich wie /bin/echo zu verhalten . Dies gibt Ihnen einen kleinen Tipp, wenn Sie mehr als ein xargs verketten müssen , müssen Sie Echo nicht zum Drucken verwenden.
  • Wir haben auch erfahren, dass Unix-Dateinamen Leerzeichen und Zeilenumbrüche enthalten können, dass dies ein Problem sein könnte und das Argument -0 ist eine Möglichkeit, zu verhindern, dass Dinge explodieren, indem Nullzeichen-Trennzeichen verwendet werden. Die Beschreibung warnt Sie, dass der als Eingabe verwendete Befehl diese Funktion ebenfalls unterstützen muss und dass GNU find unterstütze es. Toll. Wir verwenden viel find mit xargs .
  • xargs stoppt, wenn Exit-Status 255 erreicht ist.
Verwandte:Englisch lernen – Die Bedeutung, jemanden zurückzulassen [in amerikanischem Englisch]?

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, auf die Sie achten sollten…

Sie wissen, dass Sie mit find nach Dateien suchen können . Es gibt eine Menge Optionen und wenn Sie sich nur die SYNOPSIS ansehen , Sie werden von denen überwältigt werden. Es ist nur die Spitze des Eisbergs. Ausgenommen NAME , SYNOPSIS , und DESCRIPTION , haben Sie die folgenden Abschnitte:

  • AUTHORS :die Personen, die den
    Befehl erstellt oder bei der Erstellung unterstützt haben.

  • BUGS :listet alle bekannten Defekte auf. Könnten nur Implementierungseinschränkungen sein.

  • ENVIRONMENT :Aspekte Ihrer Shell, die von dem Befehl beeinflusst werden könnten, oder Variablen, die verwendet werden.

  • EXAMPLES oder NOTES :Selbsterklärend.

  • REPORTING BUGS :An wen Sie sich wenden müssen, wenn Sie Fehler in diesem Tool oder in seiner Dokumentation finden.

  • COPYRIGHT :Person, die die Software erstellt hat, und Haftungsausschlüsse. Alles im Zusammenhang mit der Lizenz der Software selbst.

  • SEE ALSO :Andere Befehle, Werkzeuge oder Arbeitsaspekte, die sich auf diesen Befehl beziehen und in keinen der anderen Abschnitte passen könnten.

Sie werden höchstwahrscheinlich interessante Informationen über die gewünschten Aspekte eines Tools im Bereich Beispiele/Anmerkungen finden.

Beispiel

Bei den folgenden Schritten nehme ich find als Beispiel, da seine Konzepte „einfacher“ sind als xargs zu erklären (ein Befehl findet Dateien und der andere befasst sich mit stdin und der Pipeline-Ausführung anderer Befehlsausgaben). Tun wir einfach so, als wüssten wir nichts (oder sehr wenig) über diesen Befehl.

Ich habe ein spezielles Problem, nämlich:Ich muss nach jeder Datei mit dem .jpg suchen Erweiterung und mit einer Größe von 500 KiB (KiB =1024 Byte, allgemein als Kibibyte bezeichnet) oder mehr in einem FTP-Serverordner.

Öffnen Sie zuerst das Handbuch:man find . Die SYNOPSIS ist schlank. Lassen Sie uns im Handbuch nach Dingen suchen:Geben Sie / ein plus das gewünschte Wort (size ). Es wird viele Einträge -size indizieren das zählt bestimmte Größen. 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 an.

Probieren Sie es aus und suchen Sie nach dem nächsten gefundenen Eintrag, indem Sie n drücken . OK. Etwas Interessantes gefunden:find ( -size +100M -fprintf /root/big.txt %-10s %pn ) . Vielleicht zeigt uns dieses Beispiel das mit -size +100M Es findet Dateien mit 100 MB oder mehr. Wie könnte ich das bestätigen? Zum Anfang der Manpage gehen und nach anderen Wörtern suchen.

Versuchen wir es noch einmal mit dem Wort greater . Drücken Sie g führt uns zum Anfang 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. Es scheint, dass dieser Block des Handbuchs bestätigt hat, was wir vermutet haben. Dies gilt jedoch nicht nur für Dateigrößen. Es gilt für jeden n die auf dieser Manpage zu finden sind (wie der Ausdruck schon sagte:„Numerische Argumente können angegeben werden als“).

Gut. Lassen Sie uns einen Weg finden, nach Namen zu filtern:g / insensitive . Wieso den? Unempfindlich? Was? Wir haben einen hypothetischen FTP-Server, auf dem die Leute „dieses anderen Betriebssystems“ einen Dateinamen mit Erweiterungen wie .jpg angeben könnten , .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.

Nachdem Sie jedoch nach lname gesucht haben Sie werden sehen, 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 brauche nicht einmal etwas über -name zu lesen um diesen -iname zu sehen ist die Groß-/Kleinschreibung-unabhängige Version dieses Arguments. Lassen Sie uns den Befehl zusammenbauen:

Befehl: find /ftp/dir/ -size +500k -iname "*.jpg"

Was ist hier implizit:Das Wissen, dass der Platzhalter ? steht für „jedes Zeichen an einer einzigen Position“ und * steht für „Null oder mehr eines beliebigen Zeichens“. Der -name Parameter gibt Ihnen eine Zusammenfassung dieses Wissens.

Tipps, die für alle Befehle gelten

Einige Optionen, Mnemonik und „Syntaxstil“ reisen durch alle Befehle, sodass Sie etwas Zeit gewinnen, indem Sie die Manpage überhaupt nicht öffnen müssen. Diese werden durch Übung erlernt und die häufigsten sind:

  • Im Allgemeinen -v bedeutet ausführlich. -vvv ist eine Variante „sehr sehr ausführlich“ bei manchen Softwareprogrammen.
  • Nach dem POSIX-Standard können im Allgemeinen Argumente mit einem Bindestrich gestapelt werden. Beispiel:tar -xzvf , cp -Rv .
  • Im Allgemeinen -R und/oder -r bedeutet rekursiv.
  • Fast alle Befehle haben eine kurze Hilfe mit --help Möglichkeit.
  • --version zeigt die Version einer Software an.
  • -p , auf Dienstprogramme zum Kopieren oder Verschieben bedeutet „Berechtigungen beibehalten“.
  • -y bedeutet in den meisten Fällen JA oder „ohne Bestätigung fortfahren“.

Beachten Sie, dass die oben genannten Punkte jedoch nicht immer zutreffen. Zum Beispiel das -r switch kann für unterschiedliche Software sehr unterschiedliche Bedeutungen haben. Es ist immer eine gute Idee, zu überprüfen und sicherzustellen, wann ein Befehl gefährlich sein könnte, aber dies sind übliche Standardeinstellungen.

Verwandte Themen:Englisch lernen – Wird „deine Zeit ist abgelaufen“ oft verwendet?

Standardwerte von Befehlen.

Im Pager-Teil dieser Antwort haben wir gesehen, dass less -is ist der Pager von man . Das Standardverhalten von Befehlen wird nicht immer in einem separaten Abschnitt auf Manpages oder im Abschnitt angezeigt, der am weitesten oben platziert ist.

Sie müssen die Optionen lesen, um die Standardeinstellungen herauszufinden, oder, wenn Sie Glück haben, / eingeben pager führt Sie zu diesen Informationen. Dazu müssen Sie auch das Konzept des Pagers kennen (Software, die durch die Manpages scrollt), und das werden Sie erst lernen, wenn Sie viele Manpages gelesen haben.

Warum ist das wichtig? Dies wird Ihre Wahrnehmung öffnen, wenn Sie beim Lesen von man(1) Unterschiede im Scroll- und Farbverhalten feststellen unter Linux (less -is Pager) oder FreeBSD man(1) zum Beispiel.

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 Arbeit zu erledigen. Übersicht der Konzepte:

  • Optionen sind die Schalter, die ein Befehlsverhalten diktieren. „Tu dies
    tu das nicht “ oder „so handeln “. Wird oft als Schalter bezeichnet.
  • Optionsargumente werden in den meisten Fällen verwendet, wenn eine Option nicht
    binär(ein/aus) ist wie -t on mount, das 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 reagieren soll. Wenn Sie cat file.txt verwenden , der Operand ist eine Datei in Ihrem aktuellen
    Verzeichnis, und ihr Inhalt wird auf STDOUT angezeigt . ls ist ein
    Befehl, bei dem ein Operand optional ist. Die drei Punkte nach dem Operanden
    sagen Ihnen implizit, dass cat kann gleichzeitig auf mehrere Operanden(Dateien)
    wirken. Sie werden vielleicht feststellen, dass einige Befehle festgelegt haben, welche Art von
    Operanden verwendet werden. Beispiel:cat [OPTION] [FILE]...

Verwandte Inhaltsangabe:

  • Zusammenfassung in der Manpage verstehen

Wann funktioniert diese Methode nicht?

  • Manpages ohne Beispiele
  • Manpages, auf denen Optionen eine kurze Erklärung haben
  • Wenn Sie generische Schlüsselwörter wie and verwenden , to , for innerhalb der Manpages
  • Manpages, die nicht installiert sind. Es scheint aber offensichtlich zu sein, wenn man lftp nicht hat (und seine Manpages) installiert haben, können Sie nicht wissen, ob dies eine geeignete Option als ein anspruchsvollerer FTP-Client ist, indem Sie man -k ftp ausführen

In einigen Fällen sind die Beispiele ziemlich einfach, und Sie müssen einige Ausführungen Ihres Befehls zum Testen oder im schlimmsten Fall zum Googlen durchführen.

Sonstiges:Programmiersprachen und ihre Module:

Wenn Sie programmieren oder nur Skripte erstellen, denken Sie daran, dass einige Sprachen ihre eigenen Manpage-Systeme haben, wie perl (perldocs ), python(pydocs ) usw. enthalten, die spezifische Informationen über Methoden/Funktionen, Variablen, Verhalten und andere wichtige Informationen über das Modul enthalten, das Sie verwenden und lernen möchten. Das war nützlich für mich, als ich ein Skript erstellte, um ungelesene IMAP-E-Mails mit dem perl Mail::IMAPClient herunterzuladen Modul.

Sie müssen diese spezifischen Manpages herausfinden, indem Sie man -k verwenden oder online suchen. Beispiele:

[[email protected] ~]# man -k doc | grep perl
perldoc              (1)  - Look up Perl documentation in Pod format


[[email protected] ~]# 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 normalen Manpage …

Mit Python:

[[email protected] ~]# 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 innerhalb der Python-Shell, wenn Sie weitere Details zu einem Objekt lesen möchten:

[email protected]:~$ 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: Das wtf Der Befehl kann Ihnen bei Akronymen helfen und funktioniert als whatis wenn kein Akronym in der Datenbank gefunden wird, aber das, was Sie suchen, Teil der Man-Datenbank ist. Unter Debian ist dieser Befehl Teil der bsdgames Paket. Beispiele:

[email protected]:~$ wtf rtfm
RTFM: read the fine/fucking manual
[email protected]:~$ wtf afaik
AFAIK: as far as I know
[email protected]:~$ wtf afak
Gee...  I don't know what afak means...
[email protected]:~$ wtf tcp
tcp: tcp (7)              - TCP protocol.
[email protected]:~$ wtf systemd
systemd: systemd (1)          - systemd system and service manager

Linux
  1. So verwenden Sie Bash-Verlaufsbefehle

  2. So verwenden Sie Grep-Befehle unter Linux oder FreeBSD

  3. Wie man Man Pages unter Linux effektiv nutzt

  4. Wie kann ich Alias-Befehle mit xargs verwenden?

  5. Wie erhalte ich unter Linux Manpages für C-Funktionen und nicht für Bash-Befehle?

So installieren Sie fehlende Manpages von Befehlen auf Ubuntu

Erfahren Sie, wie man Manpages effizient unter Linux verwendet

So zeigen Sie einen bestimmten Abschnitt in Manpages in Linux an

So installieren Sie Manpages in Alpine Linux

So verwenden Sie Linux-FTP-Befehle

Wie verwende ich den xargs-Befehl unter Linux?