OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

מפעילים

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


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



[me@linuxbox ~]$ מצא ~ \( -סוג f -לא -perm 0600 \) -או \( -סוג ד

-לא -סלסול 0700 \)

[me@linuxbox ~]$ מצא ~ \( -סוג f -לא -perm 0600 \) -או \( -סוג ד

-לא -סלסול 0700 \)


איכס! זה בהחלט נראה מוזר. מה זה כל הדברים האלה? למעשה, המפעילים לא כל כך מסובכים ברגע שאתה מכיר אותם. הנה הרשימה:


טבלה 17-4: מצא אופרטורים לוגיים


תיאור המפעיל

תיאור המפעיל

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


תמונה

או התאם אם בדיקה משני הצדדים של האופרטור היא נכונה. ניתן לקצר ל -o.


תמונה

-לא• התאם אם הבדיקה העוקבת אחר האופרטור היא שקר. ניתן לקצר בסימן קריאה (!).


תמונה

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


תמונה


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

( ביטוי 1 ) -או ( ביטוי 2 )

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


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

(קובץ עם אישורים גרועים) -או (ספרייה עם אישורים גרועים)

האתגר הבא שלנו הוא כיצד לבדוק "הרשאות גרועות". איך אנחנו עושים את זה? בעצם אנחנו לא. מה שנבחן הוא "הרשאות לא טובות", מכיוון שאנו יודעים מהן "הרשאות טובות". במקרה של קבצים, אנו מגדירים טוב כ-0600 ועבור ספריות, כ-0700. הביטוי שיבדוק קבצים עבור הרשאות "לא טובות" הוא:

-סוג f -ו-לא -perms 0600

ולספריות:

-סוג d -ו-לא -perms 0700

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

מצא ~ ( -סוג f -not -perms 0600 ) -או ( -סוג d -not

-סלסול 0700)

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

יש עוד תכונה של אופרטורים לוגיים שחשוב להבין. נניח שיש לנו שני ביטויים המופרדים על ידי אופרטור לוגי:

expr1 -מַפעִיל expr2

בכל המקרים, expr1 תמיד יבוצע; עם זאת, המפעיל יקבע אם

expr2 מתבצע. ככה זה עובד:


טבלה 17-5: מצא AND/OR Logic


תוצאות של expr1

מַפעִיל

expr2 הוא ...

נָכוֹן

-וא

תמיד בוצע

לא נכון

-וא

מעולם לא ביצע

נָכוֹן

או

מעולם לא ביצע

לא נכון

או

תמיד בוצע


למה זה קרה? זה נעשה כדי לשפר את הביצועים. לקחת -וא, לדוגמה. אנחנו יודעים שהביטוי expr1 -וא expr2 לא יכול להיות נכון אם התוצאה של expr1 is


false, אז אין טעם לבצע expr2. באופן דומה, אם יש לנו את הביטוי expr1 או expr2 והתוצאה של expr1 נכונה, אין טעם לבצע expr2, כפי שאנו כבר יודעים שהביטוי expr1 או expr2 נכון.

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


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: