ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 07/07/2009 - 00:17
נושא ההודעה: חיפוש ביטויים בכל ה-manpages במערכת

הסקריפט הזה משמש אותי כבר כמה זמן, אולי זה יעזור לעוד אנשים פה... (בעיקר לאובססיבים קשים שהמחשבה על כך שיש משהו שהם לא יודעים על משהו לא נותנת להם לישון בלילה...)

השימוש זהה ל-grep, פשוט מריצים עם כל הפרמטרים שהייתם נותנים ל-grep, למשל:
קוד:
./search-man.sh -iw tcp


הסקריפט משתמש בתוכנה deroff שצריכה להיות מותקנת, ושיש בה ספק-באג ששובר שורות באמצע כשיש בהן פקודות עיצוב של roff, ולכן מספרי שורות שמופיעים עם -n לא תמיד נכונים (אבל עדיין יכולים להיות שימושיים...)

קוד:
#!/bin/bash

print_usage_and_exit ()
{
   {
   echo "error: invalid command-line"
   echo "usage: $0 <grep arguments>"
   } >&2
   exit 2
}

format_page_name ()
{
   page_file="$1"
   page_base_file="${page_file##*/}"
   page_name_and_section="${page_base_file%.gz}"
   page_name="${page_name_and_section%.*}"
   page_section="${page_name_and_section##*.}"
   
   echo "$page_name($page_section)"
}

# usage: grep_man <page> <grep arguments>
grep_man ()
{
   page="$1"
   page_name=$(format_page_name "$page")
   
   # skip symlinks
   test -L "$page" && return 1
   
   # uncompress, remove comments and references to other manpages, deroff, grep
   zcat "$page" | egrep -v '^\.(\\\"|so)' | deroff | grep -H --label=$page_name "${@:2}"
}

# check command-line validity
(echo | grep "$@") >/dev/null 2>/dev/null
test $? -gt 1 && print_usage_and_exit

ok=
for page in /usr/share/man/man*/*
do
   grep_man "$page" "$@" && ok=1
done

# return 0 if at least one match was found; otherwise return 1 (same as standard grep)
test -n "$ok"


נערך לאחרונה על-ידי LemonLime בתאריך 07/07/2009 - 05:13, סך-הכל נערך פעם אחת
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
עידולא בפורום כעת ת.הצטרפות: 28/11/2003 · הודעות: 1816 · מיקום: dev/null/
 

הודעה פורסם: 07/07/2009 - 01:05
נושא ההודעה:

אופציה נוספת, מובנת בתוך man:

קוד:
man -k tcp

או
קוד:
apropos tcp


שתי האופציות הנ"ל מקבלות ביטוי רגולרי, apropos מאפשר באמצעות דגלים להגדיר גם אופציות אחרות. (man -k זהה ל apropos -r)

ויש גם את whatis שזהה ל apropos (אותו בינארי)
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 07/07/2009 - 04:44
נושא ההודעה:

נכון, אבל הכלים האלה מחפשים רק בשמות העמודים ובתיאור הקצר שלהם, לעומת הסקריפט שלי שמחפש גם בתוכן (וגם מאפשר יותר שליטה על החיפוש באמצעות פרמטרים מתאימים ל-grep)...
ככה שאם אני רוצה למשל למצוא את כל ההתייחסויות לקובץ מסוים או לפונקציה מסויימת, החיפוש המובנה ב-man לא יעזור לי...
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. LemonLime
  2. עידו
  3. LemonLime