Czy istnieje sposób na skorzystanie z linków wymienionych na stronie podręcznika? Na przykład, oto strona podręcznika dla ps
; jak uzyskać dostęp do linku oznaczonego na czerwono?
Czy istnieje sposób na skorzystanie z linków wymienionych na stronie podręcznika? Na przykład, oto strona podręcznika dla ps
; jak uzyskać dostęp do linku oznaczonego na czerwono?
Odpowiedzi:
Strony podręcznika sięgają do Unix First Edition . Chociaż wynaleziono hipertekst , wciąż był w powijakach; Internet był oddalony o dwie dekady, a podręcznik był rzeczywiście drukowaną książką, często z jednym poleceniem na stronę, jeśli pasowały (dlatego nazywano je stronami).
Od tego czasu format strony podręcznika ewoluował nieco, ale większość stron nie jest tak naprawdę zaprojektowana pod kątem hipertekstu, a domyślny man
program go nie obsługuje (jest to zwykła przeglądarka tekstu z hackami do obsługi podstawowego formatowania). Istnieją jednak strony człowiek oglądania programów, które odtworzyć niektóre hiperłączy, głównie linki do innych stron podręcznika, które są tradycyjnie napisany w formie man(1)
gdzie man
to nazwa strony człowieka i 1
jest numer sekcji :
Możesz przeglądać strony podręcznika kilku systemów operacyjnych, przekonwertowane na HTML przez man2html
lub podobne narzędzia, w wielu witrynach online, na przykład:
Jakiś czas po tym, jak strony podręcznika stały się ustalonym formatem dokumentacji dla Uniksa i jakiś czas przed wynalezieniem sieci, projekt GNU wprowadził format dokumentacji informacji , bardziej zaawansowany niż człowiek, przy jednoczesnym trzymaniu się prostych znaczników zaprojektowanych dla terminali tekstowych. Główną innowacją informacji w porównaniu do człowieka było posiadanie wielostronicowej dokumentacji z linkami do innych stron. Info jest nadal preferowanym formatem dokumentacji dla projektów GNU, chociaż większość stron Info jest generowanych ze źródła Texinfo (lub czasami innych formatów), które mogą również generować HTML. Gdy istnieje dokumentacja informacyjna programu, często jest to główna instrukcja, podczas gdy strony podręcznika zawierają tylko podstawowe informacje o argumentach wiersza poleceń.
M-x man
(i C-h v mode-name
jest Man
): przynajmniej w jednym aspekcie jest lepszy niż, WoMan
ponieważ wyświetla tabele ( zrzut ekranu ). Oczywiście jest również hiperlinkiem.
b
ten sposób kluczem podstawowym jest . Dla użytkownika, który paradygmat interfejsu może być intuicyjny?
page(N)
linki do hiperłączy. Byłem dość zaskoczony, że nie zostało wspomniane w odpowiedzi Gillesa w tej jakości.
Przede wszystkim nie jest to link. To tylko podkreślenie. Strony podręcznika to tylko dokumenty tekstowe z odrobiną prostego formatowania, które terminal może obsłużyć. Podkreślenie jest tylko atrakcją, nie ma w tym „linku”.
Normalne man
polecenie to tylko formatator tekstu. W rzeczywistości man
polecenie nawet nie wyświetla tekstu, man
po prostu formatuje informacje zapisane w pliku strony man [1] i wysyła sformatowane dane wyjściowe do innego programu (zwykle less
), który wyświetla sformatowane dane wyjściowe na ekranie. Te programy wyświetlające nie mają pojęcia łączy.
Istnieją pewne specjalne czytniki dokumentacji, które mogą być w stanie spojrzeć na takie formatowanie i zgadywać, że takie wyróżnienie może wskazywać, że istnieje powiązana strona podręcznika man, którą można podciągnąć i utworzyć link, ale nie wiem które robią. Być może pinfo
?
Jeśli chcesz formatować jak w Internecie za pomocą hiperłączy, możesz znaleźć prawie każdą stronę man UNIX online z dodanymi linkami. Spróbuj wpisać man [anything]
google, a prawie na pewno dostaniesz jedną z pierwszych kilku trafień.
W przypadku twojego przykładu, wizualne podświetlenie jest wskazówką, że jest to kolejna nazwa programu, która ma własną stronę podręcznika, którą możesz łatwo wyciągnąć. Spróbować man 1 top
. Liczba 1 wskazuje sekcję stron podręcznika, na które należy zajrzeć. Zobacz to pytanie, aby uzyskać wyjaśnienie części: Co oznaczają liczby na stronie podręcznika?
[1] Jeśli otworzysz man
plik strony w edytorze tekstu, zobaczysz surową man
stronę, która nie jest sformatowana do łatwego czytania. Nieprzetworzona man
strona jest napisana w języku znaczników o nazwie troff
. Więcej informacji na troff
temat pisania man
strony znajduje się na stronie: https://liw.fi/manpages/ .
man 1 top
? Powinno to być coś podobnego, ps 1 top
ponieważ znalazłem link na stronie podręcznika użytkownika ps
. „Man 1 top” nie ma dla mnie sensu. Proszę o wyjaśnienie.
top(1)
„linkiem”, musisz otworzyć top
stronę podręcznika z 1. części. Aby uzyskać więcej informacji o sekcjach, patrz man (1). ps 1 top
nie ma żadnego sensu, ponieważ po prostu uruchomisz ps
polecenie z dziwnymi parametrami.
readlink
pojawia się w sekcjach 1 i 2 oraz printf
w sekcjach 1 i 3. Jeśli po prostu wpiszesz man command
, man spróbuje sekcje w kolejności numerycznej i wyświetli pierwsze znalezione, lub możesz być konkretny man # command
, co musisz zrobić, aby uzyskać dokumentację dla readlink
wywołania systemowego
To jest bardzo późna odpowiedź, ale użyj w3mman. w3mman to ręczny pager systemowy autorstwa w3m.
https://linux.die.net/man/1/w3mman
Możesz spróbować, instalując pakiet w3m. Wierzę, że ten pakiet jest zarejestrowany w repozytoriach oprogramowania większości głównych dystrybucji Linux / UNIX i Cygwin.
w3mman
jest również dostarczany z domyślną w3m
instalacją Macports . To wspaniale :) Dzięki!
Pozwól, że spróbuję bardziej zinterpretować twoje pytanie w tym sensie, że staram się podążać za tobą. Prawdopodobnie chciałbyś mieć kombinację klawiszy na man
stronie, która prowadzi bezpośrednio do podkreślonych poleceń, o których czytasz. Nie trzeba więc instalować czegoś innego, nie otwierać innej konsoli i zapomnieć na przykład o dokładnej składni.
Najprostszym rozwiązaniem jest wykrzyknik (jeśli używasz less
do wyświetlania stron podręcznika) i chcesz przejść do podkreślonego top
:
!man top
Lub
!man 1 top
Będziesz musiał zamknąć je wszystkie, naciskając q
wiele razy. Zauważ też, że to nie zadziała, jeśli LESSSECURE=1
zostanie ustawione jako zmienna środowiskowa, która uruchomi się less
w trybie bezpiecznym i nie pozwoli na użycie !
. Powie ci coś w rodzaju „Polecenie niedostępne”.
Chociaż w3mman jest rozwiązaniem umożliwiającym śledzenie linków, nie używa całego ekranu (przynajmniej w Ubuntu 12.10)
Wolę używać:
$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'
dodaj ostatnią komendę do ~ / .bash_aliases lub podobnego skryptu startowego, aby uzyskać ją w każdej sesji.
-P w3m dlatego pierwsza przeglądarka hman jest ryś lub sensible-browser ale wolę w3m
hman to narzędzie dołączone do html2man. Zobacz to
Jeśli wyjście z potwierdzeniem jest dla ciebie denerwujące, to dla mnie skorzystaj z tego
Specjalnie dla Ubuntu istnieje Yelp. Jest instalowany domyślnie i domyślnie jest w stanie wyświetlać strony podręcznika, chociaż wywołanie w tym celu nie jest tym samym, co man
polecenie; Alias lub funkcja powłoki może działać wokół tego ostatniego punktu (zależy od powłoki).
yelp 'man:exit'
Domyślnie będzie to sekcja w sposób, którego nie znam. Przypomnienie: aby uzyskać listę rozdziałów na temat podręcznika, użyj whatis
, jak w whatis exit
.
Aby poprosić Yelp o wyświetlenie strony podręcznika z określonej sekcji, powiedzmy 2, wykonaj:
yelp 'man:exit(2)'
Problemy: yelp ma błędy i bądź przygotowany na otrzymanie wielu błędów wyjściowych podczas wywoływania go z wiersza poleceń. Tam również alias lub niestandardowa funkcja powłoki może pomóc w przekierowaniu wszystkich błędów/dev/null
Jak powiedzieli, nie został do tego zaprojektowany.
Możesz użyć, info man
a następnie nacisnąć Enter, gdy znajdziesz się w sekcji ZOBACZ TAKŻE na swoim produkcie.
info - przeczytaj dokumenty informacyjne
Mam (kilka) włamań.
Umieść to w swoim ~ / .bashrc lub ~ / .zshrc
function man(){
for arg in "$@"; do
vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
done
}
Zrzut ekranu..
Asciinema ..
https://asciinema.org/a/130131
Teraz..
man vim
na przykład podczas pisania otworzy się ta strona podręcznika w vim
man man vim
na przykład wpiszesz , najpierw otworzy man
instrukcję, a po wyjściu z vima, otworzy vim
instrukcjękiedy naciśniesz K(to kapitał k
), gdy znajdziesz się na innej stronie podręcznika u dołu ( sekcja ZOBACZ TAKŻE ), przejdziesz do tej instrukcji (niestety wewnątrz mniej pagera - let no_man_maps = 1
dzieje się tak dlatego, że mamy ; jeśli nie masz zrób to, wtedy vim zmusi q
do bycia :q
i nie będziesz w stanie łatwo zapisać makra, a vim może zachowywać się chwiejnie na inne sposoby).
dostajesz bardzo ładne podświetlanie składni, ponieważ załadowałeś ftplugin / man.vim, a ft jest (automatycznie) ustawiony na man
.
możesz kopiować i wklejać, swobodnie nawigować w vimie, a nawet modyfikować bufor i :w ~/usefulfile
. Możesz robić wszystko, co normalnie robisz w vimie, w tym makra nagrywania, szarpać do schowka za pomocą "+y
(jeśli masz +clipboard
) itp.
Uważam, że jest to o wiele ładniejsze niż mniej .
Jedynym drobnym problemem, który znalazłem (który nadal istnieje, jeśli używasz mniej jako pager) jest to, że chcesz mieć wiele instrukcji otwartych w jednej sesji vim. Naprawdę nie widzę sposobu, aby to zrobić.
Kilka uwag:
jeśli spróbujesz zapisać bufor, otrzymasz E382: Cannot write, 'buftype' option is set
nadal możesz zapisać jak :w /tmp/man.man
.man
rozszerzeniem, otwarcie go ustawi man
dla ciebie typ pliku.man
rozszerzeniem, możesz po prostu ustawić ft man
, uruchamiając:set ft=man
jeśli na przykład potrzebujesz zrobić coś podczas otwierania stron podręcznika użytkownika autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
.
W moim vimrc umieściłem następujące elementy, dzięki czemu mogę nacisnąć, Kaby spróbować otworzyć instrukcję, a następnie nacisnąć, Gaby wrócić do poprzedniej instrukcji:
augroup man
autocmd!
autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END
umieść to w swoim ~ / .bashrc lub ~ / .zshrc
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
Zrzut ekranu..
Asciinema ..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
To rozwiązuje problem włamania 1 i mniejszej twarzy (teraz możesz przeglądać wiele instrukcji w jednym buforze), ale jest mniej elegancki.
Uwagi:
WAŻNE jeśli chcesz hack2 do pracy, wówczas należy umieścić :let no_man_maps = 1
w twojej ~/.vimrc
. Wynika to z tego, że vim będzie pozyskiwał źródła .../vim80/man.vim
i q
zostanie do nich przymusowo mapowany :q
.
w grę wchodzi więcej sprzątania (teraz zapisujesz każdą instrukcję w /tmp/*.man )
możesz jednak teraz przeglądać wiele stron podręcznika w jednej sesji, jak wspomniano powyżej
jednak jeśli naciśniesz K, nadal otworzysz nową sesję vim
autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"
lub coś szalonego takiego ( nieprzetestowane )Byłem w stanie użyć tego --html
argumentu man
, aby otworzyć go w przeglądarce zdefiniowanej przez zmienną środowiskową $ BROWSER, więc:
BROWSER=google-chrome man ps --help
Używam Fedory. Nie jestem pewien, czy to działa w przypadku Twojej dystrybucji, przetestuj i zgłoś w komentarzach.
groff
musi zostać zainstalowany. groff
Komenda może być tam, gdy pakiet o tej samej nazwie nie jest (komenda wyposażony groff-base
, a nie pełnego groff
pakietu). Robię man --html="surf file%c//%s" <command>
i jest w porządku. Hipertekst jest jednak bardzo ograniczony: - /.
man is an interface to the on-line reference manuals
co (jeśli się nie mylę) oznacza, że powinno pobierać wszystkie informacje z jakiejś strony internetowej, prawda? Czyli ktoś ma pojęcie, co to jest link http: //?