קיצורים ב Bash

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

 

 vi ~/.bashrc

ובסופו להוסיף (דוגמא בלבד):

alias starcraft=”wine /media/data/games/Starcraft/StarCraft.exe”
alias vi=”vim”
alias ll=”ls -l”
alias lll=”ls -hl”

שימו לב למשהו חשוב – אין צורך להוסיף את האינפורמציה של הוספת פרמטרים נוספים, אפשר לשים אותם והם יתווספו בסוף השורה הנ”ל כמו:

lll ~/

שבעצם במערכת מזוהה כ

ls -hl ~/

הערה: יש לזכור שזה לא יפעל עד שלא תתחבר מחדש לbash.

הבעיה שלי עם הדרך הזו היא שזה לא עובד במערכת מבוזרת או תחת cron. בעצם המערכת לא מפעילה bash ברגע שהיא מפעילה cron או משהו שמגיע בssh ולכן לא תזהה את הפעולות שכתובות תחת alias.

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

cat > /nfs/scripts/lll #!/bin/bash
ls -lh $@

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

chmod +x /nfs/scripts

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

echo “PATH=$PATH:/nfs/scripts/” >> /etc/profile

עכשיו כאשר תפעילו את הפקודות דרך ssh או cron הפקודות יזוהו.

Advertisements
This entry was posted in bash, לינוקס. Bookmark the permalink.

3 Responses to קיצורים ב Bash

  1. jim says:

    אוף, חשבתי שהכוונה היא לציטוטים מצחיקים מ bash.org
    😦

  2. tipid1 says:

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

    • goatl says:

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s