מדריך Bash Globbing

Bash Globbing Tutorial



Bash אינו תומך בביטויים רגילים של יליד כמו כמה שפות תכנות סטנדרטיות אחרות. תכונת קליפת Bash המשמשת להתאמה או הרחבה של סוגים מסוימים של דפוסים נקראת גלובינג. גלובינג משמש בעיקר להתאמת שמות קבצים או לחיפוש תוכן בקובץ. גלובינג משתמש בתווים כלליים כדי ליצור את התבנית. התווים הנפוצים ביותר המשמשים ליצירת תבניות גלוביות מתוארים להלן.

'?' משמש להתאמה של כל דמות אחת. אתה יכול להשתמש '?' למספר פעמים להתאמת מספר תווים.







דוגמה 1:



נניח שברצונך לחפש את שמות קבצי הטקסט ששמותיהם באורך 4 תווים והרחבה היא .טקסט . אתה יכול ליישם תבנית גלובינג באמצעות ' ? 'ארבע פעמים לביצוע המשימה הזו.



גלה את רשימת כל הקבצים והתיקיה של הספרייה הנוכחית.





$ls

הפעל את הפקודה הבאה חפש את הקבצים ששמותיהם באורך ארבע תווים ולא ידועים.

$ ls -l ????. txt



דוגמה 2:

נניח שברצונך לחפש בקבצי מסמכים שאורכם 8 תווים, 4 תווים ראשונים f, o, o ו t והרחבה היא דוקטור . הפעל את הפקודה הבאה עם תבנית גלובוס לחיפוש בקבצים.

$ls רגל ????. דוקטור

דוגמה 3:

נניח שאתה יודע את שם הקובץ 'הטוב ביותר' והתוסף באורך של 3 תווים, אך אינני מכיר את הסיומת. הפעל את הפקודה הבאה באמצעות '? 'כדי לחפש בכל הקבצים עם השם' test 'עם כל סיומת של שלוש תווים.

$ls הטוב ביותר.???

כוכבית - (*)

'*' משמש להתאמה של אפס או יותר תווים. אם יש לך פחות מידע לחיפוש כל קובץ או מידע, תוכל להשתמש '*' בדפוס גלוביות.

דוגמא -1:

נניח שברצונך לחפש בכל הקבצים של 'Pl' סיומת. הפעל את הפקודה הבאה באמצעות '*' לבצע את המשימה הזו.

$ls *.pl

דוגמה 2:

נניח שאתה יודע את תו ההתחלה של שם הקובץ שהוא 'ל' . הפעל את הפקודה הבאה באמצעות '*' לחיפוש בכל הקבצים של הספרייה הנוכחית ששמותיהם מתחילים 'ל' .

$ls ל*.*

דוגמה 3:

אתה יכול ליישם '*' בסקריפט bash למטרות שונות מבלי לחפש קבצים. צור קובץ bash בשם 'Check.sh' עם התסריט הבא. כאן, כאשר המשתמש יקליד ' y 'או' Y 'או' כן 'או' כן ' לאחר מכן 'מְאוּשָׁר' יודפס וכאשר הסוג יקליד 'N' או 'N' או 'לא' או 'לא' לאחר מכן 'לא ודאי' תדפיס.

#!/bin/bash
זרק 'אתה רוצה לאשר?'
לקרואתשובה
מקרה תשובה $ ב
[כן]* ) זרק 'מְאוּשָׁר.';;
[מס ']* ) זרק 'לא ודאי.';;
*) זרק 'נסה שוב.';;
esac

הפעל את התסריט.

$לַחֲבוֹטcheck.sh

סוגר מרובע - ([])

'[]' משמש להתאמת הדמות מהטווח. חלק מהצהרות הטווח הנפוצות ביותר מוזכרות להלן.

כל האלפבית באותיות מוגדרות על ידי הטווח, [: עליון:] או [A-Z].

כל האלפבית באותיות מוגדרות על ידי הטווח, [: נמוך:] או [א-ז].

כל הספרות המספריות מוגדרות על ידי הטווח, [: digit:] או [0-9].

כל האלפבית באותיות גדולות ותחתונות מוגדרות על ידי הטווח כ: [: alpha:] או [a-zA-z].

כל האלפבית האותיות, האלף-בית והספרות מוגדרות לפי הטווח, [: alnum:] או [a-zA-Z0-9]

דוגמא -1:

הפעל את הפקודה הבאה כדי לחפש בכל הקבצים והתיקיות ששמם מכיל עמ אוֹ מה אוֹ r אוֹ ש .

$ls [נ.ב]*

דוגמה 2:

הפעל את הפקודה הבאה כדי לחפש בכל הקבצים והתיקיות ששמם מתחיל בכל ספרה שבין 1 ל -5.

$ls [1-5]*

חסר לו - (^)

אתה יכול להשתמש '^' עם סוגר מרובע כדי להגדיר את דפוס הגלוב באופן ספציפי יותר. '^' יכול לשמש בתוך או מחוץ לסוגר המרובע. '^' משמש מחוץ לסוגר המרובע לחיפוש בתוכן הקובץ שמתחיל בטווח תווים נתון. '^' משמש בתוך הסוגר המרובע כדי להציג את כל תוכן הקובץ על ידי הדגשת השורות המתחילות בטווח תווים נתון. אתה יכול להשתמש בסוגים שונים של דפוסי גלובוס לחיפוש תוכן מסוים מתוך קובץ. 'אחיזה' הפקודה משמשת לחיפוש תוכן ב- bash. נניח שיש לך קובץ טקסט בשם 'List.txt' עם התוכן הבא. בדוק את הדוגמאות הבאות עבור קובץ זה.

תפוח עץ
4000
בננה
700
תפוז
850
אגס
9000
ג'קדר

דוגמה - 1:

הפעל את הפקודה הבאה לחיפוש שורות אלה list.txt קובץ שמתחיל ב- P או Q או R. .

$ grep '^[P-R]' list.txt

דוגמה - 2:

הפעל את הפקודה הבאה כדי להדגיש את השורות האלו list.txt קובץ שמתחיל ב- A או B או C. .

$ grep '[^A-C]' list.txt

שלט קריאה - (!)

אתה יכול להשתמש '!' בתוך תבנית הטווח. זה עובד כמו השימוש בסמל '^' מחוץ לדפוס הטווח. כמה דוגמאות לשימוש '!' השלט ניתן להלן.

דוגמה - 1:

הפעל את הפקודה הבאה כדי להציג את השורות האלה list.txt קובץ שמתחיל ב- 'P' או Q או R .

$ grep [! P-R] list.txt

דוגמה - 2:

הפעל את הפקודה הבאה כדי להציג את השורות האלה list.txt קובץ שמתחיל בכל ספרה מ 4 עד 8 .

$ grep [! 4-8] list.txt

שלט דולר - ($)

'$' משמש להגדרת תו הסיום. אם אתה יודע לחפש מידע המבוסס על התו האחרון, תוכל להשתמש '$' בדפוס גלוביות.

דוגמה - 1:

הפעל את הפקודה הבאה לחיפוש שורות אלה list.txt קובץ שמסתיים ב- 'ל' .

$ grep $ list.txt

דוגמה - 2:

הפעל את הפקודה הבאה לחיפוש שורות אלה list.txt קובץ שמסתיים במספר חמישים .

$ grep 50 $ list.txt

סוגר מתולתל - ({})

'{}' יכול לשמש להתאמת שמות קבצים עם יותר מתבניות גלובליות אחת. כל תבנית מופרדת באמצעות ',' בסוגריים מתולתלים ללא כל רווח. להלן מספר דוגמאות.

דוגמה - 1:

הפעל את הפקודה הבאה כדי לחפש את הקבצים ששמותיהם באורך של 5 תווים והסיומת היא 'ש' או ששני התווים האחרונים של הקבצים הם 'רחוב' והתוסף הוא 'טקסט' .

$ ls -l {?????. sh,*st.txt}

דוגמה - 2:

הפעל את הפקודה הבאה כדי למחוק את כל הקבצים שהסיומות שלהם 'Doc' או 'docx' .

$rm {*.doc,*.docx}

צינור– (|)

סימן '|' משמש גם ליישום יותר מתנאי אחד על דפוס גלובוס. כל תבנית מופרדת על ידי סמל '|' בפקודה.

דוגמה - 1:

הפעל את הפקודה הבאה כדי לחפש את שמות הקבצים המתחילים בתו 'a' ובעל הסיומת 'bash' או 'sh'.

$lsל*+(.לַחֲבוֹט|.sh)

דוגמה - 2:

צור קובץ bash בשם 'Menu.bash' והוסף את הסקריפט הבא. אם סוג המשתמש 1 או S. ואז הוא יודפס מחפש טקסט . אם סוג המשתמש 2 או R. ואז הוא יודפס החלפת טקסט . אם סוג המשתמש 3 או ד ואז הוא יודפס מחיקת טקסט . הוא ידפיס נסה שוב לכל קלט אחר.

#!/bin/bash
זרק 'בחר כל אפשרות מהתפריט:'
לקרואתשובה
מקרה תשובה $ ב
1 |ס) זרק 'מחפש טקסט';;
2 |ר) זרק 'החלפת טקסט';;
3 |ד) זרק 'מחיקת טקסט';;
*) זרק 'נסה שוב.';;
esac

הפעל את התסריט.

$לַחֲבוֹטתפריט

סיכום

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

למידע נוסף בדוק את הסרטון הזה: