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 xargs
und 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 locate
oder 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.
man man
man man
gelesenman intro
.Antworten:
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 Befehlless
odermore
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), wieman(1)
im Abschnitt "Optionen" erläutert:Unter FreeBSD und OpenBSD muss nur die
MANPAGER
Umgebungsvariable bearbeitet werden, da sie meistens verwendetmore
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
undmost
hat hier (nie benutztmost
). 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 vonvi
Bindungen jund k) durchführen können. Drücken Sie hwährend der Verwendungless
, 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:
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
oderapropos
(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 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:Lesen Sie immer die
DESCRIPTION
vor dem StartNehmen 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/bin/echo
. Dies gibt Ihnen einen kleinen Hinweis, dass Siexargs
zum Drucken kein Echo verwenden müssen , wenn Sie mehr als ein Element verketten müssen.-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 siefind
unterstützt. Toll. Wir verwenden viel Fund mitxargs
.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 ansehenSYNOPSIS
, 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
oderNOTES
: 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 alsxargs
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
. DasSYNOPSIS
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: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:Nach der Suche werden
lname
Sie jedoch feststellen, dass nur nach symbolischen Links gesucht wird. Wir wollen echte Dateien. Der nächste Eintrag: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:
-v
bedeutet wortreich.-vvv
ist eine "sehr, sehr ausführliche" Variante einiger Software.tar -xzvf
,cp -Rv
.-R
und / oder-r
bedeutet rekursiv.--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 istman
. 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 feststellenman(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:
-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.cat file.txt
, ist der Operand eine Datei in Ihrem aktuellen Verzeichnis, auf der der Inhalt angezeigt wirdSTDOUT
.ls
ist ein Befehl, bei dem ein Operand optional ist. Die drei Punkte nach dem Operanden weisen implizit darauf hin, dasscat
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?
and
,to
,for
in den manpageslftp
(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 desperl Mail::IMAPClient
Moduls erstellte.Sie müssen diese spezifischen Hilfeseiten mithilfe von
man -k
oder online suchen. Beispiele:... Tonnen von anderem Zeug hier, mit Abschnitten wie einer regulären Manpage ...
Mit Python:
Oder die
help()
Funktion in der Python-Shell, wenn Sie weitere Details zu einem Objekt lesen möchten:Bonus: Der
wtf
Befehl kann Ihnen bei der Eingabe von Akronymen behilflich sein und funktioniert so, alswhatis
ob kein Akronym in der Datenbank gefunden wird. Was Sie jedoch suchen, ist Teil der Man-Datenbank. Unter Debian ist dieser Befehl Teil desbsdgames
Pakets. Beispiele:quelle
man find | grep ...
. Ich magman command | sed -n '/^[[:space:]]*-/,/^$/p'
man
?" Sein. Danke und gut gemacht.man
Seite natürlich.Das ist ganz schön erklärt in
man man
: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
:In anderen Fällen ist es nutzlos, wenn Sie nicht bereits wissen, wie der betreffende Befehl verwendet wird. Zum Beispiel
man dd
:Machen Sie sich also keine Sorgen, wenn Sie die Zusammenfassung nicht erhalten. Das ist normal. Lesen Sie die Manpage selbst.
quelle
Einige Grundlagen zum Verständnis der Übersicht
[foo]
optionales Argument oder einen optionalen Parameter.[foo [ bar ] ]
Syntax verwendet wird, können Sie foo verwenden und Balken hinzufügen.[ -S size ]
, die angeben, dass das -S-Argument auf eine obligatorische Größe wartet.Zum Beispiel :
foo [-S size ] filename ...
meint
foo
-S
kann verwendet werden, muss angegeben werdensize
(Name gibt einen Hinweis)filename
(dies gibt Ihnen auch einen Hinweis, sieheman mkdir
)...
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 size
geht es).quelle
man
Seiten werden normalerweise mitless
heutzutage 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
-I
und 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
.quelle
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
Sie benötigen Informationen nicht nur zu,
xargs
sondern auch zubash
und[
(möglicherweise in dertest
Manpage). 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]]
wasbash
und alles danach. Dann würden Sie auf diebash
Manpage verweisen, was-c
tut, etc.quelle
Ergänzend zu den bereits gegebenen tollen Antworten:
1) Wenn Sie in einem Gnu Dienstprogramm interessiert sind, insbesondere solche , wie
sed
undgrep
, manchmal, die unter Verwendung voninfo
Befehl wird eine stark erweiterte Version der Befehlsinformation aufzuzurufen.sed
Es 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ügenhowto
,examples
odertutorial
. 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
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.
quelle
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.
quelle
Es gibt zwei nützliche Tools, um mehr über die Linux-Befehle zu erfahren:
cheat
zeigt die häufig verwendete Option für eine Befehlszeile an. Sie können auch eigene hinzufügencommand + option
, diecheat
für einen bestimmten Befehl angezeigt werden .bropages
Das 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 wurdebro thanks
. Der Befehl "Muss gewählt werden" wird oben auf derbro
Seite angezeigt.quelle
Ich schlage
tldr
vor, 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.quelle
> 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 ( )
locate
auf 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.
quelle
Um nach bestimmten Befehlen in einer Manpage zu suchen, können Sie Folgendes verwenden:
Um nach Schaltern zu suchen (zum Beispiel
-n
), müssen Sie dies folgendermaßen tun:quelle