מסוף שישי: בש [הרחבת המפתח]

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

הרחבת הסד

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

לדוגמה:

$ הד a {1,2,3} a1 a2 a3

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

$ הד {a, b, c} abc

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

$ mkdir ~ / Jobs / {one, two, three, four, five}

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

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

$ הד {1..5} # נכון 1 2 3 4 5 $ הד {a..f} # נכון abcdf $ הד {a..5} # לא נכון {a..5} # אני חושב שלעולם לא אתרגל לזה צבע כחול באות

אנו יכולים לחסוך זמן על ידי יצירת מחזור ל

# במקום לכתוב $ עבור ((i = 1; i <= 5; i ++)); לעשות הד "המספר שלי $ i"; עשית המספר שלי 1 המספר שלי 2 המספר שלי 3 המספר שלי 4 המספר שלי 5 # שמור קוד באמצעות הרחבת הסד. $ עבור i ב- {1..5}; לעשות הד "המספר שלי $ i; נעשה המספר שלי 1 המספר שלי 2 המספר שלי 3 המספר שלי 4 המספר שלי 5 # כמובן שזה תקף לשימוש למרות שהפלט שונה. $ echo" המספר שלי "{1..5} המספר שלי 1 המספר שלי 2 המספר שלי 3 המספר שלי 4 המספר שלי 5

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

הד $ {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3

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

$ echo {a, c {1..3}, d} a c1 c2 c3 d

ולבסוף מ באש שום דבר אפשר להגדיל את הערכים.

הד $ {0..20..2} 0 2 4 6 8 10 12 14 16 18 20

זה הכל להיום, אז תודה שקראתם לי אנשים 🙂

נוסף

כיצד ליצור סל מקומי

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

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

mkdir ~ / .bin # בדוגמה זו הוא יוסתר

עכשיו יש לנו את התיקיה שלנו כדי לשמור את הסקריפטים, אך היא לא תפעל עד שנוסיף את הנתיב של. Bin החדש ל- $ PATH
לשם כך הקובץ נערך bash_profile, והשורה מתווספת.

ייצא PATH = $ PATH: ~ /. bin

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

#! / bin / bash echo "שלום $ 1, מה שלומך?"

שמור אותו עם שם שלום
לסקריפט ניתנת אישור ביצוע וזה יהיה מספיק להתקשר אליו מהטרמינל

$ hello wada # זה יראה את ההודעה Hello wada, מה שלומך?

אז בעזרת הטריק המהיר הזה תוכלו להריץ את הסקריפטים שלכם מהר יותר

זה הכל להיום אנשים בריאים 🙂
נ.ב סליחה על טעויות, אם יש, העיניים שלי כבר נעצמות חחח 😀


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

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

*

*

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

  1.   מטלטל דיג'ו

    אני כבר הרבה זמן בנושא הבאש ולא הבנתי את הרחבות הסד אלה, תודה.

    בטריק הנתיב, פדורה כברירת מחדל עושה משהו כזה אבל ב "~ / .local / bin", תסתכל בקטע של פרופיל bash_prof שהבאתי לג'סי.

    PATH = $ PATH: $ HOME / .local / bin: $ HOME / bin
    ייצא PATH

    1.    ריקרדו דיג'ו

      יש לי כמה חששות:
      1. כיצד אוכל לגרום לו לתת לי שני מרווחים עם הרחבה לפי נקודות; בגילאים {1..24,55..90} ושאני מרחיב את הגילאים בין 1 ל -24 וממשיך עם 55 עד XNUMX. כמו שעשיתי זה לא עבד. למה?

      2. אם אני רוצה שהערך הראשון יהיה ריק והמשיך במספור:
      wget: http://manga.favorito /תמונה http://manga.favorito/imagen1
      ניסיתי בדרך הבאה אבל wget לא קיבל: http://manga.favorito/imagen{, 1..42} לטענתי, אצטרך להשאיר את השם הפרטי ללא מספר ולהמשיך במספור מ -1 עד 42 אך זה לא היה ככה. למה?

    2.    ואדה דיג'ו

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

  2.   הדגמה דיג'ו

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

    1.    ואדה דיג'ו

      תודה על דבריך אחי 😀 אני מבטיח שביום שישי הבא אעשה את ההודעה הזו. ואני חייב להתאים אישית את Vim hahaha אבל לא רציתי שיחשבו שזה יקיף רק את Vim.

  3.   edoardo_or דיג'ו

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

    1.    ואדה דיג'ו

      תודה רבה 😀 אנסה לעמוד בקצב.

  4.   ג'ואנלי דיג'ו

    טיפ מצוין לפח המקומי!
    ברכות!

    1.    ואדה דיג'ו

      מעולה, נהדר שזה מועיל לך, תודה רבה לך שעברת אח 😀

  5.   גיסקארד דיג'ו

    טוב מאוד! אין מושג לגבי זה. תודה 🙂

    1.    ואדה דיג'ו

      אתה אח מוזמן תודה לך שהקדשת זמן לקרוא את זה 😀

  6.   ריקרדו דיג'ו

    יש לי כמה חששות:
    1. כיצד אוכל לגרום לו לתת לי שני מרווחים עם הרחבה לפי נקודות; בגילאים {1..24,55..90} ושאני מרחיב את הגילאים בין 1 ל -24 וממשיך עם 55 עד XNUMX. כמו שעשיתי זה לא עבד. למה?

    2. אם אני רוצה שהערך הראשון יהיה ריק והמשיך במספור:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    ניסיתי בדרך הבאה אבל wget לא קיבל: http://manga.favorito/imagen{, 1..42} לטענתי, אצטרך להשאיר את השם הפרטי ללא מספר ולהמשיך במספור מ -1 עד 42 אך זה לא היה ככה. למה?
    * סליחה אבל שמתי את ההודעה הראשונה כתשובה והיא הייתה שגויה בחלקים מסוימים

    1.    ואדה דיג'ו

      1.- ההיגיון שלך שגוי אתה צריך לקנן אותו חחח נסה עם $ echo {{1..24},{55..90}}

      2.- זהה לקודם ... $ echo "URL"{,{1..42}}

      אל תדאג אחי, אנחנו כאן כדי לעזור לנו 🙂

  7.   jvk85321 דיג'ו

    כדי להחליף את ה- for עם הד זה ייראה כך

    הד "המספר שלי" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'

    אבל אני מעדיף printf

    printf "אני, אני% d \ n" {1..5}

    והשתמש באותו מושג של הרחבת מפתח

    atte
    jvk85321

    1.    jvk85321 דיג'ו

      איך מכניסים את קופסאות המסוף ????

      atte
      jvk85321

  8.   jvk85321 דיג'ו

    בודק אם תג הקוד עובד
    jeje

    כדי להחליף את ה- for עם הד זה ייראה כך

    echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’

    pero prefiero printf

    printf “Mi numero %d\n” {1..5}

    והשתמש באותו מושג של הרחבת מפתח

    atte
    jvk85321

    1.    jvk85321 דיג'ו

      נשארתי עם כמה באגים אבל זה עבד

      אני חי מלוקו

      סליחה על ההפרעה

      atte
      jvk85321

      1.    ואדה דיג'ו

        חחח ענית בעצמך אבל אם זה בין תוויות אין רווחים ...

        ועל החלפת ה- for אין צורך לעשות כל כך הרבה צינור hahahaha מספיק עם:
        echo -e "Mi numero "{1..5}"\n\b"

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

      2.    ואדה דיג'ו

        אני לוקח את החללים! חה חה חה חה חה

        בוא נראה עכשיו 😀

      3.    ואדה דיג'ו

        לעזאזל זה "פחות מ"קוד" גדול מ "" פחות מ "/ קוד" גדול מ"הההההה

      4.    jvk85321 דיג'ו

        הבעיה שה- e אינה סטנדרטית, ולכן היא לא עובדת בכל המערכות.

        גם יוצא מבולגן
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5

        jvk@jvktos:~$
        ועם זה
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        אני חושב שהשנייה מציגה את התוצאה טוב יותר, חחחח

        atte
        jvk85321

      5.    jvk85321 דיג'ו

        התוויות האלה הן משעממות, hehehe, בואו נראה אם ​​הן מסתדרות עכשיו
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        ועם זה
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        אני חושב שהשנייה מציגה את התוצאה טוב יותר, חחחח
        atte
        jvk85321

      6.    jvk85321 דיג'ו

        בכל מקרה, השאר את הרווחים בין השורות, בגלל זה אני שונא את html, חחחחח

  9.   חואקין דיג'ו

    מְעוּלֶה! אני מוחאת כפיים ברגלך חח

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

    1.    ואדה דיג'ו

      תודה לך על האח שעבר, אני שמח שזה היה שימושי

      1.    חואקין דיג'ו

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