มีวิธีการติดตามลิงค์ที่กล่าวถึงในหน้าคน? ตัวอย่างเช่นนี่คือ man page สำหรับps
; ฉันจะเข้าถึงลิงค์ที่มีเครื่องหมายสีแดงได้อย่างไร
มีวิธีการติดตามลิงค์ที่กล่าวถึงในหน้าคน? ตัวอย่างเช่นนี่คือ man page สำหรับps
; ฉันจะเข้าถึงลิงค์ที่มีเครื่องหมายสีแดงได้อย่างไร
คำตอบ:
หน้าคนวันที่กลับไปใช้ระบบปฏิบัติการยูนิกซ์ฉบับพิมพ์ครั้งแรก ในขณะที่ไฮเปอร์เท็กซ์ถูกประดิษฐ์ขึ้นมันยังอยู่ในช่วงวัยเด็ก เว็บอยู่ห่างออกไปสองทศวรรษและคู่มือเป็นหนังสือที่พิมพ์จริงมักจะมีคำสั่งเดียวต่อหน้าถ้ามันพอดี (นั่นคือเหตุผลที่พวกเขาถูกเรียกว่าหน้า)
รูปแบบที่ใช้สำหรับหน้าคู่มือมีการพัฒนาค่อนข้างตั้งแต่นั้นมา แต่หน้าส่วนใหญ่ไม่ได้ออกแบบมาเพื่อไฮเปอร์เท็กซ์จริง ๆ และman
โปรแกรมเริ่มต้นไม่รองรับ (เป็นเพียงโปรแกรมดูข้อความธรรมดาพร้อมแฮ็คเพื่อรองรับการจัดรูปแบบพื้นฐานบางอย่าง) อย่างไรก็ตามมีโปรแกรมดูหน้าเว็บที่สร้างการเชื่อมโยงหลายมิติส่วนใหญ่เชื่อมโยงไปยังหน้าอื่น ๆ ซึ่งเขียนตามธรรมเนียมในรูปแบบman(1)
ที่man
เป็นชื่อของหน้าคนและ1
เป็นหมายเลขส่วน :
คุณสามารถเรียกดูหน้าคู่มือของระบบปฏิบัติการต่าง ๆ แปลงเป็น HTML โดยman2html
หรือเครื่องมือที่คล้ายกันในเว็บไซต์หลายแห่งทางออนไลน์เช่น
บางครั้งหลังจากที่หน้าคนได้กลายเป็นรูปแบบเอกสารจัดตั้งขึ้นเมื่อวันยูนิกซ์และเวลาก่อนที่เว็บถูกคิดค้นที่GNUโครงการแนะนำข้อมูลรูปแบบเอกสารที่ทันสมัยมากขึ้นกว่าคนในขณะที่เกาะมาร์กอัปง่ายๆที่ออกแบบมาสำหรับขั้วข้อความ นวัตกรรมที่สำคัญของข้อมูลเมื่อเทียบกับมนุษย์คือการมีเอกสารหลายหน้าพร้อมลิงค์เชื่อมโยงไปยังหน้าอื่น ๆ ข้อมูลยังคงเป็นรูปแบบเอกสารที่ต้องการสำหรับโครงการ GNU แม้ว่าหน้าข้อมูลส่วนใหญ่จะสร้างจากแหล่งTexinfo (หรือบางครั้งก็เป็นรูปแบบอื่น ๆ ) ที่สามารถสร้าง HTML ได้ เมื่อมีเอกสารข้อมูลของโปรแกรมอยู่มักเป็นคู่มือหลักในขณะที่ man page จะมีข้อมูลพื้นฐานเกี่ยวกับอาร์กิวเมนต์บรรทัดคำสั่งเท่านั้น
M-x man
(และC-h v mode-name
เป็นMan
): อย่างน้อยก็ในแง่มุมหนึ่งมันยอดเยี่ยมกว่าWoMan
เพราะมันแสดงตาราง ( สกรีน ) แน่นอนมันเชื่อมโยงหลายมิติเช่นกัน
b
โดยวิธีนั้น สำหรับผู้ใช้ที่กระบวนทัศน์อินเทอร์เฟซนี้อาจใช้งานง่าย?
page(N)
ลิงค์ใบ้เป็นไฮเปอร์ลิงก์ ค่อนข้างแปลกใจที่ไม่ได้กล่าวถึงในคำตอบของ Gilles ในคุณภาพนั้น
ก่อนอื่นมันไม่ใช่ลิงค์ มันเป็นแค่ขีดเส้นใต้ หน้าคนเป็นเพียงเอกสารข้อความที่มีการจัดรูปแบบเรียบง่ายเล็กน้อยที่เทอร์มินัลสามารถจัดการได้ ขีดเส้นใต้เป็นเพียงไฮไลต์ไม่มีส่วนเกี่ยวข้อง "ลิงก์"
man
คำสั่งปกติเป็นเพียงการจัดรูปแบบข้อความ ในความเป็นจริงman
คำสั่งไม่แม้แต่แสดงข้อความman
เพียงแค่จัดรูปแบบข้อมูลที่เก็บไว้ในไฟล์ man page [1]และส่งเอาต์พุตที่จัดรูปแบบไปยังโปรแกรมอื่น (ปกติless
) ซึ่งแสดงเอาต์พุตที่จัดรูปแบบแล้วไปยังหน้าจอ โปรแกรมแสดงผลเหล่านี้ไม่มีแนวคิดของลิงก์
มีผู้อ่านเอกสารพิเศษบางคนที่อาจดูการจัดรูปแบบเช่นนั้นและคาดเดาอย่างมีความรู้ว่าไฮไลต์ดังกล่าวอาจระบุว่ามีหน้าเว็บที่เกี่ยวข้องที่สามารถดึงขึ้นมาและสร้างลิงก์ได้ แต่ฉันไม่รู้ อันไหนทำ อาจจะpinfo
?
หากคุณต้องการเว็บเช่นการจัดรูปแบบด้วยไฮเปอร์ลิงก์คุณสามารถค้นหาหน้าเพจ UNIX ได้เกือบทุกออนไลน์พร้อมลิงค์ที่เพิ่มเข้าไปลองพิมพ์man [anything]
ลงใน google และคุณจะได้รับหนึ่งในการเข้าชมสองสามครั้งแรก
ในกรณีของคุณการเน้นภาพเป็นเงื่อนงำที่เป็นชื่อโปรแกรมอื่นที่มี man page ของตัวเองที่คุณสามารถดึงขึ้นมาได้อย่างง่ายดาย ลองman 1 top
ดู 1 บ่งบอกถึงส่วนของ man page ที่ควรดูดูคำถามนี้สำหรับคำอธิบายของหัวข้อ: ตัวเลขในหน้า man หมายถึงอะไร?
[1]หากคุณเปิดman
ไฟล์หน้าในโปรแกรมแก้ไขข้อความคุณจะเห็นman
หน้าเว็บดิบที่ไม่ได้จัดรูปแบบเพื่อให้อ่านง่าย ดิบหน้าจะเขียนในภาษามาร์กอัปที่เรียกว่าman
troff
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการtroff
และวิธีการเขียนman
ดูหน้านี้: https://liw.fi/manpages/
man 1 top
? ฉันหมายความว่ามันควรจะเป็นสิ่งที่ชอบเพราะผมพบว่าการเชื่อมโยงบนหน้าคนสำหรับps 1 top
ps
"ผู้ชาย 1 คน" ไม่สมเหตุสมผลกับฉัน กรุณาชี้แจง
top(1)
"ลิงค์" คุณจะต้องเปิดtop
หน้าคู่มือจากส่วนที่ 1 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนต่างๆโปรดดู man (1) ps 1 top
ไม่สมเหตุสมผลใด ๆ เนื่องจากคุณเพียงแค่เรียกใช้ps
คำสั่งด้วยบางสิ่งที่แปลกไปมัน params
readlink
จะปรากฏในส่วนที่ 1 และส่วนที่ 2 และprintf
ในส่วนที่ 1 และ 3 หากคุณเพิ่งพิมพ์man command
คนจะลองส่วนต่างๆตามลำดับตัวเลขและแสดงลำดับแรกที่พบหรือคุณสามารถระบุด้วยman # command
ซึ่งคุณต้องทำเพื่อรับเอกสาร สำหรับการreadlink
เรียกใช้ระบบ
นี่เป็นการตอบกลับช้ามาก แต่ใช้ w3mman w3mman เป็นระบบวิทยุติดตามตัวคู่มือโดย w3m
https://linux.die.net/man/1/w3mman
คุณสามารถลองได้โดยติดตั้งแพ็คเกจ w3m ฉันเชื่อว่าแพ็คเกจนี้ได้รับการลงทะเบียนในที่เก็บซอฟต์แวร์ของ Linux / UNIX และ Cygwin
w3mman
มีให้พร้อมกับการw3m
ติดตั้งMacports เริ่มต้น มันเยี่ยมมาก :) ขอบคุณ!
ให้ฉันพยายามตีความคำถามของคุณอีกเล็กน้อยในความหมายที่ฉันพยายามติดตามเวิร์กโฟลว์ของคุณ สิ่งที่คุณอาจต้องการมีคือชุดค่าผสมที่สำคัญภายในman
หน้าเว็บที่นำคุณไปสู่คำสั่งที่ขีดเส้นใต้ที่คุณกำลังอ่านโดยตรง ดังนั้นไม่ต้องติดตั้งอย่างอื่นหรือเปิดคอนโซลอื่นและลืมไวยากรณ์ที่แน่นอนตัวอย่างเช่น
คำตอบที่ง่ายที่สุดนี้คือเครื่องหมายอัศเจรีย์ (ถ้าคุณใช้less
เพื่อแสดงหน้าคน) และคุณต้องการไปที่ขีดเส้นใต้top
:
!man top
หรือ
!man 1 top
คุณจะต้องปิดพวกเขาทั้งหมดด้วยการกดq
หลายครั้ง ยังทราบว่าเรื่องนี้จะไม่ทำงานหากLESSSECURE=1
มีการตั้งค่าเป็นตัวแปรด้านสิ่งแวดล้อมซึ่งจะทำให้การทำงานในโหมดที่ปลอดภัยและไม่ยอมให้คุณใช้less
!
มันจะบอกคุณบางอย่างเช่น "คำสั่งไม่พร้อมใช้งาน"
แม้ว่าw3mmanเป็นวิธีการติดตามลิงก์ แต่ไม่ได้ใช้หน้าจอทั้งหมด (อย่างน้อยใน Ubuntu 12.10)
ฉันชอบที่จะใช้:
$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'
เพิ่มคำสั่งสุดท้ายเพื่อ~ / .bash_aliasesหรือสคริปต์เริ่มต้นที่คล้ายกันเพื่อรับมันในทุกเซสชั่น
w3m -Pเป็นเพราะเบราว์เซอร์แรกที่จะ Hman เป็นแมวป่าชนิดหนึ่งหรือเหมาะสมเบราว์เซอร์แต่ฉันชอบw3m
hmanเป็นเครื่องมือที่มาพร้อมกับ html2man ดูนี่สิ
หากออกโดยมีการยืนยันเป็นที่น่ารำคาญสำหรับคุณเช่นเดียวกับฉันใช้สิ่งนี้
โดยเฉพาะสำหรับ Ubuntu มี Yelp มันถูกติดตั้งโดยค่าเริ่มต้นและเป็นค่าเริ่มต้นที่สามารถแสดงหน้าคู่มือได้ถึงแม้ว่าการร้องขอให้ทำนั้นจะไม่เหมือนกับของman
คำสั่ง นามแฝงหรือฟังก์ชั่นเปลือกสามารถทำงานรอบจุดหลัง (ขึ้นอยู่กับเปลือกของคุณ)
yelp 'man:exit'
มันจะเริ่มต้นในส่วนในแบบที่ฉันไม่รู้ คำเตือน: การที่จะได้รับส่วนรายการสำหรับหัวข้อคู่มือการใช้ในขณะที่whatis
whatis exit
หากต้องการให้ Yelp แสดงหน้าคู่มือจากส่วนที่ระบุให้ทำ 2:
yelp 'man:exit(2)'
ปัญหา: yelp มีข้อบกพร่องและพร้อมที่จะรับเอาต์พุตข้อผิดพลาดหลายอย่างเมื่อเรียกใช้จากบรรทัดคำสั่ง นอกจากนี้ยังมีชื่อแทนหรือฟังก์ชันเชลล์แบบกำหนดเองสามารถช่วยเปลี่ยนเส้นทางข้อผิดพลาดทั้งหมดไปยัง/dev/null
อย่างที่พวกเขาพูดมันไม่ได้ออกแบบมาสำหรับมัน
คุณสามารถใช้info man
แล้วกด Enter เมื่อคุณอยู่ภายใต้ส่วนSEE ALSOในรายการของคุณ
ข้อมูล - อ่านเอกสารข้อมูล
ฉันมีแฮ็ค (สอง)
ใส่สิ่งนี้ใน ~ / .bashrc หรือ ~ / .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
}
ภาพหน้าจอ ..
Asciinema ..
https://asciinema.org/a/130131
ตอนนี้ ..
man vim
ตัวอย่างเช่นเมื่อคุณพิมพ์มันจะเปิดหน้า man นี้เป็นกลุ่ม
man man vim
ตัวอย่างเช่นถ้าคุณพิมพ์มันจะเปิดman
คู่มือของคุณก่อนและหลังจากที่คุณออกจากเสียงเรียกเข้าก็จะเปิดvim
คู่มือของเมื่อคุณกดK(นั่นคือทุนk
) เมื่อคุณอยู่ในหน้าคนอื่นที่ด้านล่าง (ส่วนดูยัง ) คุณจะข้ามไปที่คู่มือนี้ (น่าเสียดายที่ภายในเพจเจอร์น้อย - นี่เป็นเพราะเรามีlet no_man_maps = 1
ถ้าคุณไม่ ทำเช่นนั้นกลุ่มจะบังคับq
ให้เป็น:q
และคุณจะไม่สามารถบันทึกแมโครได้อย่างง่ายดายและกลุ่มอาจมีพฤติกรรมที่ไร้เดียงสาในรูปแบบอื่น)
คุณจะได้รับการเน้นไวยากรณ์สวยมากตั้งแต่คุณได้โหลดftplugin / man.vimและฟุตเป็น (อัตโนมัติ) man
ตั้งค่าให้
:w ~/usefulfile
คุณสามารถคัดลอกและวางนำทางได้อย่างอิสระในกลุ่มและแม้กระทั่งการปรับเปลี่ยนกันชนและ คุณสามารถทำทุกอย่างได้ตามปกติเช่น vim, yank to clipboard ด้วย"+y
(ถ้ามี+clipboard
), ฯลฯ
ฉันพบว่ามันดีกว่าน้อยกว่ามาก
ความพ่ายแพ้เล็กน้อยที่ฉันพบ (ซึ่งยังคงมีอยู่ถ้าคุณใช้น้อยกว่าเพจเจอร์ของคุณ) คือถ้าคุณต้องการเปิดคู่มือหลายฉบับในเซสชันเดียว ฉันไม่เห็นวิธีการทำเช่นนี้จริงๆ
หมายเหตุเล็กน้อย:
หากคุณพยายามบันทึกบัฟเฟอร์คุณจะได้รับ E382: Cannot write, 'buftype' option is set
คุณยังสามารถบันทึกได้เช่น :w /tmp/man.man
.man
นามสกุลแล้วการเปิดมันขึ้นมาจะเป็นการตั้งค่าไฟล์ให้man
กับคุณ.man
ส่วนขยายคุณสามารถตั้งค่าฟุตเป็นman
โดยการเรียกใช้:set ft=man
หากคุณต้องการทำสิ่งต่าง ๆ เมื่อเปิดหน้าautocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
คู่มือที่คุณสามารถใช้ได้ตัวอย่างเช่น
ฉันใส่สิ่งต่อไปนี้ใน vimrc ของฉันเพื่อให้ฉันสามารถกดKเพื่อลองเปิดคู่มือแล้วกดGเพื่อกลับไปที่คู่มือก่อนหน้านี้:
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
วางสิ่งนี้ลงใน ~ / .bashrc หรือ ~ / .zshrc ของคุณ
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
ภาพหน้าจอ ..
Asciinema ..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
วิธีนี้จะช่วยแก้ปัญหาที่แฮ็คที่ 1และมีใบหน้าน้อยลง (ตอนนี้คุณสามารถดูคู่มือได้หลายชุดในบัฟเฟอร์เดียว) แต่มันก็ดูดีกว่า
หมายเหตุ:
ที่สำคัญถ้าคุณต้องการhack2ที่จะทำงานแล้วคุณจะต้องใส่ในของคุณ:let no_man_maps = 1
~/.vimrc
นี่เป็นเพราะเสียงเรียกเข้าจะเป็นแหล่ง.../vim80/man.vim
และq
จะถูกบังคับให้ทำการแมป:q
อีกครั้ง
มีการทำความสะอาดที่เกี่ยวข้องมากขึ้น (ตอนนี้คุณจัดเก็บทุกคู่มือไปที่/tmp/*.man )
อย่างไรก็ตามตอนนี้คุณสามารถดูหน้าเว็บหลายหน้าในหนึ่งเซสชันได้ดังที่ได้กล่าวไว้ข้างต้น
หากคุณกดKคุณจะยังคงเปิดเซสชัน 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>"
หรือสิ่งที่คลั่งไคล้เช่นนั้น ( ยังไม่ทดลอง )ฉันสามารถใช้--html
อาร์กิวเมนต์man
เพื่อเปิดในเบราว์เซอร์ที่กำหนดโดยตัวแปรสภาพแวดล้อม $ BROWSER ดังนั้น:
BROWSER=google-chrome man ps --help
ฉันใช้ Fedora ไม่แน่ใจว่าสิ่งนี้ใช้ได้กับ distro ของคุณหรือไม่โปรดทดสอบและรายงานในความคิดเห็น
groff
จะต้องติดตั้ง groff
คำสั่งอาจจะมีในขณะที่แพคเกจที่มีชื่อเดียวกันไม่ได้ (คำสั่งมาพร้อมกับgroff-base
ไม่เต็มรูปแบบgroff
แพคเกจ) ฉันทำman --html="surf file%c//%s" <command>
และก็ไม่เป็นไร มีไฮเปอร์เท็กซ์ จำกัด มาก limited มากคือ: - /
man is an interface to the on-line reference manuals
ที่ (ถ้าฉันไม่ผิด) หมายความว่าควรดึงข้อมูลทั้งหมดจากหน้าเว็บบางหน้าบนอินเทอร์เน็ตใช่ไหม? ดังนั้นใคร ๆ ก็รู้ว่า http: // link คืออะไร?