امروزه Bash خط فرمان پیش فرض اکثر توزیع های مدرن لینوکس است، اگر چه ممکن است تا به حال متوجه این موضوع شده باشید که رنگ متن و محتوای ترمینال ها در توزیع های مختلف متفاوت است. یا شاید از خود پرسیده باشید که چگونه این محیط را برای دسترسی بهتر و یا سلیقه خود شخصی سازی کنید. در این مقاله چگونگی انجام آن را به شما توضیح خواهیم داد.
متغیر محیطی Bash به نام PS1
ظاهر خط فرمان و ترمینال توسط متغیر محیطی PS1 مدیریت می شود. بر اساس صفحه ی man مربوط به Bash، متغیر PS1 درحقیقت استرینگ prompt اولیه (prompt string) را ارائه می دهد که زمانی که شل آماده خواندن یک دستور است این string نمایش داده می شود.
مقادیر مجاز برای متغیر PS1 شامل چندین کاراکتر خاص backslash-escape می باشد که معنی آنها در بخش PROMPTING از صفحه ی man لیست شده اند.
برای روشن تر کردن این موضوع، بیایید محتوای در حال حاضر PS1 را در سیستم خودمان نشان دهیم. (البته این خروجی ممکن است در سیستم شما متفاوت باشد)
حال بیایید یک قدم فراتر بگذاریم و رنگ user و hostname را در command prompt تغییر دهیم - هم در متن آن و هم در رنگ background این متن تغییر ایجاد می کنیم.
در حقیقت می توانیم از 3 جهت خط فرمان را تغییردهیم.
از کاراکتر خاص \e در ابتدا و کاراکتر m در انتها جهت نشان دادن اینکه آنچه بین این دو کاراکتر می آید یک شماره ی رنگ است، استفاده می شود.
این سه متغیر در این دنباله (background ،format ,text color) با استفاده از کاما از یکدیگر جدا شده اند، در صورتی که یکی از مقادیر را وارد نکرده باشید از مقدار پیشفرض آن استفاده می شود.
همچنین تا زمانی که رنج مقادیر متفاوت باشند اهمیتی ندارد که کدام یک (background ،format ، text color) را اول مشخص کنید.
به عنوان مثال متغیر PS1 زیر رنگ پس زمینه را به قرمز و رنگ متن را به زرد تبدیل میکند و زیر آن خط (underlined) می اندازد :
به همین خوبی که به نظر می رسد این تنظیمات فقط برای این کاربر و در این پنجره باقی خواهد ماند، در صورتی که ترمینال را ببندید و یا از این session خارج شوید این تغییرات از بین خواهند رفت.
در صورتی که بخواهید این تنظیمات دایمی شوند کافیست با توجه به نوع توزیعلینوکس خود خطوط زیر را به فایل ~/.bashrc یا ~/.bash_profile اضافه کنید :
با رنگ ها بازی کنید و آنها را تغییر دهید تا به حالت دلخواه خود برسید.
همچنین توصیه میشود مقالات زیر را هم مطالعه کنید :
آموزش دستور awk در linux
نحوه نمایش رنگی صفحات دستور Man در لینوکس
ccat - نمایش خروجی دستور cat به صورت رنگی و Highlight شده
نحوه شخصی سازی و حذف مسیر دایرکتوری ها یا فولدرها در ترمینال لینوکس
خلاصه
در این مقاله نحوه شخصی سازی رنگ و محتوای خط فرمان را در Bash prompt توضیح دادیم، در صورتی که سوال و یا پیشنهادی درباره این پست دارید با ما در میان بگذارید.
متغیر محیطی Bash به نام PS1
ظاهر خط فرمان و ترمینال توسط متغیر محیطی PS1 مدیریت می شود. بر اساس صفحه ی man مربوط به Bash، متغیر PS1 درحقیقت استرینگ prompt اولیه (prompt string) را ارائه می دهد که زمانی که شل آماده خواندن یک دستور است این string نمایش داده می شود.
مقادیر مجاز برای متغیر PS1 شامل چندین کاراکتر خاص backslash-escape می باشد که معنی آنها در بخش PROMPTING از صفحه ی man لیست شده اند.
برای روشن تر کردن این موضوع، بیایید محتوای در حال حاضر PS1 را در سیستم خودمان نشان دهیم. (البته این خروجی ممکن است در سیستم شما متفاوت باشد)
کد PHP:
$ echo $PS1
[\u@\h \W]\$
اکنون نحوه شخصی سازی PS1 را با توجه به نیازمان برای شما توضیح می دهیم.
شخصی سازی قالب PS1
با توجه به قسمت PROMPTING در صفحه man، توضیحات مربوط به هر کاراکتر خاص به شرح زیر میباشد :
\u : نام کاربر (username) جاری سیستم
\h : این کاراکتر مربوط به Hostname سیستم میباشد، در حقیقت نامی که تا قبل از اولین dot (.) در FQDN یا Fully-Qualified Domain Name آمده است.
\W : نام اصلی (basename) مسیر کاری جاری (working directory) و کاراکتر ~ که مخففی است برای متغیر $HOME
\$ : در صورتی که کاربر جاری root باشد علامت # و در غیر این صورت علامت $ نمایش داده می شود. برای مثال میتوانید از کاراکتر \! را برای نمایش شماره دستور جاری در history و یا از \H برای نمایش FQDN (نام کامل دامنه مثلا example.com) به جای نام کوتاه سرور، استفاده کنید.
در مثال زیر ما هر دوی این متغیرها را به محیط ترمینال کنونی خود با استفاده از دستور زیر اضافه کرده ایم :
هنگامی که کلید Enter را می فشارید خواهید دید که محتوای خط فرمان شما مانند تصویر زیر تغییر می کند، خط فرمان خود را قبل و بعد از اجرای دستور مقایسه کنید.
شخصی سازی قالب PS1
با توجه به قسمت PROMPTING در صفحه man، توضیحات مربوط به هر کاراکتر خاص به شرح زیر میباشد :
\u : نام کاربر (username) جاری سیستم
\h : این کاراکتر مربوط به Hostname سیستم میباشد، در حقیقت نامی که تا قبل از اولین dot (.) در FQDN یا Fully-Qualified Domain Name آمده است.
\W : نام اصلی (basename) مسیر کاری جاری (working directory) و کاراکتر ~ که مخففی است برای متغیر $HOME
\$ : در صورتی که کاربر جاری root باشد علامت # و در غیر این صورت علامت $ نمایش داده می شود. برای مثال میتوانید از کاراکتر \! را برای نمایش شماره دستور جاری در history و یا از \H برای نمایش FQDN (نام کامل دامنه مثلا example.com) به جای نام کوتاه سرور، استفاده کنید.
در مثال زیر ما هر دوی این متغیرها را به محیط ترمینال کنونی خود با استفاده از دستور زیر اضافه کرده ایم :
کد PHP:
PS1="[\u@\H \W \!]\$"
حال بیایید یک قدم فراتر بگذاریم و رنگ user و hostname را در command prompt تغییر دهیم - هم در متن آن و هم در رنگ background این متن تغییر ایجاد می کنیم.
در حقیقت می توانیم از 3 جهت خط فرمان را تغییردهیم.
از کاراکتر خاص \e در ابتدا و کاراکتر m در انتها جهت نشان دادن اینکه آنچه بین این دو کاراکتر می آید یک شماره ی رنگ است، استفاده می شود.
این سه متغیر در این دنباله (background ،format ,text color) با استفاده از کاما از یکدیگر جدا شده اند، در صورتی که یکی از مقادیر را وارد نکرده باشید از مقدار پیشفرض آن استفاده می شود.
همچنین تا زمانی که رنج مقادیر متفاوت باشند اهمیتی ندارد که کدام یک (background ،format ، text color) را اول مشخص کنید.
به عنوان مثال متغیر PS1 زیر رنگ پس زمینه را به قرمز و رنگ متن را به زرد تبدیل میکند و زیر آن خط (underlined) می اندازد :
کد PHP:
PS1="\e[41;4;33m[\u@\h \W]$ "
به همین خوبی که به نظر می رسد این تنظیمات فقط برای این کاربر و در این پنجره باقی خواهد ماند، در صورتی که ترمینال را ببندید و یا از این session خارج شوید این تغییرات از بین خواهند رفت.
در صورتی که بخواهید این تنظیمات دایمی شوند کافیست با توجه به نوع توزیعلینوکس خود خطوط زیر را به فایل ~/.bashrc یا ~/.bash_profile اضافه کنید :
کد PHP:
PS1="\e[41;4;33m[\u@\h \W]$ "
همچنین توصیه میشود مقالات زیر را هم مطالعه کنید :
آموزش دستور awk در linux
نحوه نمایش رنگی صفحات دستور Man در لینوکس
ccat - نمایش خروجی دستور cat به صورت رنگی و Highlight شده
نحوه شخصی سازی و حذف مسیر دایرکتوری ها یا فولدرها در ترمینال لینوکس
خلاصه
در این مقاله نحوه شخصی سازی رنگ و محتوای خط فرمان را در Bash prompt توضیح دادیم، در صورتی که سوال و یا پیشنهادی درباره این پست دارید با ما در میان بگذارید.