23Aug

מדריך למתחילים כדי מעטפת Scripting: את היסודות

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

מה זה Shell Scripting?

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

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

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

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

לפני שתתחיל

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

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

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

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

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

chmod + x ~ /somecrazyfolder/ script1

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

chmod u + x ~ /somecrazyfolder/ script1

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

cd ~ / somecrazyfolder

. /script1

כדי להפוך את הדברים לנוחים יותר, תוכל להציב קבצי Script בתיקייה "bin" בספריית הבית שלך:

~ / bin

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

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

אשר [הפקודה]

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

הנחיות Scripting

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

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

Hash-Bang HAC

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

#!/bin/ bash

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

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

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

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

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

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

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

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

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

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

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

touch ~ /bin/ datecp

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

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

ננו ~ /bin/ datecp

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

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

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

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

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

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

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

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

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

ועבורנו, היינו בונים את זה כך:

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

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

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

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

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

cp -iv $ 1 $ 2. $ date_formatted

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

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

cp -iv Trogdor2.mp3 ringtone.mp3

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

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

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

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

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

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

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

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

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