ขอบคุณคำตอบที่ยอมรับมันน่าสนใจที่จะเรียนรู้เกี่ยวกับการมีอยู่ของยูทิลิตี้manpage-alertส่วนหนึ่งของdevscriptsแพ็คเกจซึ่งจริงๆแล้วคือเชลล์สคริปต์
ฉันพยายามติดตั้งdevscriptsแต่ได้รับแจ้งให้ติดตั้งประมาณ 70MB ของการอ้างอิงดังนั้นฉันข้าม
การดาวน์โหลดdevscriptsแพคเกจ deb ( apt download devscripts) การแตก deb และมองmanpage-alertสคริปต์อย่างใกล้ชิดเรื่องราวทั้งหมด "ภายใต้ประทุน" คือสคริปต์แจ้งเตือนนี้ใช้คำสั่ง:
man -w -S 1:8:6 <file> (w = แสดงตำแหน่ง -S 1: 8: 6 จำกัด การค้นหาผู้ชายในส่วนที่ 1,8 และ 6)
การดำเนินการนี้จะดำเนินการในทุกไฟล์ที่ซ้ำภายใต้ไดเรกทอรี/bin, /sbin, /usr/bin, และ/usr/sbin/usr/games
นอกจากนี้การเปลี่ยนเส้นทางmanไป2>&1ยังและการเปลี่ยนเส้นทางไปยัง>/dev/nullหากไฟล์มีตำแหน่งของหน้ากระดาษที่ถูกต้องจะไม่มีการพิมพ์อะไรเลย แต่ถ้าหากmanมีการแจ้งเตือนสำหรับ "ไม่มีการป้อนข้อมูลด้วยตนเอง" ข้อความนี้จะถูกพิมพ์
ผู้เขียนmanpage-alertมีการเพิ่มเติมลอกmanข้อความข้อผิดพลาดจาก "ดูคนที่ 7 ที่ไม่มีเอกสารเพื่อขอความช่วยเหลือ" ข้อความและช่วยให้เพียงบรรทัดแรก No manual entry for xxxx=
ดังนั้นสองสามบรรทัดต่อไปนี้จะให้การพิมพ์ที่คล้ายกันของไบนารีที่ขาดหายไปหน้าคนโดยไม่ต้องติดตั้งแพคเกจ devscripts:
F=( "/bin/*" "/sbin/*" "/usr/bin/*" "/usr/sbin/*" "/usr/games/*" )
for f in ${F[@]};do
for ff in $f;do
if ! mp=$(man -w -S 1:8:6 "${ff##*/}" 2>&1 >/dev/null);then
echo "$mp" |grep -v "man 7 undocumented" #man 7 undocumented is printed in a separate line.
fi
done
done
PS: ${ff##*/}เก็บเพียงชื่อคำสั่งลอกเส้นทาง/usr/bin/หรือ/bin/หรืออะไรก็ตาม
ด้านบนยังสามารถเรียกใช้เป็นหนึ่งซับ:
gv@debi64:$ F=( "/bin/*" "/sbin/*" "/usr/bin/*" "/usr/sbin/*" "/usr/games/*" );for f in ${F[@]};do for ff in $f;do if ! mp=$(man -w -S 1:6:8 "${ff##*/}" 2>&1 >/dev/null);then echo "$mp" |grep -v "man 7 undocumented";fi;done;done
No manual entry for ntfsmove
No manual entry for ipmaddr
No manual entry for iptunnel
^C
PS: แน่นอนคุณสามารถติดตั้งdevscriptsเนื่องจากมีสาธารณูปโภค / สคริปต์ที่ดีมากมายรวมอยู่ด้วย ฉันแค่อยากจะรู้ว่าสิ่งที่ทำงานภายใต้ประทุน :-)