C'è un modo per seguire i link menzionati in una pagina man? Ad esempio, ecco la pagina man di ps
; come accedo al collegamento contrassegnato in rosso?
C'è un modo per seguire i link menzionati in una pagina man? Ad esempio, ecco la pagina man di ps
; come accedo al collegamento contrassegnato in rosso?
Risposte:
Le pagine man risalgono alla prima edizione di Unix . Mentre l' ipertesto era stato inventato, era ancora nella prima infanzia; la rete era lontana due decenni e il manuale era un vero libro stampato, spesso con un comando per pagina se si adattava (ecco perché venivano chiamati pagine).
Il formato utilizzato per le pagine di manuale si è evoluto in qualche modo da allora, ma la maggior parte delle pagine non sono realmente progettate per l'ipertesto e il man
programma predefinito non lo supporta (è solo un visualizzatore di testo semplice, con hack per supportare una formattazione di base). Esistono tuttavia programmi di visualizzazione delle pagine man che ricostruiscono alcuni collegamenti ipertestuali, principalmente collegamenti ad altre pagine man, che sono tradizionalmente scritte nel modulo in man(1)
cui si man
trova il nome della pagina man ed 1
è il numero di sezione :
Puoi sfogliare le pagine di manuale di diversi sistemi operativi, convertiti in HTML da man2html
o strumenti simili, su un numero di siti online, ad esempio:
Qualche tempo dopo che le pagine man sono diventate il formato di documentazione stabilito su unix e qualche tempo prima che fosse inventata la rete, il progetto GNU ha introdotto il formato di documentazione delle informazioni , più avanzato di man mentre si atteneva al semplice markup progettato per terminali di testo. La principale innovazione delle informazioni rispetto all'uomo era quella di avere una documentazione multi-pagina con collegamenti ipertestuali ad altre pagine. Le informazioni sono ancora il formato di documentazione preferito per i progetti GNU, sebbene la maggior parte delle pagine di informazioni siano generate da una fonte Texinfo (o talvolta altri formati) che possono anche generare HTML. Quando esiste la documentazione informativa per un programma, è spesso il manuale principale, mentre le pagine man contengono solo informazioni di base sugli argomenti della riga di comando.
M-x man
(e lo C-h v mode-name
è Man
): almeno in un aspetto, è superiore a WoMan
perché visualizza le tabelle ( screenshot ). Naturalmente, è anche hyperlink.
b
, in questo modo. Per un utente di quale paradigma di interfaccia potrebbe essere intuitivo?
page(N)
collegamenti in collegamenti ipertestuali. È stato abbastanza sorpreso che non sia stato menzionato nella risposta di Gilles in quella qualità.
Prima di tutto, non è un collegamento. È solo una sottolineatura. Le pagine man sono solo documenti di testo con un po 'di formattazione semplice che un terminale può gestire. La sottolineatura è solo un punto culminante, non vi è alcun "collegamento" coinvolto.
Il normale man
comando è solo un formattatore di testo. In effetti il man
comando non visualizza nemmeno il testo, man
ma formatta solo le informazioni memorizzate nel file della pagina man [1] e invia l'output formattato a un altro programma (di solito less
) che visualizza l'output formattato sullo schermo. Questi programmi di visualizzazione non hanno alcun concetto di collegamenti.
Ci sono alcuni lettori di documentazione speciale che potrebbero essere in grado di guardare alla formattazione in quel modo e fare un'ipotesi colta che un tale punto culminante potrebbe indicare che esiste una pagina man correlata che potrebbe essere tirata su e creare un collegamento, ma non lo so quali fanno. Forse pinfo
?
Se vuoi una formattazione simile al web con i collegamenti ipertestuali puoi trovare quasi tutte le pagine man di UNIX online con i collegamenti aggiunti. Prova a digitare man [anything]
su Google e quasi sicuramente ne otterrai uno nei primi due successi.
Nel caso del tuo esempio, l'evidenziazione visiva è un indizio del fatto che quello è un altro nome di programma che ha la sua pagina man che puoi facilmente estrarre. Prova man 1 top
. L'1 indica la sezione delle pagine man in cui cercare. Vedi questa domanda per una spiegazione delle sezioni: Cosa significano i numeri in una pagina man?
[1] Se apri il man
file di paging in un editor di testo, vedrai la man
pagina non formattata per una facile lettura. La man
pagina non elaborata è scritta in un linguaggio di markup chiamato troff
. Per ulteriori informazioni troff
e su come scrivere una man
pagina, consultare: https://liw.fi/manpages/ .
man 1 top
?? Voglio dire, dovrebbe essere qualcosa del genere ps 1 top
perché ho trovato il link nella pagina man di ps
. "man 1 top" non ha senso per me. Si prega di precisare.
top(1)
"collegamento", è necessario aprire top
la pagina di manuale dalla prima sezione. Per maggiori informazioni sulle sezioni vedi man (1). ps 1 top
non ha alcun senso, dal momento che eseguirai il ps
comando con alcuni parametri strani.
readlink
appare nella sezione 1 e nella sezione 2 e printf
nelle sezioni 1 e 3. Se digiti man command
, man cerca le sezioni in ordine numerico e visualizza il primo che trova, oppure puoi essere specifico con man # command
, che devi fare per ottenere la documentazione per la readlink
chiamata di sistema.
Questa è una risposta molto tardi, ma usa w3mman. w3mman è il cercapersone manuale del sistema di w3m.
https://linux.die.net/man/1/w3mman
Puoi provarlo installando il pacchetto w3m. Credo che questo pacchetto sia registrato nei repository software della maggior parte delle principali distribuzioni Linux / UNIX e Cygwin.
w3mman
viene inoltre fornito con l' w3m
installazione predefinita di Macports . È fantastico :) Grazie!
Vorrei provare a interpretare la tua domanda un po 'di più in un senso in cui provo a seguire il tuo flusso di lavoro. Ciò che probabilmente vorresti avere è una combinazione di tasti all'interno di una man
pagina che ti porta direttamente ai comandi sottolineati di cui stai leggendo. Quindi, non dover installare qualcos'altro, né aprire un'altra console e dimenticare l'esatta sintassi, ad esempio.
Questa soluzione più semplice è il punto esclamativo (se si utilizza less
per visualizzare le pagine man) e si desidera andare al sottolineato top
:
!man top
O
!man 1 top
Dovrai chiuderli tutti premendo q
più volte. Si noti inoltre che questo non funzionerà se LESSSECURE=1
impostato come variabile ambientale che verrebbe eseguito less
in modalità protetta e non consentirebbe di utilizzarlo !
. Ti dirà qualcosa come "Comando non disponibile".
Sebbene w3mman sia una soluzione per seguire i collegamenti, non usa tutto lo schermo (almeno su Ubuntu 12.10)
Preferisco usare:
$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'
aggiungi l'ultimo comando a ~ / .bash_aliases o uno script di avvio simile per ottenerlo in ogni sessione.
Il w3m -P è perché primo browser a hman è lynx o sensibile browser ma preferisco w3m
hman è uno strumento in bundle su html2man. Vedi questo
Se uscire con la conferma è fastidioso per te, per me è usare questo
In particolare per Ubuntu, c'è Yelp. È installato di default ed è di default in grado di visualizzare pagine di manuale, anche se l'invocazione per farlo, non è la stessa di quella del man
comando; un alias o una funzione di shell possono aggirare l'ultimo punto (dipende dalla shell).
yelp 'man:exit'
L'impostazione predefinita è una sezione in un modo che non conosco. Promemoria: per ottenere l'elenco delle sezioni per un argomento manuale, utilizzare whatis
, come in whatis exit
.
Per richiedere a Yelp di visualizzare una pagina di manuale da una sezione specifica, ad esempio 2, procedi come segue:
yelp 'man:exit(2)'
Problemi: yelp ha dei bug ed è pronto per ottenere più errori di output quando viene richiamato dalla riga di comando. Inoltre, un alias o una funzione shell personalizzata possono aiutare a reindirizzare tutti gli errori/dev/null
Come hanno detto, non è stato progettato per questo.
Puoi usare info man
e poi premere invio una volta che sei nella sezione VEDI ANCHE sul tuo oggetto.
info: leggi i documenti informativi
Ho un (paio) di hack.
Inseriscilo nel tuo ~ / .bashrc o nel tuo ~ / .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
}
Immagine dello schermo..
Asciinema ..
https://asciinema.org/a/130131
Adesso..
quando si digita man vim
, ad esempio, si aprirà questa pagina man in vim
man man vim
, per esempio, aprirà prima man
il manuale e dopo aver chiuso vim, aprirà vim
il manualequando premi K(che è la capitale k
) quando ti trovi in un'altra pagina man in fondo (la sezione VEDERE ANCHE ), passerai a questo manuale (purtroppo all'interno di un cercapersone meno - questo è perché abbiamo let no_man_maps = 1
; se non lo fai fallo, allora vim costringerà q
ad esserlo :q
e non sarai in grado di registrare facilmente una macro, e vim potrebbe comportarti in modo strano in altri modi).
ottieni un'evidenziazione della sintassi molto carina poiché hai caricato ftplugin / man.vim e ft è (automaticamente) impostato su man
.
puoi copiare e incollare, navigare liberamente in vim e persino modificare il buffer e :w ~/usefulfile
. Puoi fare tutto ciò che normalmente faresti in vim, inclusi i record di macro, trascina negli appunti con "+y
(se hai +clipboard
), ecc. Ecc.
Lo trovo molto più bello di meno .
L'unica battuta d'arresto minore che ho trovato (che esiste ancora se usi meno come cercapersone) è se vuoi avere più manuali aperti in una sessione vim. Non vedo davvero un modo per farlo.
Alcune note:
se provi a salvare il buffer, otterrai E382: Cannot write, 'buftype' option is set
puoi ancora salvare come :w /tmp/man.man
.man
un'estensione, aprendolo imposterai il tipo di file man
per te.man
un'estensione, puoi semplicemente impostare ft man
eseguendolo:set ft=man
se devi fare delle cose quando apri le pagine man puoi usare autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
, per esempio.
Ho inserito quanto segue nel mio vimrc in modo da poter premere Kper provare ad aprire il manuale, quindi premere Gper tornare al manuale precedente:
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
mettilo nel tuo ~ / .bashrc o ~ / .zshrc
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
Immagine dello schermo..
Asciinema ..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
Questo risolve il problema che hackera 1 e meno faccia (ora puoi visualizzare più manuali in un buffer), ma è meno elegante.
Appunti:
IMPORTANTE se vuoi che hack2 funzioni, devi inserire il :let no_man_maps = 1
tuo ~/.vimrc
. Questo perché vim si procurerà .../vim80/man.vim
e q
verrà forzatamente rimappato :q
.
c'è più pulizia in gioco (ora memorizzi ogni manuale in /tmp/*.man )
ora puoi, tuttavia, visualizzare più pagine man in una sessione, come notato sopra
se premi K, aprirai comunque una nuova sessione di 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>"
o qualcosa di folle come quello ( non testato )Sono stato in grado di utilizzare l' --html
argomento per man
aprirlo nel browser definito dalla variabile d'ambiente $ BROWSER, quindi:
BROWSER=google-chrome man ps --help
Sto usando Fedora. Non sei sicuro che funzioni per la tua distribuzione, per favore prova e segnala nei commenti.
groff
deve essere installato. Il groff
comando potrebbe essere lì mentre il pacchetto con lo stesso nome non lo è (il comando viene fornito groff-base
, non il groff
pacchetto completo ). Lo faccio man --html="surf file%c//%s" <command>
, e va bene. Vi è però un ipertesto molto molto limitato: - /.
man is an interface to the on-line reference manuals
ciò (se non sbaglio) significa che dovrebbe essere in grado di estrarre tutte le informazioni da qualche pagina Web su Internet, giusto? Quindi, qualcuno ha la minima idea di cosa sia il link http: //?