Bash Tips
984 subscribers
14 photos
4 files
45 links
רוצים להשתמש בלינוקס אבל לא ממש מכירים את הכלים שהיא מספקת לעבודה?

בערוץ הבא תמצאו אוסף טיפים שימושיים ב-Bash והכרות עם כלים שונים שעשויים לחסוך מאמץ ועבודה בכתיבת סקריפטים ומימוש אוטומציות.
Download Telegram
לחזור למקורות alias, command, \
רמת קושי: #beginners

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

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

$ alias date='date +"%d/%m/%Y"'
$ date
30/08/2020

ניתן לראות את כל ה alias שמוגדרים במערכת על ידי הרצה של

$ alias -p
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
...

או לראות alias לפקודה ספציפית

$ alias download-mp3
alias download-mp3='youtube-dl -t -c -x --audio-format mp3 '


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

$ date +"%Y/%m/%d"
date: extra operand `+%d/%Y/%m'
Try 'date --help' for more information.

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

$ date +"%d/%m/%Y" +"%Y/%m/%d"

לחזור למקורות
אז איך אפשר בעצם לפתור את הבעיה ולהסביר לבאש שכשאנו כותבים date אנו מתכוונים לפקודה המקורית? החברים בgnu חשבו עלינו ובאש מאפשרת לנו להריץ את הפקודה המקורית במספר דרכים

הראשונה היא על ידי הוספת תו \ לפני הפקודה

$ date +"%d/%Y/%m"
date: extra operand `+%d/%Y/%m'
Try 'date --help' for more information.

$ \date +"%d/%Y/%m"
30/2020/08

צורה נוספת אפשרית היא על ידי שימוש בפקודת command

$ command date +"%d/%Y/%m"
30/2020/08

כמובן שתמיד אפשר להריץ את הנתיב המלא של הפקודה /bin/date אבל יש לי תחושה שפחות תחשקו בכך.

#date
#alias
#command
#special_characters

@bash_tips