Ich habe endlich satt zu wollen , wenn etwa lesen bash ‚s read
und die -s
Option mit man bash
. Ich habe irgendwann den richtigen Platz gefunden (um die Linie 4500), aber es war wie immer frustrierend, da beide /read
und sogar /\s-s\s
Suchanfragen viel zu viele Übereinstimmungen haben.
Die Frage ist also: Wie kann ich lange Manpages effizient lesen oder lokal auf andere Weise dieselben Informationen abrufen ? Wie kann man als konkretes Beispiel die relevante Dokumentation erreichen, nachdem man sie read -s pwd
in einem Shell-Skript gesehen hat? Eine gute Antwort könnte ein Shell-Skript-Snippet oder ein Hinweis auf ein Tool und dessen Verwendung sein, oder etwas ganz anderes, sofern dies dazu beiträgt, die richtige Stelle zum Lesen zu finden.
Hinweis: Ich bin nicht mit bash getaggt, weil ich möchte, dass die Frage das Lesen von Manpages im Allgemeinen betrifft, auch wenn dies möglicherweise die am häufigsten anzutreffende humongous Manpage ist.
man
Seite lesen muss, verwende ich ein kleines Skript, das ich in meinem oberen Bereich belasse. yuugian.com/demo/gkman.txt Teilen und genießenbash
selbst geht: Genau wie Sie brauche auch ich meistens denSHELL BUILTINS
Teil des Handbuchs, der sich in etwa in Zeile 3500 befindet . Wenn ich das wüsste, würde ich das nächste Mal einfach sagenman bash
und dann um 66 Prozent nach unten gehen, indem ich tippe66%
, dann ein paar Mal PgDn und ich bin da. Obwohl ich 66 gewählt habe, weil es als "Route 66" gespeichert werden kann , ist es tatsächlich ein bisschen mehr als das, obwohl es nicht so einfach zu speichern ist, es sei denn, es ist der Anfang Ihrer Telefonnummer usw. :) Zumindest die "Route 66" "ist universell und weltweit bekannt.Antworten:
Um schnell Hilfe zu einem Bash-Build zu erhalten, verwenden Sie
help
:ist was du willst.
Verwenden Sie für manpage-ähnliche Formatierungen
oder noch besser
Wenn Sie immer noch darauf bestehen, in der Manpage danach zu suchen, finde ich, was mich schnell zur Erklärung eines Befehls bringt
Dies funktioniert, da bei der ersten Erläuterung eines Befehls sein Name vom Zeilenanfang an leicht eingerückt wird. In diesem speziellen Fall
read
dauert es ein wenig, bis Sie zur eigentlichenread
Dokumentation gelangen, da das Wort "read" (aus offensichtlichen Gründen) in der gesamten Manpage häufig wiederholt wird. Das [[] bedeutet, ein [zu suchen, das normalerweise optionalen Parametern vorausgeht. (Ich lasse normalerweise / ^ \ s * aus und mache einfach / <eingebauter Befehl> [[])Eine andere Alternative
Wenn Ihnen die Formatänderung nichts ausmacht, können Sie Ihre Manpage in eine DVI- oder PDF-Datei konvertieren:
oder
Selbstverständlich können Sie bei einem DVI- oder PDF-Dokument problemlos eine Textsuche durchführen.
quelle
help
ist großartig, ich frage mich, wie ich noch nie davon gehört habe ...ps2pdf
ist nicht so nützlich, da es (anscheinend) keinerlei Index erzeugen kann.Ansatz 1
man bash
dann/read \[
dann/-s
Ansatz 2
Sie können ein Open-Source-Tool zum Erläutern von Befehlszeilenargumenten mit dem Namen explainhell ausprobieren .
Es kann lokal verwendet werden. Lesen Sie die Dokumentation unter https://github.com/idank/explainshell
Vorsichtsmaßnahmen: Funktioniert normalerweise, aber nur mit Befehlen, die im Manpage-Repository von Ubuntu enthalten sind
In Ihrem Fall kann es das
-s
Einschalten nicht erkennenread -s pwd
.Ansatz 3
Ich habe ein anderes Tool gefunden, das vielversprechend erscheint, aber auf meinem System nicht funktioniert.
Erklären Sie: Kurze Dokumentation für Unix-Befehle
quelle
/-s\b
Treffer wie vermeiden--some-other-command
(während Sie weiterhin Zeichenfolgen wie finden-s,
, die Sie nicht erhalten würden, wenn Sie/-s
mit einem Leerzeichen suchen ).Was ich in diesem Fall normalerweise mache, ist einfach auszuführen
man
, nach derSHELL BUILTIN COMMANDS
Überschrift zu suchen und dann nach der eingebauten zu suchen, d. HIn Bash können Sie jedoch tun
oder, je nach System, eines von
Im Allgemeinen habe ich ein Skript namens
he
("kurze Hilfe"), um dies zu tun. Sie würden es so ausführen:quelle
desc
inhe
. github.com/mikelward/scripts/blob/master/heEs gibt keinen generischen Weg, um Informationen in einer Manpage zu finden, ebenso wenig wie es einen generischen Weg gibt, um Informationen in einem Buch zu finden. Es kommt darauf an, wonach Sie suchen.
Wenn Sie nach Informationen zu einer eingebauten Shell suchen, können Sie am Anfang einer Zeile nach der eingebauten suchen, wobei der Einzug und ein Leerzeichen folgen müssen: Suchen nach
^ *read␣
(z. B. Typ/^ *read␣
Enter) (␣
ist ein Leerzeichen). Dies funktioniert mit dash, pdksh, mksh und bash. Die Manpage von Zsh ist aufgeteilt, sodass Sie diezshbuiltins
Manpage lesen müssen . Ksh93 hat spezielle Symbole vor den Namen einiger eingebauter Elemente, nach denen Sie^ *†*␣
in UTF-8 oder^ *-*␣
in ASCII suchen müssen . Es gibt ein paar Fehlalarme, die Sie jedoch schnell zur richtigen Linie bringen. Durch die Suche nach^ *read($| [-[])
wird die Anzahl der Fehlalarme verringert.Sie können die Suche beschleunigen, indem Sie Ihrem Pager mitteilen, wohin Sie möchten. Öffnet beispielsweise
PAGER='less "+/^ *read \["' man bash
die Bash-Manpage zur Beschreibung desread
eingebauten Moduls. Sie können dies zu einer Funktion machen:quelle
mksh
Manpage/ read
(zwei Leerzeichen, Befehlsname, ein Leerzeichen) wird normalerweise die richtige Stelle gefunden (dies ist ein Trick, den ich selbst verwende und den ich schnell eingebe). Danke, dass Sie danach gefragt haben. Ich werde (etwas) separate Referenzen für alle in mksh enthaltenen Dienstprogramme auf meinem TODO setzen./ read
neigt zu vielen Fehlalarmen, wenn die Implementierung Ihres Mannes den Text rechtfertigt.Um direkt zum Abschnitt SHELL BUILTINS COMMANDS der Bash-Manpage zu springen, definiere ich den folgenden Alias in meiner
$HOME/.bash_aliases
Datei.quelle
Um eine weitere Alternative anzubieten: Wenn Sie einen Webbrowser bevorzugen, mit dem Sie die aktuelle Seite leicht durchsuchen können, können Sie so etwas wie man.cgi von freeBSD.org verwenden, mit dem Sie auch Manpages von verschiedenen Systemen anzeigen können, um zu sehen, wie Sie unterscheiden sich. Ich habe ähnliche auf anderen Websites gesehen. Erwarten Sie also, dass es andere Variationen gibt.
Der Hilfelink unter apropos bietet einige Informationen, um eine Kopie des Skripts mit Links zum Herunterladen der Manpage-Sammlungen auf Ihren eigenen Server zu stellen.
quelle
Ich bin herumgekommen, um eine Bash-Funktion für diesen Zweck zu erstellen. Dieses Snippet kann zum Beispiel am Ende von eingefügt werden
~/.bashrc
:Kommentare erklären ein wenig, was es tut. Die Standardsuchzeichenfolge sucht insbesondere nach einem bestimmten Wort ab dem Zeilenanfang und überspringt dabei den Anfangsraum. Beispiele:
Hinweis: Dieses Skript hat kein Konzept für Manpage-Abschnitte ... Ich werde sehen, ob ich das später optimieren kann, aber das Festlegen der
MANSECT
Umgebungsvariablen von man hilft.quelle
trap 'rm -f "$tmp"'
man "$1" | vim -R - "+/$2"
etwas Ähnliches nicht tun?$2
, also nein.trap
. Ich habe jedoch keine saubere Möglichkeit gefunden, dies in einer Funktion zu tun, ohne eine Subshell zu erstellen.+/REGEX
Wenn Sie die Teile aus der anderen Diskussion hier zusammenstellen , können Sie eine schnelle Funktion in Ihrem übernehmen
.bashrc
, mit der Sie direkt zum eingebauten Gerät (falls vorhanden) gelangen. Ansonsten öffnet es sichman
wie gewohnt:quelle
In jeder Linux-Distribution sollten Sie die Möglichkeit
info bash
haben, separate Absätze nach Aktionstyp zu erstellen, bei denen die Informationen mit den Manpages identisch sind.quelle