צור סקריפטים משלך באמצעות bash

לימוד לינוקס

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

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

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

$ mkdir /home/pedro/.bin

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

עכשיו אתה צריך הודיעו לינוקס שהיא צריכה גם להסתכל שם (/home/pedro/.bin) ההזמנות שמבוצעות מהטרמינל.

$ PATH=$PATH;/home/pedro/.bin

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

$ sudo nano /etc/environment

ואנחנו מוסיפים

:/home/pedro/.bin

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

התסריט הראשון שלנו שלב אחר שלב

אנו יוצרים את הקובץ שלנו, כך במקרה שלי:

$ touch ~/.bin/donde

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

$ gedit ~/.bin/donde &

ונוסיף את התוכן הבא:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

ניתוח סקריפטים

קו השיחה הראשון שלנו «שבנג»(#! / Usr / bin / env bash) בקש מלינוקס לדווח היכן שנמצא מעטפת הבש וכי מה שמגיע אחר כך מבוצע על פי הדרישות של bash. אמצעי זהירות זה זה נוח לוודא את זה התסריטים שלנו עובדים על כל התקנה. אפשרות אחרת שבנג הוא צחק:

#!/bin/bash

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

שורה שלישית: כפי שאתה יכול לראות, השורה השנייה היא אם. בשביל לבוש את הדמויות «$#« מכילים את מספר הפרמטרים שאנו מעבירים משורת הפקודה. לכן, »אם [$ # -lt 1];» פירושו המילולי "אם מספר הפרמטרים קטן מ -1".

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

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

שורה שישית: מציין כי הדברים הבאים יבוצעו כאשר התנאי שהכרזנו אינו נכון.

שורה שביעית: Se הפעל את הפקודה «איפה« מלווה בתוכן שעברנו כ פרמטר ראשון.

שורה שמינית: עם «fi»מציין כי הבלוק מסתיים if.

בודק את התסריט שלנו

חשוב להוסיף הרשאות כתיבה לתסריט:

$ chmod -x ~/.bin/donde

ללא זאת, תופיע שגיאת "אישור נדחה".. לאחר מכן נוכל להריץ את התסריט שלנו.

$ donde php

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

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

מכסה מחדש

  • אנו מאפשרים a ספריה ".bin" כדי לאכלס את התסריטים שלנו.
  • אנו מספקים מידע לינוקס כדי לכלול את הספרייה הזו בחיפושי הפקודה שלה.
  • אנו יוצרים את התסריט שלנו.
  • הבדל בין שונה שבנג.
  • שימוש ב מספר הפרמטרים שהועברו עם $ #.
  • שימוש ב פרמטר ראשון עם $1.

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   מיגל דיג'ו

    טוב מאוד ומוסבר היטב, אבל למה פרמטר מתייחס?

    1.    תמונה של פדרו רואיס הידאלגו דיג'ו

      תודה מיגל!

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

      בפקודת linux להעתקת הקובץ a.txt לקובץ b.txt, נכתוב את הדברים הבאים:

      $cp a.txt b.txt

      תוכנית ה- cp כאן מקבלת שני פרמטרים שהם שמות של שני קבצים, הראשון (חייב להתקיים) a.txt והשני b.txt.

      דוגמא נוספת: אם אתה שולח להדפסה מהקונסולה עם הפקודה

      $ lp file.pdf

      במקרה זה "file.pdf" הוא פרמטר לתוכנית lp.

      אני מקווה שסיפקתי את ספקותיך.

      לגבי

  2.   מיגל דיג'ו

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

    1.    תמונה של פדרו רואיס הידאלגו דיג'ו

      אני לא יודע מה קרה, בכל מקרה זה פורסם.

      ברכות.