Wie verwende ich Manpages, um den Umgang mit Befehlen zu lernen?

92

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"

dass ich mehr darüber lernen wollte. Also lief ich man xargsund bekam 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, die Dokumentation zu verwenden, um mehr über Linux-Programme zu erfahren, aber dieser Abschnitt "Übersicht" ist für neue Benutzer einschüchternd. Es sieht buchstäblich wie Kauderwelsch im Vergleich zu man locateoder aus man free.

Soweit ich weiß, bedeuten eckige Klammern optionale und geschachtelte Klammern optionale Optionen. Aber wie soll ich damit einen gültigen Befehl auslösen?

Ich bitte hier nicht um Hilfe bei Xargs. Ich suche Hilfe beim Interpretieren einer Manpage, um komplizierte Befehle zu verstehen. Ich möchte aufhören, Google-indizierte Web-Blogs und persönliche Hilfe anderer zu meinem ersten Ansatz für das Erlernen von Linux-Befehlen zu machen.

user1717828
quelle
17
Lesen Sie die Manpage weiter. Im Abschnitt "OPTIONEN" werden alle im Abschnitt "ÜBERSICHT" verfügbaren Optionen erläutert.
John
7
Beginnen Sie mitman man
mikeserv
14
In den meisten Fällen gehen Sie direkt nach unten und suchen Sie nach einem Beispielabschnitt.
Teppic
9
Und durchsuchen Sie die Manpage nicht nur nach Stichwörtern. Wirklich lesen! Vermutlich seltsame Verhaltensweisen werden oft gut erklärt.
FloHimself
6
nach man mangelesen man intro.
mikeserv

Antworten:

102

Nun, dies ist meine ganz persönliche Art, Hilfeseiten zu lesen:

Der Manpager

Wenn Sie eine Manpage mit dem manBefehl öffnen , wird die Ausgabe mit dem Befehl lessoder moreoder 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 MANPAGERUmgebungsvariable bearbeitet werden, da sie meistens verwendet morewird und einige Funktionen wie Suchen und Hervorheben von Texten fehlen könnten.

Es gibt eine gute Antwort auf die Frage, welche Unterschiede more, lessund mosthat 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 viBindungen 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, lessals Mann Pager zu verwenden. lessEinige 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 xargsdich 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 -koder 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 aproposlesen Sie die Beschreibung und finden Sie heraus, was -rpassiert). 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 xargseiner möglichen Option:

man -k command| grep input
xargs (1)            - build and execute command lines from standard input

Lesen Sie immer die DESCRIPTIONvor dem Start

Nehmen Sie sich Zeit und lesen Sie die Beschreibung. Wenn Sie nur die Beschreibung des xargsBefehls lesen, erfahren Sie Folgendes:

  • xargsliest 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 xargszum 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 -0eine 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 findunterstü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," SYNOPSISund " DESCRIPTIONhaben 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.

  • EXAMPLESoder 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 findals Beispiel angeführt, da die Konzepte "einfacher" sind als xargszu 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 .jpgErweiterung 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 SYNOPSISist 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 +100Mes 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 nauf 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 lnameSie 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 -namezu sehen, dass -inamedie 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 -nameParameter 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 -vbedeutet wortreich. -vvvist 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 -Rund / oder -rbedeutet rekursiv.
  • Fast alle Befehle haben eine kurze Hilfe zu dieser --helpOption.
  • --version Zeigt die Version einer Software an.
  • -pWenn 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 -rSchalter 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 -isder 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, /pagerwerden 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 -isPager) oder FreeBSD Unterschiede im Bildlauf- und Farbverhalten feststellen man(1).

Und was ist mit der SYNOPSISSyntax?

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 -tbei 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. lsist ein Befehl, bei dem ein Operand optional ist. Die drei Punkte nach dem Operanden weisen implizit darauf hin, dass catmehrere 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, forin 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::IMAPClientModuls erstellte.

Sie müssen diese spezifischen Hilfeseiten mithilfe von man -koder 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 wtfBefehl kann Ihnen bei der Eingabe von Akronymen behilflich sein und funktioniert so, als whatisob kein Akronym in der Datenbank gefunden wird. Was Sie jedoch suchen, ist Teil der Man-Datenbank. Unter Debian ist dieser Befehl Teil des bsdgamesPakets. 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

quelle
Sie können auch tun man find | grep .... Ich magman command | sed -n '/^[[:space:]]*-/,/^$/p'
mikeserv
6
Jep. Du kannst. Ich habe nur angenommen, dass der Operator "noob" ist und versucht, mit
3
Diese Antwort muss das beste Ergebnis für "Wie nutze ich sie effektiv man?" Sein. Danke und gut gemacht.
user1717828
8
@nwildner, du verdienst eine Süßigkeit nach solch einer riesigen und gut formulierten Antwort. Gut gemacht!
Willian Paixao
6
Ich denke, das sollte zu Linux hinzugefügt werden. Als manSeite natürlich.
Myaut
38

Das ist ganz schön erklärt in man man:

   The following conventions apply to the SYNOPSIS section and can be used
   as a guide in other sections.

   bold text          type exactly as shown.
   italic text        replace with appropriate argument.
   [-abc]             any or all arguments within [ ] are optional.
   -a|-b              options delimited by | cannot be used together.

   argument ...       argument is repeatable.
   [expression] ...   entire expression within [ ] is repeatable.

Wie Sie daraus einen gültigen Befehl schreiben sollen, wissen Sie nicht. Die Zusammenfassung ist hilfreich, wenn Sie wissen, wie ein Befehl funktioniert. Es kann Ihnen helfen, Ihr Gedächtnis aufzufrischen. Um zu verstehen, wie der Befehl funktioniert, sollten Sie die Manpage lesen. Insbesondere die Beschreibung der Optionen und die Beispiele.

Manchmal reicht die Zusammenfassung. Zum Beispiel in man ls:

SYNOPSIS
       ls [OPTION]... [FILE]...

In anderen Fällen ist es nutzlos, wenn Sie nicht bereits wissen, wie der betreffende Befehl verwendet wird. Zum Beispiel man dd:

   dd [OPERAND]...
   dd OPTION

Machen Sie sich also keine Sorgen, wenn Sie die Zusammenfassung nicht erhalten. Das ist normal. Lesen Sie die Manpage selbst.

terdon
quelle
Vielen Dank für den Rat, insbesondere für den Absatz "Wie?".
user1717828
21

Einige Grundlagen zum Verständnis der Übersicht

  • jeweils ein [foo]optionales Argument oder einen optionalen Parameter.
  • Wenn [foo [ bar ] ]Syntax verwendet wird, können Sie foo verwenden und Balken hinzufügen.
  • Auf diese Weise werden obligatorische Optionsparameter verwendet [ -S size ], die angeben, dass das -S-Argument auf eine obligatorische Größe wartet.

Zum Beispiel : foo [-S size ] filename ...

meint

  • Befehl ist foo
  • optionaler Parameter -Skann verwendet werden, muss angegeben werden size(Name gibt einen Hinweis)
  • obligatorisches Argument ist filename(dies gibt Ihnen auch einen Hinweis, siehe man mkdir)
  • Mit elipsis ...können Sie mehrere Dateien verwenden.

Sie müssen die Manpage noch gründlich durchgehen, um die Option zu verstehen (in meinem obigen Beispielfall, worum -S sizegeht es).

Archemar
quelle
14

manSeiten werden normalerweise mit lessheutzutage angezeigt . Das macht es möglich, sie zu durchsuchen. Ich würde mich nicht um die Zusammenfassung kümmern, besonders nicht, weil Sie eine bestimmte Befehlszeile haben, die Sie verstehen möchten.

Drücken Sie die /und beginnen Sie zu tippen -Iund dann Enter. Der erste Treffer wird in der Inhaltsangabe angezeigt, der zweite ( nfür den nächsten verwenden) enthält die detaillierte Erklärung für -I.

Anthon
quelle
11

Ein wichtiger Punkt ist, dass Sie nicht nur nach einem Befehl im Handbuch suchen können, sondern auch nach Befehlen, die andere Befehle ausführen.

Für Ihren Beispielbefehl

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

Sie benötigen Informationen nicht nur zu, xargssondern auch zu bashund [(möglicherweise in der testManpage). Möglicherweise benötigen Sie auch Informationen zu Ihrer Shell (wahrscheinlich auch Bash) für die Anführungszeichenregeln, da Ihr Befehl eine komplexe Zeichenfolge in Anführungszeichen enthält. Ich kann Ihnen bereits sagen, dass das angeführte Argument falsch ist (und auf eine Weise falsch ist, die nur angezeigt wird, wenn Sie auf eine Datei mit Leerzeichen im Namen stoßen). das innere "{}"sollte wohl sein '{}'.

Sie würden sich also zuerst auf die xargs-Manpage beziehen und sehen, [-I replace-str]was -I {}bedeutet und [command [initial-arguments]]was bashund alles danach. Dann würden Sie auf die bashManpage verweisen, was -ctut, etc.

Random832
quelle
6

Ergänzend zu den bereits gegebenen tollen Antworten:

1) Wenn Sie in einem Gnu Dienstprogramm interessiert sind, insbesondere solche , wie sedund grep, manchmal, die unter Verwendung von infoBefehl wird eine stark erweiterte Version der Befehlsinformation aufzuzurufen. sedEs enthält beispielsweise einen detaillierten Abschnitt zum Schreiben regulärer Ausdrücke und einen weiteren Abschnitt mit einigen sehr komplexen Verwendungsbeispielen.

2) Es ist ein "Handbuch". Ein Handbuch soll Ihnen in erster Linie dabei helfen, sich an die Details von etwas zu erinnern, das Sie bereits verstanden haben. Es wurde so konzipiert, dass Sie die Details, die Sie benötigen, schnell abrufen und herauskommen können. (Und viel zu viele haben keine oder nur triviale Anwendungsbeispiele.)

Wenn ich etwas Neues, sogar ein kleines Merkmal eines Befehls lernen müssen , die mir nicht klar ist, dass ich auf die Bahn gehen und suchen die besten Keywords mit I (zB denken kann Linux xargs) und das Wort hinzuzufügen howto, examplesoder tutorial. Das ist sehr oft sehr produktiv.

Normalerweise verwende ich duckduckgo, weil meine Privatsphäre gewahrt bleibt. Wenn ich jedoch mehr Kontrolle über meine Suchanfragen benötige, verwende ich Google, weil ich festlegen kann, dass nur innerhalb einer Website gesucht oder nur Ergebnisse des letzten Jahres zurückgegeben werden sollen. (Es gibt viele weitere Optionen für die erweiterte Suche. Sie können sie bei Google suchen.;))

Noch ein Tipp:

Für Befehle, auf die ich häufig verweise, speichere ich die Manpage in einer Textdatei

man bash > bashman.txt

und lade diese Datei in ein anderes Fenster in meinem Texteditor, damit ich sie hin- und herblättern, kopieren und einfügen kann. Normalerweise ist die Datei schreibgeschützt, damit ich sie nicht versehentlich beschädige, sondern weil es meine ist persönliche Kopie, ich könnte sie auf jede gewünschte Weise bearbeiten, Tags hinzufügen, um einen Abschnitt leichter zu finden, oder sogar meine eigenen Notizen oder Beispiele hinzufügen.

Der einzige Nachteil dabei ist, dass die ursprüngliche Manpage möglicherweise aktualisiert wird und meine Kopie statisch ist.

Joe
quelle
4

Um eine schnelle Hilfe für Ihren speziellen Befehl zu erhalten, können Sie die Erklärungsshell verwenden . ZB dein Befehl . Nachdem Sie das erste Mal verstanden haben, wie dies funktioniert, sollten Sie mit Hilfeseiten fortfahren, wie andere Antworten empfehlen.

AvImd
quelle
2

Es gibt zwei nützliche Tools, um mehr über die Linux-Befehle zu erfahren:

  1. cheatzeigt die häufig verwendete Option für eine Befehlszeile an. Sie können auch eigene hinzufügen command + option, die cheatfür einen bestimmten Befehl angezeigt werden .
  2. bropagesDas Tool bietet ein Beispiel für eine Befehlszeile. Es ist möglich, ein eigenes Beispiel hinzuzufügen oder das angegebene Beispiel zu erhöhen / zu verringern, nachdem der Bestätigungscode übermittelt wurde bro thanks. Der Befehl "Muss gewählt werden" wird oben auf der broSeite angezeigt.
GAD3R
quelle
1

Ich schlage tldrvor, ein umfassendes Tool für Menschen gleich zu verwenden. Vereinfachte und Community-gesteuerte Manpages. In Ubuntu können Sie es über Snap installieren, aber es gibt auch Versionen für andere Distributionen. Es bietet Ihnen auch einige häufig verwendete Anwendungsbeispiele. 100% empfohlen.

José Castillo Lema
quelle
0

> Ich suche Hilfe beim Interpretieren einer Manpage, um komplizierte Befehle zu verstehen.

Ich denke, das ist das Missverständnis hier. Was Linux / UNIX so leistungsfähig macht, ist, dass Sie sehr lange und effektive Befehle erstellen können, indem Sie z. B. die Standardausgabe eines Befehls (hier ) durch eine Pipe ( ) locateauf die Standardausgabe eines anderen Befehls (hier ) umleiten . Wie Random832 richtig sagte, werden Sie daher keine einzige Manpage finden, die erklärt, was Ihr Beispielbefehl bewirkt.xargs|

Ich empfehle, dass Sie eine Linux-Shell-Skriptanleitung lesen. Das Advanced Bash-Scripting Guide ist ein ausgezeichnetes Dokument. Bitte lassen Sie sich davon nicht einschüchtern. Die Beherrschung von Linux erfordert Jahre und ist ein nie endender Prozess, aber Sie können die Grundlagen in angemessener Zeit erlernen.

Lesen Sie dann die Hilfeseiten, wenn Sie die Details eines bestimmten Befehls kennen müssen.

Sobald Sie den Kern der Sache verstanden haben, sollten Sie auch Commandlinefu und Bash One-Liners lesen, um gute Beispiele zu erhalten.

dr01
quelle
-1

Um nach bestimmten Befehlen in einer Manpage zu suchen, können Sie Folgendes verwenden:

man echo | grep output.

Um nach Schaltern zu suchen (zum Beispiel -n), müssen Sie dies folgendermaßen tun:

man echo | grep -- -n
subtleseeker
quelle