המדריך למתחילים לסקריפטים של מעטפת: היסודות

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

מה זה סקריפט של מעטפת?

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

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

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

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

לפני שאתה מתחיל

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

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

ביסודם, סקריפטים הם רק קבצי טקסט פשוטים. אתה יכול להשתמש בכל עורך טקסט כדי לכתוב אותם: gedit, emacs, vim, nano ... רשימה זו נמשכת. רק הקפד לשמור אותו כטקסט רגיל, לא כטקסט עשיר, או כמסמך Word. מכיוון שאני אוהב את קלות השימוש שננו מספקת, אני אשתמש בזה.

הרשאות ושמות סקריפטים

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

chmod + x ~ / somecrazyfolder / script

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

chmod u + x ~ / somecrazyfolder / script

על מנת להריץ סקריפט זה, יהיה עליכם לתקליטור לספרייה המתאימה ואז להריץ את התסריט כך:

cd ~ / somecrazyfolder

./script1

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

~ / סל

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

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

אשר [פקודה]

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

הנחיות לתסריט

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

  1. כל סקריפט צריך להיות עם "#! / Bin / bash"
  2. כל שורה חדשה היא פקודה חדשה
  3. שורות תגובות מתחילות בסימן #
  4. הפקודות מוקפות ב ()

האק של האש-באנג

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

#! / bin / bash

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

שורה חדשה = פקודה חדשה

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

תגובה לעתים קרובות עם #s

אם אתה מתחיל שורה עם #, הקו מתעלם. זה הופך את זה לשורת תגובה, שבה אתה יכול להזכיר לעצמך מה הייתה פלט הפקודה הקודמת, או מה הפקודה הבאה תעשה. שוב, כבה את גלישת הטקסט, או שבור את ההערה למספר שורות שכולן מתחילות ב- hash. שימוש בשפע של הערות הוא שיטה טובה לשמור, מכיוון שהיא מאפשרת לך ולאנשים אחרים לשנות את התסריטים שלך ביתר קלות. היוצא מן הכלל היחיד הוא פריצת האש-בנג הנ"ל, אז אל תעקוב אחרי #s עם! S. ;-)

פקודות מוקפות בסוגריים

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

התסריט הראשון שלך

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

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

בואו ניצור קובץ ריק בתיקיה ~ / bin:

גע ~ / bin / datecp

ובואו נשנה את ההרשאה עכשיו לפני שנשכח:

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

ננו ~ / bin / datecp

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

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

מה נכניס למשתנה? ובכן, בואו נשמור את התאריך והשעה! לשם כך, נקרא לפקודת התאריך.

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

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

בואו נשתמש באיטרציה האחרונה של פקודת התאריך, "תאריך +% m_% d_% y-% H.% M.% S", ונשתמש בזה בתסריט שלנו.

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

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

משתנה = $ (ארגומנטים של אפשרויות פקודה)

ובשבילנו, נבנה את זה כך:

date_formatted = $ (תאריך +% m_% d_% y-% H.% M.% S)

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

הנה סקריפט לדוגמא ופלטו:

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

בוא נחזור לתסריט שלנו. בואו הבא להוסיף את חלק ההעתקה של הפקודה.

cp –iv $ 1 $ 2. $ date_formatted

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

לאחר מכן תוכל לראות שהוספתי את האפשרות "$ 1". בעת סקריפט, סימן דולר ($) ואחריו מספר יציין את הארגומנט הממוספר של התסריט בעת הפעלתו. לדוגמה, בפקודה הבאה:

cp –iv Trogdor2.mp3 רינגטון.mp3

הטיעון הראשון הוא "Trogdor2.mp3" והטיעון השני הוא "ringtone.mp3".

במבט לאחור על התסריט שלנו נוכל לראות כי אנו מתייחסים לשני טיעונים:

פירוש הדבר שכאשר אנו מריצים את הסקריפט, נצטרך לספק שני ארגומנטים כדי שהסקריפט יפעל כראוי. הארגומנט הראשון, $ 1, הוא הקובץ שיועתק, והוא מוחלף כארגומנט הראשון של הפקודה "cp –iv".

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

הנה מה שקורה כאשר התסריט מופעל:

אתה יכול לראות שקובץ הפלט מופיע בתור כל מה שהזנתי עבור $ 2, ואחריו נקודה, ואז הפלט של פקודת התאריך! הגיוני, נכון?

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

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

אתה תסריט? יש לך עצות למתחילים? שתף את מחשבותיך בתגובות! יש עוד דברים לבוא בסדרה זו!