اضافه کردن رنگ به خط فرمان
بیشتر برنامههای شبیهساز ترمینال از برخی کاراکترها به منظور کنترل برخی مشخصهها (مثل رنگ و متن بولد) و موقعیت مکاننما استفاده میکنند. موقعیت مکاننما را در انتهای این درس توضیح خواهیم داد اما ابتدا به رنگ نگاهی بیندازیم.
اضافه کردن رنگ به خط فرمان
کاراکتر رنگ با ارسال کاراکتر به شبیهساز، رنگ را تعیین میکند. کدهای کنترا بر روی تصویر چاپ نمیشوند، بلکه به جای آن تفسیر میشود و نتیجه آن مشاهده میشود. همانطور که در دروس قبلی دیدیم توالیهای \[ و \]به منظور کپسولهسازی کاراکترهای چاپنشدنی استفاده میشوند.
به منظور تغییر رنگها از کدهای موجود در جدول زیر استفاده میکنیم:
| توالی | رنگ متن |
|---|---|
| \033[0;30m | سیاه |
| \033[0;31m | قرمز |
| \033[0;32m | سبز |
| \033[0;33m | قهوهای |
| \033[0;34m | آبی |
| \033[0;35m | بنفش |
| \033[0;36m | فیروزهای |
| \033[0;37m | خاکستری روشن |
| \033[1;30m | خاکستری تیره |
| \033[1;31m | فرمز روشن |
| \033[1;32m | سبز روشن |
| \033[1;33m | زرد |
| \033[1;34m | آبی روشن |
| \033[1;35m | بنفش روشن |
| \033[1;36m | فیروزهای روشن |
| \033[1;37m | سفید |
اکنون که کدهای رنگ را مشاهده کردید، آن را اجرا خواهیم کرد. کد رنگ خاکستری را انتخاب کرده و آن را کپسوله کنید و مقدار را در متغیر PS1 تعریف کنید.
<me@linuxbox ~>$ PS1="\[\033[0;31m\]<\u@\h \W>\$ " <me@linuxbox ~>$
همچنین میتوانید رنگهای پسزمینه خط فرمان را با استفاده از کدهای زیر موجود در جدول تغییر دهیم:
| توالی | رنگ پسزمینه |
|---|---|
| \033[0;40m | سیاه |
| \033[0;41m | قرمز |
| \033[0;42m | سبز |
| \033[0;43m | قهوهای |
| \033[0;44m | آبی |
| \033[0;45m | بنفش |
| \033[0;46m | فیروزهای |
| \033[0;47m | خاکستری روشن |
جابهجا کردن مکاننما
کدهای Escape (توالیهای \[ و \]) را میتوان به منظور تعیین موقعیت مکاننما استفاده کرد. این کار معمولاً به منظور نمایش یک ساعت و یا برخی دیگر از اطلاعات مفید در موقعیتهای مختلف در صفحهنمایش استفاده میشود.
جدول زیر لیست کدهای موقعیتهای مختلف را نمایش میدهد:
| کد عبور | عملکرد |
|---|---|
| \033[l;cH | جابجایی مکاننما به خط 1 و ستون c |
| \033[nA | جابجایی مکاننما به n خط بالا |
| \033[nB | جابجایی مکاننما به n خط پایین |
| \033[nC | جابجایی مکاننما به n کاراکتر به جلو |
| \033[nD | جابجایی مکاننما به n کاراکتر به عقب |
| \033[2J | پاک کردن صفحهنمایش و جابجایی مکاننما به گوشه بالا چپ (خط 0 ستون 0) |
| \033[K | پاک کردن از موقعیت مکاننما به انتهای خط فعلی |
| \033[s | ذخیرهسازی موقعیت فعلی مکاننما |
| \033[u | فراخوانی موقعیت ذخیره شده مکاننما |
جدول زیر بصورت کامل و مورد به مورد، فرمانی که برای ایجاد ساعت وارد کردیم را تفسیر میکند:
| توالی | عملکرد |
|---|---|
| \[ | شروع یک توالی کاراکتر چاپ نشدنی. هدف واقعی آن این است که به بش اجازه دهد تا بهصورت صحیح اندازه قابل مشاهده خط فرمان را محاسبه کند. |
| \033[s | ذخیرهسازی موقعیت مکاننما. زمانی مورد نیاز است که میخواهیم به موقعیت خط فرمان برگردیم پس از اینکه ساعت در بالای صفحهنمایش چاپ شد. |
| \033[0;0H | جابجایی مکاننما به گوشه بالا چپ که خط 0 ستون 0 است. |
| \033[0;41m | تغییر رنگ پسزمینه به قرمز |
| \033[K | پاک کردن از موقعیت فعلی مکاننما (گوشه بالا چپ) به آخر خط. از آنجایی که رنگ پس زمینه قرمز است، رنگ این بخش خالی مانده و یک نوار ایجاد میشود. |
| \033[1;33m | تغییر رنگ متن به زرد |
| \t | نمایش زمان فعلی. در حالی که این یک عنصر چاپ شدنی است ما هنوز این را درون بخش چاپ نشدنی خط فرمان وارد میکنیم. چونکه ما نمیخواهیم بش در حین محاسبه اندازه واقعی خط فرمان ساعت را نیز شامل میشود. |
| \033[0m | خاموش کردن رنگ. این بر روی رنگ متن پس زمینه تاثیر میگذارد. |
| \033[u | بازیابی موقعیت مکاننما |
| \] | پایان توالی کاراکترهای چاپ نشدنی |
| <\u@\h \W>\$ | رشته خط فرمان |
اگر هماکنون ترمینال را ببندید و مجددا آن را باز کنید. مشاهده میکنید که همه تغییراتی که انجام دادهایم مثل خط فرمان اختصاصی، رنگ و مکاننما از بین میروند. مسلما شما تمایلی ندارید که هر بار این تغییرات را انجام دهید. پس بایستی این تغییرات را در جایی ذخیره کنیم. با اضافه کردن به فایل .bashrc این تغییرات ثابت خواهد بود.
در ادامه فایل .bashrc را با استفاده از nano باز کرده و به آخر فایل رفته و دو خط زیر را به آن اضافه کنید:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ " export PS1
درباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش جفنگ استفاده میکند. درباره چگونگی پردازش دادههای دیدگاه خود بیشتر بدانید.
دیدگاهتان را بنویسید