מה הם מטא-תווים של לינוקס ואיך אתה משתמש בהם?

לפי ויקיפדיה, metacharacter הוא כל תו שיש לו משמעות מיוחדת, כגון קראט (^), סימן דולר ($) או כוכבית (*).

במונחים של לינוקס, יש מספר לא מבוטל של מטא-תווים אלה והמשמעות שלהם משתנה בהתאם לפקודה או לתוכנית שאתה מפעיל.

את מלוא עצירה בתור Metacharacter (.)

עצירה מלאה צנוע משמש לתרום את המיקום הנוכחי בעת הפעלת פקודות כגון CD , למצוא או sh אבל בתוך יישומים כגון awk , grep ו sed זה משמש לציון כל תו.

לדוגמה, הפקודה הבאה תמצא את כל קבצי MP3 בתיקיה הנוכחית ומטה.

למצוא . -Name * .mp3

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

עכשיו תסתכל על הפקודה הזו:

ps -ef grep f..efox

הפקודה PS מפרטת את כל התהליכים הפועלים במחשב שלך. הפקודה grep לוקחת שורות קלט וחיפוש אחר תבנית.

לכן הפקודה פק-פק מקבל רשימה של תהליכים פועל נותן לו grep אשר מחפש כל שורה ברשימה שיש לו f..efox שם. יכול להיות כל תו.

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

הכוכבית כ- metacharacter (*)

כוכבית היא metacharacter אוניברסלית יותר ידועה ומשמשת 0 או יותר כאשר מחפשים דפוס.

לדוגמה:

למצוא . -Name * .mp3

* .mp3 מחזירה התאמה לכל שם קובץ המסתיים ב- .mp3. באופן דומה, יכולתי להשתמש בכוכבית עם הפקודה grep כמו בתצוגות הבאות:

ps -ef grep F * efox

ראוי לציין כי זה שונה במקצת, כי כוכבית פירושו אפס או יותר, כמו גם למצוא פיירפוקס, facefox ו fonefox זה יכול גם למצוא flutefox, ferretfox ואפילו רק ffox.

קראט כמטארכטר (^)

קראט (^) משמש לציון תחילתו של קו או מחרוזת. אז איך זה משמש?

הפקודה ls משמשת לרשימה של כל הקבצים בתיקיה באופן הבא:

אני

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

לדוגמה:

ls | grep ^ gnome

שים לב כי זה רק רשימות קבצים שמתחילים עם gnome. אם אתה רוצה קבצים שיש להם gnome שם הקובץ אז היית שוב לחזור הכוכבית.

בדוגמה לעיל, ls מחזירה רשימה של שמות קבצים ומעבירה את הרשימה ל- grep המשמשת להתאמת תבניות. grep יודע כי סמל קראט פירושו למצוא כל דבר שמתחיל עם הדמויות הבאות אחרי זה ובמקרה זה, זה gnome.

סמל דולר כמו Metacharacter ($)

סמל הדולר יכול להיות משמעויות מרובות כמו metacharacter בתוך לינוקס.

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

לדוגמה:

ls | grep png $

זה מפרט את כל הקבצים המסתיימים ב- png.

סמל הדולר משמש גם כדי לגשת משתני סביבה בתוך פגז bash.

לדוגמה:

כלב הייצוא = מולי
כלב echo $

הכלב לייצא קו = מולי יוצר משתנה סביבה הנקרא כלב ומציב את הערך שלה מולי. כדי לגשת למשתנה הסביבה נעשה שימוש בסמל $. עם סמל $ את ההצהרה כלב הד מציג מולי אבל בלי זה, הצהרת הכלב רק מציג את המילה כלב.

מטא-תווים

לפעמים אתה לא רוצה metacharacter יש משמעות מיוחדת. מה אם יש לך קובץ בשם f.refox וקובץ שנקרא Firefox.

עכשיו תסתכל על הפקודה הבאה:

ls | grep

מה אתה חושב הוא חזר? הן f.refox והן Firefox מוחזרים משום ששניהם תואמים את הדפוס.

כדי לחזור רק f.refox אתה צריך להימלט מלכתחילה למעשה מתכוון להפסיק באופן מלא כדלקמן:

ls | grep f \\

מטא-תווים משותפים ומשמעויותיהם

רשימת מטא-תווים של לינוקס
אופי מַשְׁמָעוּת
. כל תו
* תווים אפס או יותר
^ להתאים כל שורה או מחרוזת אשר מתחילים עם דפוס (כלומר ^ gnome)
$ התאם כל שורה או מחרוזת המסתיימת בתבנית (כלומר gnome $)
12 בורח את התו הבא כדי להסיר את משמעותו המיוחדת
[] התאמת רשימה אחת או טווח (כלומר ["abc", "def"] או [1..9]
+ התאמה אחת או יותר מקודמות (כלומר, grep a +)
? להתאים אפס או אחד לפני