אני שמח שחזרתם אלי לחלק התשיעי של המדריך, אם לא עברתם על החלקים הראשונים, מאוד חשוב לעבור עליהם מאחר ובלי החלקים הראשונים לא תצליחו לתרגל ולהבין את החלק הנוכחי, את כל החלקים של המדריך ניתן לקרוא כאן: לינק
במדריך זה נלמד:
1) מה זה grep בלינוקס?
2) מתי משתמשים ב grep?
3) איך לסנן תוצאות עם grep בלינוקס?
4)איך לבצע חיפוש תוכן של קבצים עם grep בלינוקס?
1.אז מה זה בעצם grep?
הפקודה grep היא ראשי תיבות של "Global Regular Expression Print", שבגדול זה רצף תווים שמגדיר תבנית חיפוש - וזה ממש ממש ממש ממש בקצרה..
2.מתי משתמשים ב grep בלינוקס?
בעצם השימוש בפקודה הזאת מתבצע כמה מקרים, פעם אחת כאשר אנחנו רוצים לבצע נגיד חיפוש בתוך תצוגה כלשהי, לדוגמא אם יש לי רשימה ענקית של תהליכים ואני רוצה תהליך מסוים, אז אני יכול להגיד ללינוקס שיראה לי רק תהליך מסוים בפלט שלו, או לחלופין, ברגע שאני מחפש נגיד מילה בתוך קובץ, זאת אומרת אפשר להשתמש ב grep בתור פקודה לאחר שהוא מקבל מידע ב"צינור" (Pipeline) או בתור פקודה עצמאית לגמרי שמבצעת חיפוש כזה או אחר בתוך קבצים\תיקיות במחשב שלנו.
3.איך לסנן תוצאות עם grep בלינוקס?
נתחיל מהדבר הכי פשוט שאפשר, איך למצוא כתובת IP במחשב שלכם? בווינדוס, הדברים יחסית פשוטים, בלינוקס אם אנחנו נשתמש בפקודה ifconfig (המקבילה של ipcoinfig) בווינדוס, נקבל מידע קצת שונה, בעיקרון בלינוקס זה יותר דומה לפקודה ipconfig /all לפי כמות המידע שמקבלים.
על מערכות חדשות אין את הפקודה ifconfig, אז צריך להתקין "כלי תקשורת",לצורך כך,
נריץ את הפקודה sudo apt install net-tools
נריץ את הפקודה sudo apt install net-tools
במידה והכל עבד אצלכם תקין, זה יראה ככה:
עכשיו אפשר להריץ את הפקודה בשביל לקבל את המידע אודות הרשת, ואז אתם תבינו למה בעצם צריך grep במקרה הזה:
אנחנו יכולים לראות כאן שקיבלנו המון המון מידע, ודיי צריך לנחש מי פה כתובת ה IP, עכשיו תתארו לכם שאתם על שרת עם 4 כרטיסי רשת? אז בדיוק במקרה הזה מגיעה הפקודה grep שעובדת גם על MAC באותה הצורה, לצורך הסינון אני יכול לבחור לחפש לפי inet או לפי כתובת ה IP לדוגמא: ifconfig |grep inet:
נגיד ואני רוצה לקבל מידע אודות פעולות עם קבצים מתוך העזרה של הפקודה "cp" אני ארשום "man cp|grep "file
בנוסף עם הפקודה grep אפשר לבצע "פילטר" לקבלת פלט הרבה יותר מדויק, לדוגמא אם אני רוצה להציג רק קבצים מסוג מסוים, אני אשתמש בפקודה ls ואעביר ל grep את הפלט עם ההגדרות שאני רוצה "ls -l |grep "doc
בצורה הזאת: "ls -l |grep -v "doc
להבדיל מהפעמים הקדומות שהפקודה grep מקבלת מאיתנו פלט של פקודה בתוך Pipeline כאן, הפקודה הזאת תעבוד בתור "תוכנה" בפני עצמה, בעצם פה נפתח כל הפוטנציאל של הפקודה הזאת, מציאת תוכן בתוך קבצים, דבר ראשון אני רוצה שתשימו לב, עד כמה מהיר החיפוש פה עובד, ולא משנה כמה קבצים או טקסט, זה עובד ממש ממש מהר גם אם זה על חומרה מאוד מאוד ישנה.
לדוגמא, נגיד ואני רוצה למצוא את כל כתובות ה IP שמתחילות ב 10.20, בקובץ שיש לי, אני אכתוב את הפקודה, לאחר מכן מה אני מחפש ואז את שם הקובץ grep 10.20 pc_list.txt
grep -n 10.20 pc_list.txt
נגיד ואני רוצה למצוא את כל הקבצים שיש בהם את כתובות IP מסוימות ואני לא זוכר באיזה קובץ רשמתי את זה אשתמש בפרמטר r- (רקורסיבי):
/grep -r "10.20.28" ~/Desktop
אותו דבר לגבי כל דבר אחר כמובן, לדוגמא נחפש את המילה "linux" בתוך הקבצים שיש בשולחן העבודה, בכוונה יצרתי הרבה קבצים (אני אתן לכם להוריד אותם בסוף המדריך) אם אני ארשום לו לחפש רקורסיבית הוא יראה לי באיזה קבצים יש את המילה, אבל אם אני אוסיף לו גם את הפרמטר i- (הכוונה "Ignore") שהוא מתעלם מאותיות גדולות וקטנות, אני אקבל תוצאה עם הקבצים שבהם יש את המילים שאני מחפש במקרה הזה "linux", אז ראשית נראה את הדוגמא בלי i-:
הפקודה: grep -r ["what_to_search"] [path]
/grep -ri "linux" ~/Desktop
הרישום "ri-" הוא לא טעות, ניתן לרשום בלינוקס בשתי דרכים, או כל פרמטר בנפרד עם "-" או פשוט לשלב אותם ביחד:
הפקודה הזאת : grep -r ["what_to_search"] [path]
והפקודה הזאת: /grep -ri "linux" ~/Desktop
יעבדו באותה הצורה, זה אחד הדברים היפים בלינוקס.
אם אני רוצה לבדוק כמה פעמים המילה linux מופיע בקבצים האלה, אני אשתמש בפרמטר c-, עשיתי בדיקה בכוונה בשביל להראות לכם את זה שלינוקס מבדיל במילים עם אותיות גודלות לבין מילים עם אותיות קטנות, לכן הרצתי את אותה הפקודה פעמיים, אחת עם הפרמטר c- והשניה בלי הפרמטר: /grep -rc "linux" ~/Desktop
נגיד ואני רוצה להציג את כל הקבצים שבהם אין את המילה linux - כן יש דבר כזה "סינון הפוך" אני אשתמש בפרמטר v-
ואוסיף אותו לפרמטרים האחרים נשתמש בפרמטר r- (רקורסיבי) i- (התעלם מאותיות גדולות קטנות) ו v- ובעצם נקבל פקודה כזאת: /grep -riv "linux" ~/Desktop
נגיד ואני נמצא בתיקייה מסוימת ואני רוצה למצוא את כל הקבצים שיש בהם את המילה linux, אני אשתמש כמובן בפרמטר i- ואז אשתמש ב "*" עם המילה שאני רוצה למצוא:* grep -i linux
זה הכל להפעם.
המייל שלי לכל שאלה :levl@leidertech.co.il
קבצי הטקסט שיהיה לכם עם מה "לשחק" - כאן
ההורדה מתבצעת מהאיחסון Google Drive
כמו תמיד, סרטון מצולם של המדריך:
אין תגובות:
הוסף רשומת תגובה
מגיב\ה יקר\ה תגובה היא דבר מקובל ביותר, ביקורת בונה גם כן, אם בכוונתך לפרסם, או לקלל, או סתם להגיב ולפוגע באחד ממבקרי הבלוג או כותב הבלוג, אתה מוזמן לחסוך ממני את ביזבוז הזמן במחיקת ההודעה שלך, ופשוט לא לכתוב אותה.
תודה :)