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

שימוש בהנחות אלה

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

ההנחיות הגדולות והמורכבות יותר כמו Twtty צריכות להישמר בקובץ התסריט שלהם (כגון myprompt.sh), ואתה מציב שורה כמו

 מקור myprompt.sh 

בקובץ .basrc כדי "לייבא" אותם.

פעמיים הפקודה

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

 function_command {TERMWIDTH = $ {COLUMNS} # חישוב רוחב ההודעה: hostnam = $ (echo -n $ HOSTNAME | sed -e "s /[\.].*//") # "whoami" ו- "pwd "הוספת שורה חדשה נגררת usernam = $ (whoami) cur_tty = $ (tty | sed -e" s /. tty \ (. * \) / \ 1 / "newPWD =" $ {PWD} "# הוסף את אביזרים להלן ... תן הנחיה = $ (echo -n "- ($ {usernam} $ $ {hostnam}: $ {cur_tty}) --- ($ {PWD}) -" | wc -c | ("מילוי" - gt "0"), מילוי = "$ {fill} -" תן מילוי = $ {מילוי} } -1 נעשה אם ["$ fillize" -lt "0"] ולאחר מכן תן לחתוך = 3 - $ {מילוי} newPWD = "... $ (echo -n $ PWD | sed -e" s / \ (^. "[{$ $ cut \} \) \" / \ 2 / ")" Fi} PROMPT_COMMAND = הפקודה & COMMAND פונקציה twtty {מקומי GREY = "\ [\ 033 [1, 30m \]" מקומי LIGHT_GRAY = "\ \ \ 033 \ 0 \ 033 [0m \]] "מקומי LIGHT_BLUE =" \ [\ 033 [1, 34m \ ] "מקומי YELLOW =" \ [\ 033 [1; 33m \] "$ $ TERM ב- xterm *) TITLEBAR = '\ [\ 033] 0; \ u @ \ h: \ w \ 007 \]' ;; *) TITLEBAR = "" ;; esac PS1 = "$ TITLEBAR \ $ YELLOW- $ LIGHT_BLUE - (\ $ YELLOW \ $ usernam $ LIGHT_BLUE @ $ YOWOW \ $ hostnam $ LIGHT_BLUE: $ WHITE \ $ cur_tty \ $ {LIGHT_BLUE}) - $ {YELLOW} - \ $ {fill} $ {LIGHT_BLUE} - (\ $ YELLOW \ $ {newPWD} \ $ LIGHT_BLUE) - $ YELLOW- \ \ n \ $ YELLOW- $ LIGHT_BLUE - (\ $ YELLOW \ $ (תאריך +% H% M) $ LIGHT_BLUE: $ YELLOW \ $ ($ \% a, % d% b% y \ ") \ $ LIGHT_BLUE: $ WHITE \ $$ LIGHT_BLUE) - \ $ YELLOW- \ $ NO_COLOUR" PS2 = "$ LIGHT_BLUE- $ YELLOW - $ YELLOW - $ NO_COLOUR "} 

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

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

High-Minimalist הפקודה

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

 PS1 = "[\ d | \ T -> \ w ... \ $?] \ N #" 

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

רוב של הפקודה

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

 PS1 = "[\ / 033 [0; 33m \] [\!] \" אם [[\ $? = "0"]], ולאחר מכן הד "\\ [\\ 033 [32m \\]"; echo אחר "" \ / [\\ 033 [31m \\] "; 31 \ \ h: \ u003d \ u003d \ u003d \ u003d \ u003d \ u003d \ \\ W "; אחרת הד" \\ w "; Fi \ \] \ $ \ [\ 033 [0m \]"; echo -ne "\ 033] 0;` hostname -s`: `pwd` \ 007" 

MegaFancyPrompt

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

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

 COLOR_WHITE = '03' COLOR_LIGHTGRAY = '033 [0, 37m' COLOR_GRAY = '\ 033 [1, 30m' COLOR_BLACK = '\ 033 [0, 30m' COLOR_RED = '\ 033 [0, 31m' COLOR_LIGHTRED = '\ 033 [1, 31m' COLOR_GREEN = '\ 033 [0, 32m' COLOR_LIGHTGREEN = '\ 033 [1, 32m' COLOR_BROWN = '\ 033 [0, 33m' COLOR_YELLOW = '\ 033 [1, 33m' COLOR_BLUE = '\ 033 [0, 34m' COLOR_LIGHTBLUE = '\ 033 [1, 34m' COLOR_PURPLE = '\ 033 [0, 35m' COLOR_PINK = '\ 033 [1, 35m' COLOR_CYAN = '\ 033 [0, 36m' COLOR_LIGHTCYAN = '\ 033 [1, 36m' COLOR_DEFAULT = '\ 033 [0m' # פונקציה להגדרת הנחייה. (= $ $}}, אם [$ $ {TTY}]]; [= $ = TTY =] $ {tty | awk -f / dev / '{print $ 2} ולאחר מכן SES_SRC = $ $ ($ gpr "$ TTY" | awk "{print $ 6} ') fi # titlebar $ $ {TERM} ב- xterm *) Local TITLEBAR =' \ [\ 033] 0; \ @ @ \ h : {\ w} \ 007 \] ';; *) Local TITLEBAR = '' ;; esac PS1 = "$ {TITLEBAR}" # בדיקה לשינוי יום. אם [-z $ DAY]; ולאחר מכן לייצא DAY = $ (תאריך +% A) אחר מקומי היום = $ (תאריך +% A) אם ["$ {DAY}"! = "$ {today}"]; ולאחר מכן PS1 = "$ {PS1} \ n \ [$ {COLOR_GREEN} \] היום השתנה ל- $ (תאריך '+% A, % d% B% Y'). \ n" הייצוא DAY = $ fi fi fi # User אם [$ {UID} -Eq 0]; ולאחר מכן אם ["$ {USER}" == "$ {LOGNAME}"]; אז אם [[$ {SUDO_USER}]]; ואז PS1 = "$ {PS1} \ [$ {COLOR_RED} \] \ u1 אחר PS1 =" $ {PS1} \ [$ {COLOR_LIGHTRED} \] \ u "fi אחר PS1 =" $ {PS1} \ [$ {COLOR_YELLOW} \] \ u \ Fi אחר אם [$ {USER} == $ {LOGNAME}]; ולאחר מכן PS1} \ "$ {PS1} \ [$ {COLOR_GREEN} \] '\ PS1 \" $ {PS1} \ [$ {COLOR_BROWN} \] \ u "fi \ # HTTP הוגדרו או לא אם [- n "$ http_proxy"]; ואז PS1 = "$ {PS1} \ [$ {COLOR_GREEN} \] @" אחר PS1 = "$ {PS1} \ [$ {COLOR_LIGHTRED} \] @ fi # מארח אם [[$ {SSH_CLIENT}]] | [[$ {SSH2_CLIENT}]]; ולאחר מכן SSH_FLAG = 1 Fi אם [$ {SSH_FLAG} -Eq 1]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_CYAN} \] \ h" elif [[-n $ {SESS_SRC}]]; אז אם ["$ {SESS_SRC}" == "(: 0.0)"]; ולאחר מכן PS1} [$ {COLOR_GREEN} \] \ h "else local_process =` cat / proc / $ {PPID} / cmdline` אם [["$ parent_process" == "in.rlogind *" ]]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_BROWN} \] \ h" elif [["$ parent_process" == "in.telnetd *"]]; ואז PS1 = "$ {PS1} \ [$ {COLOR_YELLOW} \] \ h" אחר PS1 = "$ {PS1} \ [$ {COLOR_LIGHTRED} \] \ h" fi fi elif [["$ {SESS_SRC}" = = ""]]; ולאחר מכן PS1} \ "$ {PS1} \ [$ {COLOR_GREEN} \] \ h \" אחר PS1 = "$ {PS1} \ [$ {COLOR_RED} \] \ h \" # # מנותק מסך הפעלות מקומי DTCHSCRN = $ (מסך - ls | grep -c Detach) אם [$ {DTCHSCRN} -gt 2]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_RED} \] [scr: $ {DTCHSCRN}]" elif [$ {DTCHSCRN} -gt 0]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_YELLOW} \] [scr: $ {DTCHSCRN}]" fi # משימות הרקע המקובלות המקומיות BKGJBS = $ (jobs -r | wc-l) אם [$ {BKGJBS} gt 2]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_RED} \] [bg: $ {BKGJBS}]" elif [$ {BKGJBS} -gt 0]; ולאחר מכן PS1} \ "$ {PS1} \ [$ {COLOR_YELLOW} \] [bg: $ {BKGJBS}]" fi # stopopped Jobs STPJBS = $ (jobs -s | wc -l) אם [$ {STPJBS} -gt 2]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_RED} \] [stp: $ {STPJBS}]" elif [$ {STPJBS} -gt 0]; ולאחר מכן PS1 = "$ {PS1} \ [$ {COLOR_YELLOW} \] [stp: $ {STPJBS}]" fi # Bracket {if [$ {UID} -eq 0]; ולאחר מכן אם ["$ {USER}" == "$ {LOGNAME}"]; אז אם [[$ {SUDO_USER}]]; ולאחר מכן PS1} "$ {PS1} \ [$ {COLOR_RED} \]" אחר PS1 = "$ {PS1} \ [$ {COLOR_LIGHTRED} \]" Fi else PS1 = "$ {PS1} \ [$ {COLOR_YELLOW} \ ] "fi אחר אם [" $ {USER} "==" $ {LOGNAME} "]; ולאחר מכן PS1} \ "$ {PS1} \ [$ {COLOR_GREEN} \]" אחר PS1 = "$ {PS1} \ [$ {COLOR_BROWN} \" "Fi1 PS1 =" $ {PS1} {"# work directory אם [ -w "$ {PWD}"]; ואז PS1 = "$ {PS1} \ [$ {COLOR_GREEN} \] $ (prompt_workingdir) 'אחר PS1 =" $ {PS1} \ [$ {COLOR_RED} \] $ (prompt_workingdir)' fi # סוגר סוגר & $ $ \ # אם [$ {UID} -Eq 0]; ולאחר מכן אם ["$ {USER}" == "$ {LOGNAME}"]; אז אם [[$ {SUDO_USER}]]; ולאחר מכן PS1} "$ {PS1} \ [$ {COLOR_RED} \]" אחר PS1 = "$ {PS1} \ [$ {COLOR_LIGHTRED} \]" Fi else PS1 = "$ {PS1} \ [$ {COLOR_YELLOW} \ ] "fi אחר אם [" $ {USER} "==" $ {LOGNAME} "]; PS1 = \ $ $ COLOR_GREEN} \ "$ PS1} [$ { COLOR_DEFAULT} \ ""} # עבודה לקצץ dir עד 1/4 פונקציית רוחב המסך prompt_workingdir () {local pwdmaxlen = $ ($ COLUMNS / 4)) trunc_symbol מקומי = "..." אם [[$ PWD == $ בית* ]]; ולאחר מכן newPWD = "~ $ {PWD # $ HOME}" אחר newPWD = $ {PWD} Fi אם [$ {# newPWD} -gt $ pwdmaxlen]; ($ {# newPWD} - $ pwdmaxlen + 3)) NewPWD = "$ {trunc_symbol} $ {newPWD: $ pwdmaxlen}" echo $ newPWD} # קביעת המהדורה להצגה: # 1. הצגת הודעה מותאמת אישית פשוטה עבור הפגישות הפעלות התחיל # על ידי סקריפט. # 2. הצג "bland" הפקודה עבור פגז הפעלות בתוך emacs או # xemacs. # 3 הצג הצג הודעה עבור כל שאר המקרים. פונקציה load_prompt () {{קבל PIDs מקומי parent_process = $ (cat / proc / $ PPID / cmdline | cut-d \. -f 1) אם [[$ parent_process == script *]]; ולאחר מכן PROMPT_COMMAND = "" PS1 = "\ t - \ # - \ u @ \ H {{w} \ $" elif [[$ parent_process == emacs * || $ parent_process == xemacs *]]; לאחר מכן PROMPT_COMMAND = "" PS1 = "\ u @ \ h {\ w} \ $" אחר ייצא DAY = $ (תאריך +% A) PROMPT_COMMAND = promptcmd Fi ייצא את PS1 PROMPT_COMMAND} load_prompt 

בונוס - מציאת הצבעים הנכונים

כפי שאולי שמתם לב, רוב ההנחיות משתמשות בצבע, והצבע מיוצג לעתים קרובות בצורה מקודדת כמו '033 [1, 30m', אשר די קשה לקרוא או לזכור. דרך קלה לראות את כל הצבעים הזמינים שלך, ולהציג בתצוגה מקדימה כיצד הם ייראו, היא פשוט להדביק את קטע הקוד הבא לדפדפן שלך:

 עבור אני ב 1q 7; 30 48; seq 90 107 `; לעשות echo -e \ e [$ {i} mtest \ e [0m $ i \ "נעשה 

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

סיכום

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