I w końcu dość, gdy chcemy czytać o bash „ów read
i jest to -s
opcja z man bash
. W końcu znalazłem właściwe miejsce (około linii 4500), ale jak zwykle frustrujące, ponieważ zarówno wyszukiwania , jak /read
i /\s-s\s
wyszukiwania mają zbyt wiele dopasowań.
Pytanie brzmi: w jaki sposób mogę efektywnie czytać długie strony podręcznika lub uzyskiwać te same informacje na inne sposoby, lokalnie ? Jako konkretny przykład, jak dotrzeć do odpowiedniej dokumentacji po obejrzeniu read -s pwd
w skrypcie powłoki? Dobrą odpowiedzią może być fragment skryptu powłoki lub wskazówka na temat jakiegoś narzędzia i sposobu jego użycia lub czegoś zupełnie innego, o ile pomaga w znalezieniu odpowiedniego miejsca do czytania.
Uwaga: nie otagowałem bash ponieważ chcę, aby pytanie dotyczyło ogólnie czytania strony podręcznika, mimo że całkiem możliwe, że jest to najczęściej spotykana obszerna strona podręcznika.
man
stronę, używam małego skryptu, zostawiam na górnym panelu. yuugian.com/demo/gkman.txt Udostępnij i ciesz siębash
samego siebie: tak jak ty, ja również najbardziej potrzebuję tejSHELL BUILTINS
części instrukcji, która ma około linii 3500 . Więc wiedząc o tym, następnym razem po prostu powiem,man bash
a potem zejdę o 66 procent, pisząc66%
, a potem kilka razy PgDn i już tam jestem. Chociaż wybrałem 66, ponieważ można ją zapamiętać jako „Route 66” , w rzeczywistości jest to coś więcej, choć nie jest tak łatwe do zapamiętania, chyba że jest to początek numeru telefonu itp. :) Przynajmniej „Route 66” „jest uniwersalny i znany na całym świecie.Odpowiedzi:
Aby szybko uzyskać pomoc dotyczącą wbudowanego Bash, użyj
help
:jest tym, czego chcesz.
Aby uzyskać formatowanie przypominające stronę podręcznika, użyj
lub nawet lepiej
Jeśli nadal upierasz się, aby poszukać go na stronie podręcznika, znajdę to, co szybko prowadzi mnie do wyjaśnienia polecenia
Działa to, ponieważ po pierwszym wyjaśnieniu polecenia jego nazwa jest nieco wcięta od początku wiersza. W konkretnym przypadku
read
przeglądanie zajmuje trochę czasu, zanim przejdziesz do faktycznegoread
dokumentacji ponieważ (z oczywistych powodów) słowo „czytaj” jest często powtarzane na całej stronie podręcznika. [[] Oznacza dopasowanie do [, który zwykle poprzedza parametry opcjonalne. (Zwykle pomijam / ^ \ s * i po prostu robię / <wbudowane polecenie> [[])Kolejna alternatywa
Jeśli nie przeszkadza ci zmiana formatu, możesz przekonwertować swoją stronę podręcznika na plik DVI lub PDF:
lub
Oczywiście, biorąc pod uwagę dokument DVI lub PDF, możesz łatwo wyszukiwać tekst.
źródło
help
to świetnie, zastanawiam się, jak nigdy o tym nie słyszałem ...ps2pdf
nie jest to przydatne, ponieważ nie może (najwyraźniej) stworzyć żadnego rodzaju indeksu.Podejście 1
man bash
następnie/read \[
następnie/-s
Podejście 2
Możesz wypróbować narzędzie typu open source do wyjaśniania argumentów wiersza poleceń o nazwie wyjaśnia shell .
Można go używać lokalnie. Przeczytaj dokumentację na https://github.com/idank/explainshell
Ostrzeżenia: Zwykle działa, ale tylko z poleceniami znajdującymi się w repozytorium strony podręcznika Ubuntu
W twoim przypadku nie można rozpoznać
-s
przełączeniaread -s pwd
.Podejście 3
Znalazłem inne narzędzie, które wydaje się obiecujące, ale nie działa w moim systemie.
wyjaśnić: Krótka dokumentacja dla poleceń Uniksa
źródło
/-s\b
uniknąć trafień takich jak--some-other-command
(wciąż szukając takich ciągów znaków-s,
, których nie uzyskałbyś, gdybyś szukał/-s
spacji).To, co zwykle robię w tym przypadku, to po prostu uruchomić
man
, wyszukaćSHELL BUILTIN COMMANDS
nagłówek, a następnie wyszukać wbudowane, tjjednak w bash możesz to zrobić
lub, w zależności od systemu, albo
Ogólnie mam do tego skrypt o nazwie
he
(„krótka pomoc”). Uruchomiłbyś to w ten sposób:źródło
desc
nahe
. github.com/mikelward/scripts/blob/master/heNie ma ogólnego sposobu wyszukiwania informacji na stronie podręcznika, podobnie jak ogólny sposób wyszukiwania informacji w książce. To zależy od tego, czego szukasz.
Gdy szukasz informacji na temat wbudowanej powłoki, możesz wyszukać wbudowaną wersję na początku linii, aby zapisać wcięcia, a następnie spację: wyszukaj
^ *read␣
(np. Typ/^ *read␣
Enter) (␣
jest spacją). Działa to z dash, pdksh, mksh i bash. Strona podręcznika Zsh jest podzielona, więc musisz przeczytaćzshbuiltins
stronę podręcznika . Ksh93 ma specjalne symbole przed nazwami niektórych wbudowań, których należy szukać^ *†*␣
w UTF-8 lub^ *-*␣
w ASCII. Istnieje kilka fałszywych wyników pozytywnych, ale szybko dojdziesz do właściwej linii. Wyszukiwanie^ *read($| [-[])
zmniejsza liczbę fałszywych trafień.Możesz przyspieszyć wyszukiwanie, informując pager, gdzie chcesz się udać. Na przykład
PAGER='less "+/^ *read \["' man bash
otwiera stronę podręcznika bash w opisieread
wbudowanego. Możesz ustawić tę funkcję:źródło
mksh
podręcznej/ read
(dwie spacje, nazwa polecenia, jedna spacja) zwykle znajdują odpowiednie miejsce (jest to sztuczka, której sam używam i którą szybko piszę). Dziękuję za pytanie; Umieszczę (nieco) osobne odniesienia dla wszystkich narzędzi zawartych w mksh na moim TODO./ read
ma wiele fałszywych trafień, gdy implementacja man uzasadnia tekst.Aby przejść bezpośrednio do sekcji POLECENIA WBUDOWANYCH STRON na stronie podręcznika bash, definiuję w moim
$HOME/.bash_aliases
pliku następujący alias .źródło
Aby zaoferować inną alternatywę, jeśli wolisz korzystać z przeglądarki internetowej, która pozwala łatwo przeszukiwać bieżącą stronę, możesz użyć czegoś takiego man.cgi używany na freeBSD.org, który pozwala również przeglądać strony man z różnych systemów, aby zobaczyć, jak Różnią się. Widziałem podobne na innych stronach, więc spodziewaj się, że istnieją inne odmiany.
Link pomocy pod apropos zawiera informacje na temat kopiowania skryptu do umieszczenia na własnym serwerze z linkami do pobierania kolekcji stron podręcznika.
źródło
Zacząłem tworzyć funkcję bash do tego celu. Ten fragment kodu można na przykład wkleić na końcu
~/.bashrc
:Komentarze wyjaśniają trochę o tym, co robi. Domyślny ciąg wyszukiwania w szczególności wyszukuje dane słowo od początku wiersza, pomijając początkową spację. Przykłady:
Uwaga: w tym skrypcie nie ma pojęcia o sekcjach strony man ... Zobaczę, czy poprawię to później, ale ustawienie
MANSECT
zmiennej środowiskowej man pomaga.źródło
trap 'rm -f "$tmp"'
man "$1" | vim -R - "+/$2"
zrobiłbym czegoś podobnego?$2
, więc nie.trap
. Nie znalazłem jednak czystego sposobu na zrobienie tego w funkcji bez tworzenia podpowłoki.+/REGEX
Zestawiając fragmenty z innej dyskusji tutaj, oto szybka funkcja, którą możesz zostawić w swoim,
.bashrc
która przeniesie cię bezpośrednio do wbudowanego (jeśli istnieje). W przeciwnym razie otwiera sięman
normalnie:źródło
Z dowolnej dystrybucji Linuksa powinieneś być w stanie użyć,
info bash
jeśli chcesz mieć osobne akapity według rodzaju akcji, w których informacje są identyczne jak strony podręcznika man.źródło