אפר - לינוקס פיקוד - פיקוד יוניקס

שֵׁם

sh - הפקודה מתורגמן ( פגז )

תַקצִיר

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ target ... ]

תיאור

ש 'הוא מתרגם הפקודה הרגיל עבור המערכת. הגרסה הנוכחית של sh היא בתהליך של שינוי כדי להתאים את POSIX 1003.2 ו 1003.2a מפרטים עבור הקליפה. גרסה זו יש תכונות רבות אשר הופכים אותו דומה במובנים מסוימים את הקונכייה קורן, אבל זה לא שיבוט פגז קורן (ראה ksh (1)). רק תכונות המיועדות על ידי POSIX בתוספת כמה הרחבות ברקלי, משולבים לתוך פגז זה. אנו מצפים להתאמה של POSIX עד לשחרור 4.4 BSD. דף זה האיש לא נועד להיות הדרכה או מפרט מלא של הקליפה.

סקירה כללית

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

קְרִיאָה

אם לא קיימים טיעונים, ואם הקלט הסטנדרטי של הקונכייה מחובר למסוף (או אם דגל ה - i מוגדר), ואפשרות ה - c לא קיימת, הקליפה נחשבת לקליעה אינטראקטיבית. פגז אינטראקטיבי בדרך כלל מתבקש לפני כל פקודה ומטפל בשגיאות תכנות ובטעויות שונות (כפי שמתואר בהמשך). כאשר הראשון מתחיל, הקליפה בודק את הטיעון 0, ואם זה מתחיל עם מקף `- 'פגז נחשב גם פגז כניסה. זה בדרך כלל נעשה באופן אוטומטי על ידי המערכת כאשר המשתמש הראשון יומני פנימה פגז הכניסה הראשון קורא פקודות מן הקבצים / etc / פרופיל ו .profile אם הם קיימים. אם משתנה ENV משתנה על כניסה לקליפה, או מוגדר בקובץ .profile של פגז כניסה, הקליפה הבאה קוראת פקודות מקובץ בשם ENV לכן, על המשתמש להציב פקודות שיש לבצע רק ב זמן התחברות בקובץ .profile, ופקודות שמתבצעות עבור כל קליפה בתוך קובץ ENV . כדי להגדיר את משתנה ENV לקובץ כלשהו, ​​הצב את השורה הבאה בקובץ .profile של ספריית הבית שלך

ENV = $ HOME / .shinit; ייצוא ENV

מחליף את "shinit '' כל שם קובץ שתרצה. מכיוון שקובץ ENV נקרא לכל קריאה של הקליפה, כולל סקריפטים של פגז ופגזים לא אינטראקטיביים, הפרדיגמה הבאה שימושית להגבלת פקודות בקובץ ENV לפריצות אינטראקטיביות. פקודות מקום בתוך המקרה '' ו- '' esac '' להלן (פקודות אלה מתוארות בהמשך):

מארז - ב- * i *)

# פקודות לשימוש אינטראקטיבי בלבד

...

esac

אם צוינו טיעוני שורת הפקודה מלבד האפשרויות, אזי הקליפה מתייחסת לארגומנט הראשון כאל שם של קובץ שממנו ניתן לקרוא פקודות (script shell), והארגומנטים הנותרים מוגדרים כפרמטרים המיקום של הקליפה ($ 1 , $ 2, וכו '). אחרת, הקליפה קוראת פקודות מהקלט הסטנדרטי שלה.

עיבוד רשימת ארגומנטים

לכל האפשרויות של אות אחת יש שם מקביל שניתן להשתמש בו כארגומנט לאפשרות - o . שם ה- set- o מסופק ליד האפשרות אות אחת בתיאור שלהלן. ציון מקף `` - '' 'הופך את האפשרות למצב מופעל, תוך שימוש בפלוס ``' 'משבית את האפשרות. ניתן להגדיר את האפשרויות הבאות משורת הפקודה או מהמערכת (1) המובנית (המתוארת בהמשך).

-אלקסספורט

ייצא את כל המשתנים שהוקצו ל. (ללא הגבלה עבור 4.4alpha)

קרא פקודות משורת הפקודה. לא יקראו פקודות מהקלט הסטנדרטי.

- נוקלובר

אל תחליף קבצים קיימים עם ''> '' (לא משויך ל- 4.4alpha)

- ארקסייט

אם לא אינטראקטיבי, צא מיד אם כל פקודה שלא נבדקה נכשלת. מצב היציאה של פקודה נחשב לבדיקה במפורש אם הפקודה משמשת לשליטה באליף אם או עד או אם הפקודה היא מפעיל יד שמאל של אופרטור `` & `או` `| ''.

-F noglob

השבת הרחבת שם נתיב .

-Nexec

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

- אזעקה

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

- verbose

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

xxrace

כתוב כל פקודה לשגיאה סטנדרטית (קודמת על ידי + 'לפני שהיא מבוצעת.

-q שקטפרופיל

אם נקבעו האפשרויות - v או x -, אל תחיל אותן בעת ​​קריאת קבצי אתחול, אלה / etc / profile .profile והקובץ שצוין על ידי משתנה סביבת ENV .

- אני מתעלם

התעלם מ- EOF מהקלט כאשר הוא אינטראקטיבי.

אינטראקטיבי

לאלץ את הקליפה להתנהג באופן אינטראקטיבי.

-M לפקח

הפעל את בקרת העבודה (הגדרה אוטומטית כאשר אינטראקטיבית).

- סטדין

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

הו רו

הפעל את מובנה vi (1) שורת הפקודה עורך (משבית - E אם הוא הוגדר).

-EEacs

הפעל את הערכים המובנים של emacs (1) שורת הפקודה (משבית - V אם הוא הוגדר).

-בידוע

אפשר הודעה אסינכרונית על השלמת העבודה ברקע. (ללא הגבלה עבור 4.4alpha)

מבנה לקסיקאלי

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

"מפעילי בקרה:"

& && (); ; | ||

"מפעיל ניתוב מחדש:"

<>> | << >> <&> & << - <>

ציטוט

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

מַהֲלָך סְרָק

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

ציטוטים בודדים

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

ציטוטים כפולים

צירוף תווים בתוך מרכאות כפולות משמר את המשמעות המילולית של כל התווים, למעט דולר ($) backquote (') ו- Backslash (\). הקו האחורי בתוך ציטוטים כפולים הוא מוזר מבחינה היסטורית, והוא משמש לצטט רק את הדמויות הבאות:

$ `\

אחרת זה נשאר מילולי.

מילים שמורות

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

! אלפף טא פי טא

Ta אחר עבור Ta Ta אז {Ta}

לעשות טא טא עד Ta אם esac

משמעותם נדונה מאוחר יותר.

כינויים

כינוי הוא שם וערך מקביל מוגדר באמצעות הפקודה כינוי (1) מובנית. בכל פעם שמתרחשת מילה שמורה (ראה לעיל), ולאחר בדיקה של מילים שמורות, הקליפה בודקת את המילה כדי לראות אם היא תואמת כינוי. אם כן, הוא מחליף אותו בזרם הקלט עם הערך שלו. לדוגמה, אם יש כינוי הנקרא `` lf`` עם הערך `ls-f '' ולאחר מכן הקלט:

lf foobar

יהפוך

ls-f foobar

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

פקודות

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

פקודות פשוטות

אם פקודה פשוטה זוהו, הקליפה מבצעת את הפעולות הבאות:

  1. המילים המובילות של הטופס `` name = value '' מופשטות ומוקצות לסביבה של הפקודה הפשוטה. מפעילי הניתוב מחדש והארגומנטים שלהם (כמתואר להלן) מופשטים ושמורים לעיבוד.
  2. המילים הנותרות מורחבות כמתואר בסעיף שנקרא 'הרחבות', והמילה הנותרת נחשבת לשם הפקודה והפקודה ממוקמת. שאר המילים נחשבות לטיעוני הפקודה. אם לא צוין שם פקודה, אזי הקצאת המשתנים "שם = ערך" המוכרת בסעיף 1 משפיעה על הקליפה הנוכחית.
  3. ניתוב מחדש מתבצע כמתואר בסעיף הבא.

ניתובים מחדש

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

[n] קובץ redir-op

שם redir-op הוא אחד מפעילי ההפניה המוזכרים לעיל. להלן רשימה של ניתובים מחדש אפשריים. ה- Bq הוא מספר אופציונלי, כמו ב- '3' (לא 'Bq 3' המתייחס לתיאור קובץ.

[n]> קובץ

הפניה מחדש של פלט סטנדרטי (או n) לקובץ.

[n]> | קוֹבֶץ

אותו הדבר, אבל לעקוף את האפשרות C.

[n] >> קובץ

צרף פלט סטנדרטי (או n) לקובץ.

[n] <קובץ

הפניה מחדש של קלט רגיל (או n) מקובץ.

[n1] <& n2

קלט רגיל כפול (או n1) מתיאור הקובץ n2.

[n] <& -

סגור קלט רגיל (או n).

[n1]> & n2

כפולים פלט סטנדרטי (או n1) מ n2.

[n]> & -

סגור פלט סטנדרטי (או n).

[n] <> קובץ

פתח קובץ לקריאה וכתיבה על קלט רגיל (או n).

ניתוב מחדש זה נקרא לעתים קרובות "here-document"

[n] << מפריד

כאן-טקסט-טקסט ...

מפריד

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

חיפוש וביצוע

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

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

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

אחרת, אם שם הפקודה אינו תואם לפונקציה או מובנית, הפקודה מתבקשת כתוכנית רגילה במערכת הקבצים (כפי שמתואר בסעיף הבא). כאשר תוכנית רגילה מבוצעת, הקליפה מפעילה את התוכנית, מעבירה את הטיעונים ואת הסביבה לתוכנית. אם התוכנית אינה קובץ הפעלה רגיל (כלומר, אם זה לא מתחיל עם "מספר הקסם" אשר ייצוג ASCII הוא "#!", ולכן execve (2) מחזירה Er ENOEXEC מכן) הקליפה תפרש את התוכנית ב משנה. הקונכייה של הילד תיצור את עצמה מחדש במקרה זה, כך שהאפקט יהיה כאילו הופעל פגז חדש כדי לטפל בתסריט הקליפה האד-הוק, אלא שמיקום פקודות השהות שנמצאות בקליפת האב ייזכר על ידי יֶלֶד.

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

חיפוש נתיב

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

  1. שמות פקודה המכילים קו נטוי פשוט מתבצע ללא ביצוע חיפושים.
  2. הקליפה מחפשת כל ערך ב PATH בתורו עבור הפקודה. הערך של המשתנה PATH צריך להיות סדרה של ערכים המופרדים על ידי קולונים. כל רשומה מורכבת מספריה. הספרייה הנוכחית עשויה להיות מסומנת במשתמע על ידי שם ספרייה ריק, או במפורש על ידי תקופה אחת.

מצב יציאה של פקודה

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

פקודות מורכבות

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

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

צינורות

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

הפורמט של צינור הוא:

[!] Command1 [| הפקודה ...]

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

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

אם המילה שמורה! אינו מקדים את הצינור, מצב היציאה הוא מצב היציאה של הפקודה האחרונה שצוינה בצינור. אחרת, מצב היציאה הוא לא הגיוני של מצב היציאה של הפקודה האחרונה. כלומר, אם הפקודה האחרונה מחזירה אפס, מצב היציאה הוא 1; אם הפקודה האחרונה מחזירה יותר מאפס, מצב היציאה הוא אפס.

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

$ command 2>> 1 הפקודה

שולח הן את הפלט הסטנדרטי ואת שגיאת התקן של הפקודה 1 לקלט הסטנדרטי של הפקודה 2.

A; או Terminalator גורם לרשימה הקודמת ו- OR (המתוארת בהמשך) להתבצע ברצף; & גורם לביצוע אסינכרוני של הרשימה הקודמת ו- OR.

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

פקודות רקע -

אם פקודה מסתיימת על-ידי מפעיל הבקרה (&), הקליפה מבצעת את הפקודה באופן אסינכרוני - כלומר, הקליפה אינה ממתינה לסיום הפקודה לפני ביצוע הפקודה הבאה.

הפורמט להפעלת פקודה ברקע הוא:

Command1 & [Command2 & ...]

אם הקליפה אינה אינטראקטיבית, הקלט הסטנדרטי של פקודה אסינכרונית מוגדר ל- / dev / null

רשימות - באופן כללי

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

מפעילי רשימת מעגלים קצרים

`` & `` `ו` `| '' הם אופרטורים רשימה-AND. הפקודה '& &' 'מבצעת את הפקודה הראשונה, ולאחר מכן מבצעת את הפקודה השנייה אם מצב היציאה של הפקודה הראשונה הוא אפס. `` '' '' דומה, אבל מבצעת את הפקודה השנייה אם מצב היציאה של הפקודה הראשונה הוא nonzero. "` && '' ו- `` | '' הן בעלות עדיפות זהה.

בקרת זרימה - אם, במקרה, עבור, במקרה

התחביר של הפקודה if הוא

אם ברשימה
ולאחר מכן רשימה
[רשימת אליף
ולאחר מכן ברשימה] ...
[רשימה אחרת]
Fi

התחביר של הפקודה בזמן הוא

בעוד ברשימה
לעשות רשימה
בוצע

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

התחביר של הפקודה הוא

משתנה במילה ...
לעשות רשימה
בוצע

המילים מורחבות, ולאחר מכן הרשימה מבוצעת שוב ושוב עם המשתנה מוגדר לכל מילה בתורו. לעשות ולעשות יכול להיות מוחלף עם `` {'' ו '' '' '

התחביר של הפסק והפקודה להמשיך הוא

הפסקה [num]
המשך [num]

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

התחביר של פקודת המקרה הוא

חם המילה ב
דפוס) רשימה ;;
...
esac

התבנית יכולה להיות למעשה תבנית אחת או יותר (ראה תבניות Shell שתוארו בהמשך), מופרדים בתווים "".

הקבצה פקודות יחד

ניתן לקבץ פקודות גם באמצעות כתיבה

(רשימה)

אוֹ

{ רשימה;

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

{printf hello; printf world \ n ";}> ברכה

פונקציות

התחביר של הגדרת פונקציה הוא

name ()

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

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

מקומי [משתנה | -] ...

מקומי מיושם כפקודה מובנית.

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

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

התחביר של הפקודה Return הוא

חזור [יציאה

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

משתנים ופרמטרים

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

ערך = שם

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

פרמטרים

פרמטר positional הוא פרמטר המסומן במספר (n> 0). הקונכייה מגדירה את אלה תחילה לערכים של ארגומנטים משורת הפקודה שלהם, אשר עוקבים אחר שם הסקריפט פגז. סט (1) מובנה יכול לשמש גם כדי להגדיר או לאפס אותם.

פרמטרים מיוחדים

פרמטר מיוחד הוא פרמטר המסומן על ידי אחד התווים המיוחדים הבאים. ערך הפרמטר מופיע ליד תו.

*

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

@

מרחיב את הפרמטרים positional, החל מאחד. כאשר מתרחשת התרחבות בתוך ציטוטים כפולים, כל פרמטר positional מתרחב כארגומנט נפרד. אם אין פרמטרים positional, ההרחבה של @ יוצרת אפס ארגומנטים, גם כאשר @ מצוטט פעמיים. מה זה בעצם אומר, למשל, אם $ 1 הוא "abc" ו $ 2 הוא "def ghi" ואז QQ $ @ מתרחב שתי טיעונים:

abc def ghi

#

מתרחב למספר הפרמטרים positional.

?

מתרחב למצב היציאה של הצינור האחרון.

- (מקף).

מתרחב לדגלי האפשרויות הנוכחיים (שמות האותיות החד-אותיות המשורשרות למחרוזת) כפי שצוין בהפניה, על-ידי הפקודה setin מובנית, או במרומז על ידי הקליפה.

$

מתרחב למזהה התהליך של הקליפה שהופעלה. Subhell שומרת על אותו ערך של $ כהורה שלה.

!

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

0 (אפס).

מתרחב לשם של פגז או סקריפט פגז.

הרחבות Word

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

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

סדר הרחבת המילים הוא:

  1. הרחבת טילדה, הרחבת פרמטר, החלפת פיקוד, התרחבות אריתמטית (כל אלה מתרחשים באותו זמן).
  2. פיצול השדה מבוצע על שדות הנוצרים לפי צעד (1), אלא אם כן משתנה ה- IFS הוא ריק.
  3. הרחבה Pathname (אלא אם כן set - f הוא למעשה).
  4. ציטוט להסרה.

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

הרחבה של Tilde (החלפת ספריית בית של משתמש)

מילה המתחילה עם אופי tilde לא מצוטט (~) נתון להרחבת tilde. כל התווים עד לקו נטוי (/) או בסוף המילה מטופלים כשם משתמש ומוחלפים בספריית הבית של המשתמש. אם שם המשתמש חסר (כמו ב ~ / foobar) tilde מוחלף עם הערך של המשתנה HOME (ספריית הבית של המשתמש הנוכחי).

הרחבת הפרמטר

הפורמט להרחבת פרמטרים הוא כדלקמן:

כאשר הביטוי מורכב מכל התווים עד שהתאמה '``' '' '' '' 'נמלטת על ידי קו נטוי הפוך או בתוך מחרוזת מצוטטת, ותווים בהרחבות אריתמטיות מוטבעות, תחליפי פקודות והרחבות משתנות, לא נבדקים בקביעת התאמת ``} ''

הצורה הפשוטה ביותר להרחבת פרמטרים היא:

הערך, אם בכלל, של הפרמטר מוחלף.

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

  1. הרחבת Pathname אינה מבוצעת על תוצאות ההתרחבות.
  2. פיצול השדה אינו מתבצע על תוצאות ההתרחבות, למעט @.

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

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

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

ציין שגיאה אם ​​Null או Unset. אם הפרמטר הוא unset או null, הרחבת המילה (או הודעה המציינת את זה הוא unset אם המילה מושמט) כתוב שגיאת תקן ואת פגז יוצא עם מצב היציאה nonzero. אחרת, ערך הפרמטר מוחלף. פגז אינטראקטיבי לא צריך לצאת.

השתמש בערך חלופי. אם הפרמטר אינו מוגדר או null, null מוחלף; אחרת, הרחבת המילה מוחלפת.

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

אורך המחרוזת. האורך בתווים של ערך הפרמטר.

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

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

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

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

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

החלפת פיקוד

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

$ (הפקודה)

או פו "backquoted" גרסה PC:

הפקודה

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

הרחבה אריתמטית

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

$ ((ביטוי))

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

לאחר מכן, הקליפה מתייחסת לזה כאל ביטוי אריתמטי ומחליפה את ערך הביטוי.

פיצול שטח לבן (פיצול שדה)

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

הקליפה מתייחסת לכל תו של ה- IFS כמפריד ומשתמשת בתוחמים כדי לפצל את תוצאות הרחבת הפרמטרים ותחליף הפקודה לשדות.

הרחבת נתיב (שם קובץ)

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

דפוסי מעטפת

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

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

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

בניינים מובנים

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

You

פקודה null המחזירה ערך יציאה 0 (true).

. קוֹבֶץ

הפקודות בקובץ שצוין נקראות ומופיעות על ידי הקליפה.

כינוי [ שם [ = מחרוזת ... ]]

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

bg [ עבודה] ...

המשך את המשימות שצוינו (או את העבודה הנוכחית אם לא ניתנות עבודות) ברקע.

הפקודה הפקודה הפקודה ...

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

cd [ directory ]

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

מחרוזת הערכה ...

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

exec [ הפקודה arg ... ]

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

יציאה [ יציאה ]

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

שם הייצוא ...

יצוא -p

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

ייצוא שם = ערך

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

fc [- e editor ] [ ראשון [ אחרון ]]

fc -l [- nr ] [ first [ last ]]

fc-s [ ישן = חדש ] [ first ]

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

- עורך

השתמש בעורך בשם העורך כדי לערוך את הפקודות. מחרוזת העורך היא שם פקודה, בכפוף לחיפוש באמצעות משתנה PATH . הערך במשתנה FCEDIT משמש כברירת מחדל כאשר - e לא צוין. אם FCEDIT הוא ריק או לא מוגדר, הערך של המשתנה EDITOR משמש. אם EDITOR הוא ריק או לא מוגדר, ed (1) משמש כעורך.

-l (ell)

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

-n

דיכוי מספרי פקודה בעת הרישום עם -l.

-r

הפוך את סדר הפקודות המפורטות (עם - l או בעריכה (עם לא - l ולא - s)

- s

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

ראשון

אחרון

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

[+] מספר

מספר חיובי המייצג מספר פקודה; ניתן להציג מספרי פקודה עם האפשרות - l .

-מספר

מספר עשרוני שלילי המייצג את הפקודה שבוצעה מספר פקודות בעבר. לדוגמה, -1 הוא הפקודה הקודמת באופן מיידי.

חוּט

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

משתני הסביבה הבאים משפיעים על ביצוע fc:

FCEDIT

שם העורך לשימוש.

HISTSIZE

מספר הפקודות הקודמות הנגישות.

fg [ עבודה ]

העבר את העבודה שצוינה או את העבודה הנוכחית לחזית.

getopts varstring var

הפקודה POSIX getopts , לא להתבלבל עם מעבדות בל, לקבל gotopt (1).

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

הפקודה getopts מבטל את השירות הישן יותר getopt (1) עקב הטיפול בו של טיעונים המכילים שטח לבן.

ניתן להשתמש בבניית ה- getopts כדי לקבל את האפשרויות ואת טיעוניהם מרשימת פרמטרים. בעת הפעלתו , getopts מציב את הערך של האפשרות הבאה ממחרוזת האפשרויות ברשימה במשתנה הקליפה שצוין על ידי var והוא אינדקס במשתנה הקליפה OPTIND כאשר המעטפת מופעלת, OPTIND מאותחל ל 1. עבור כל אפשרות הדורשת ויכוח, את getopts מובנה ימקם אותו משתנה פגז OPTARG אם אופציה אינה מותרת ב optstring אז OPTARG יהיה unset.

Optstring הוא מחרוזת של אותיות אפשרות מוכרות. אם האות עוקבת אחר נקודתיים, האפשרות צפויה להיות בעלת ארגומנט, אשר ניתן להפריד ממנו או לא להפריד אותו בחלל לבן. אם תו אופציה לא נמצא במקום הצפוי, getopts יקבע את המשתנה var ל- `` getopts לאחר מכן לא יבוצע OPTARG וכתוב פלט לשגיאה רגילה. על ידי ציון נקודתיים כמו התו הראשון של optstring את כל השגיאות תתעלם.

ערך nonzero מוחזר כאשר האפשרות האחרונה מגיעה. אם אין ארגומנטים שנותרו, getopts יגדיר var לאופציה המיוחדת, "-" "אחרת, היא תגדיר var ל -"? "

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

בעוד getopts abc: f
לַעֲשׂוֹת
מארז $ f
a b) דגל = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; יציאה 1 ;;
esac
בוצע
shift `expr $ OPTIND - 1`

קוד זה יקבל כל אחת מהפעולות הבאות:

קובץ קובץ cmd -acarg
cmd-a-c קובץ קובץ arg
cmd-carg-file הקובץ
cmd -a-carg - קובץ הקובץ

הפקודה hash -rv ...

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

עם ארגומנטים, הפקודה hash מסירה את הפקודות שצוינו מהטבלה חשיש (אלא אם כן הם פונקציות) ולאחר מכן מאתר אותם. עם אפשרות - V , חשיש מדפיס את מיקומי הפקודות כפי שהוא מוצא אותם. אפשרות ה - r גורמת לפקודת ה- hash למחוק את כל הערכים בטבלת החשיש פרט לפונקציות.

התפקיד

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

מקומות תעסוקה

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

pwd

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

קרא [- p הפקודה ] [- r ] משתנה ...

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

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

שם רידונלי ...

readonly -p

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

ערך = readonly = value

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

הגדר את [{- אופציות | + אפשרויות | - arg ... ]

הפקודה Set מבצעת שלוש פונקציות שונות.

ללא ארגומנטים, הוא מפרט את הערכים של כל משתני הקליפה.

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

השימוש השלישי בפקודה set הוא להגדיר את הערכים של הפרמטרים posational של פגז לארגומנטים שצוין. כדי לשנות את הפרמטרים positional מבלי לשנות את כל האפשרויות, השתמש ב- `` - '' כארגומנט הראשון להגדרה. אם לא קיימים ארגומנטים, הפקודה set תנקה את כל הפרמטרים posational (שווה ערך לביצוע '`$ $ shift '. ''

ערך משתנה

מקצה ערך למשתנה. (באופן כללי עדיף לכתוב משתנה = במקום להשתמש ב- setvar setvar נועד לשמש פונקציות להקצות ערכים למשתנים ששמותיהם מועברים כפרמטרים).

משמרת [ n ]

שינוי הפרמטרים positional n פעמים. משמרת קובעת את הערך של $ 1 לערך של $ 2 בערך של $ 2 לערך של $ 3 וכן הלאה, תוך הקטנת הערך של # $ אחת. אם n גדול ממספר הפרמטרים positional, השינוי ינפיק הודעת שגיאה ויציאה עם סטטוס החזרה 2.

פִּי

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

מלכודת פעולה ...

לגרום לקליפה לנתח ולבצע פעולה כאשר כל האותות שצוינו מתקבלים. האותות נקבעים על ידי מספר האות. אם האות הוא 0 הפעולה מתבצעת כאשר פגז יוצא. הפעולה עלולה להיות null או `` '' '' לשעבר גורמת לאותות שצוינו להתעלם והאחרת גורמת לפעולת ברירת המחדל. כאשר מזלג המזלג מחוץ subhell , הוא מאפס אותות לכודים (אבל לא התעלם) לפעולת ברירת המחדל. הפקודה מלכודת אין השפעה על אותות כי התעלמו על הכניסה לקליפה.

הקלד [ שם ... ]

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

ulimit [- H -S ] [- a -tfdscmlpn [ value ]]

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

-H

להגדיר או לברר על גבולות קשים

-S

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

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

להראות את כל המגבלות הנוכחיות

-t

הצג או קבע את המגבלה על זמן המעבד (בשניות)

-f

להציג או להגדיר את המגבלה על הקובץ הגדול ביותר שניתן ליצור (ב 512 בתים בתים)

ד

הצג או הגדר את המגבלה על גודל קטע הנתונים של תהליך (בקילו-בתים)

- s

להציג או להגדיר את המגבלה על גודל ערימה של תהליך (ב kilobytes)

להציג או להגדיר את הגבול על גודל הליבה הגדול ביותר הליבה כי ניתן לייצר (ב 512 בתים בתים)

-M

להציג או להגדיר את המגבלה על הזיכרון הפיזי הכולל שיכול להיות בשימוש על ידי תהליך (ב kilobytes)

-L

להראות או להגדיר את המגבלה על כמה זיכרון תהליך יכול לנעול עם נעל (2) (ב kilobytes )

-p

הצג או הגדר את המגבלה על מספר התהליכים שהמשתמש יכול לקבל בו-זמנית

-n

להציג או להגדיר את המגבלה על מספר קבצים תהליך יכול להיות פתוח בבת אחת

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

גבולות של תהליך שרירותי ניתן להציג או להגדיר באמצעות השירות sysctl (8).

umask [ מסכה ]

קבע את הערך של umask (ראה umask (2)) לערך אוקטלי שצוין. אם הארגומנט מושמט, הערך umask מודפס.

unalias [- a ] [ שם ]

אם השם מצוין, הקליפה תסיר את הכינוי. אם - א צוין, כל הכינויים יוסרו.

שם לא מוגדר ...

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

המתן [ עבודה ]

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

עריכת שורת הפקודה

כאשר sh נמצא בשימוש אינטראקטיבי ממסוף, הפקודה הנוכחית ואת ההיסטוריה הפקודה (ראה fc ב Sx Builtins) ניתן לערוך באמצעות מצב שורת הפקודה vi. מצב זה משתמש בפקודות, המתוארות להלן, בדומה לתת-קבוצה של אלה המתוארים בדף ה- vi. הפקודה 'set' -o vi מאפשרת עריכת מצב של vi ו- sh במקום למצב הוספה של vi. עם מצב vi מופעלת, ש ניתן לעבור בין מצב הכנס למצב פקודה. העורך אינו מתואר במלואו כאן, אבל יהיה במסמך מאוחר יותר. זה דומה vi: הקלדת אק ESC יזרוק אותך למצב פקודה VI הפקודה. להכות לחזור לחזור במצב פקודה יעבור את הקו לקליפה.

חשוב: השתמש בפקודת הגבר ( % man ) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.