fork
ตัวอย่างเช่นman page สำหรับอยู่ในส่วน System Calls ที่มีหมายเลข 2:
man 2 fork
คุณจะเห็นส่วนที่ 2 อื่น ๆ โดยไม่หันไปใช้ Google ได้อย่างไร
fork
ตัวอย่างเช่นman page สำหรับอยู่ในส่วน System Calls ที่มีหมายเลข 2:
man 2 fork
คุณจะเห็นส่วนที่ 2 อื่น ๆ โดยไม่หันไปใช้ Google ได้อย่างไร
คำตอบ:
คำสั่งนี้แสดงรายการชื่อที่เรียงลำดับของรายการทั้งหมดในส่วนที่กำหนด:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
หากคุณต้องการดูชื่อพา ธ ให้ใช้:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
สิ่งนี้บอกman
ให้ค้นหาส่วนสำหรับคำสั่งทั้งหมดโดยใช้รูปแบบไวด์การ์ด*
(เครื่องหมายทับขวาเพื่อให้เชลล์ไม่ได้แปล) -a
ค้นหาการแข่งขันทั้งหมด-W
พิมพ์ชื่อพา ธ แทนการแสดงหน้าและ-S 1
ระบุส่วนที่หนึ่ง เปลี่ยนเป็น1
ส่วนใดก็ได้ที่คุณต้องการค้นหา
sed
คำสั่งแถบนามสกุลของไฟล์นั้น ลบออกหากคุณต้องการดูชื่อไฟล์ที่สมบูรณ์ sort
เรียงลำดับผลลัพธ์ ( -u
ลบรายการที่ซ้ำกัน)
เพื่อความสะดวกในการใช้ซ้ำสิ่งนี้จะกำหนดฟังก์ชั่นเปลือก Bash:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
ตัวอย่างเช่นคุณสามารถเรียกใช้mansect 3
เพื่อดูรายการในส่วนที่สาม
[ทดสอบบน macOS]
uniq
ไลน์ไม่สามารถแก้ไขได้
sort -u
เพื่อลบรายการที่ซ้ำกัน
ในการแสดงรายการman pages ที่ติดตั้งทั้งหมดจากส่วนเฉพาะคุณสามารถใช้apropos :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
โดยทั่วไป Manpages จะถูกวางไว้/usr/share/man
แต่ให้ตรวจสอบ$MANPATH
และจัดเรียงเป็นส่วน ๆ ดังนี้:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
ดังนั้นในการแสดง manpages ส่วนที่ติดตั้งทั้งหมดให้ทำ:
ls /usr/share/man/man2/
หรือหนึ่งที่สมบูรณ์มากขึ้น:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
หลังหนึ่งจะมีปัญหาหากคุณมีไดเรกทอรีในที่$MANPATH
มีช่องว่างในชื่อของพวกเขา
ในการแจกแจงส่วนใหญ่คุณสามารถตรวจสอบ man pages ที่มีอยู่ด้วยเครื่องมือ package เช่นการแจกแจงแบบ Debian ที่คุณสามารถใช้apt-file
ดังนี้
apt-file search /man2/
lman 2
และแสดงชื่อที่ไม่มีการตกแต่งสำหรับแต่ละหน้าในบรรทัดใหม่และหน้าพวกเขา ร่างกายของฟังก์ชั่นคือ:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
ใน Mac OS X สิ่งเดียวที่ฉันสามารถทำงานได้คือman -k . | grep -F '(3)'
แสดงทุกสิ่งในส่วนที่ 3
ฉันรู้ว่านี่เป็นคำถามที่เก่ามาก แต่คำตอบที่ได้รับที่นี่ทั้งหมดไม่ได้สำหรับฉัน ดังนั้นฉันจึงมากับหนึ่งซับที่ทำงานบนUbuntu 18.04 และmacOS Mojave, 10.14.6:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
วิ่งลงอย่างรวดเร็ว:
$(man --path | tr ':' ' ')
เพื่อรับเส้นทางปัจจุบันของ man pagesfind <man paths> -type f -path '*man2*' -exec basename {} \;
รับชื่อไฟล์ของไฟล์ปกติทั้งหมดในพา ธ mansed
กำจัดนามสกุลไฟล์sort
ตามลำดับตัวอักษร