بایگانی

Posts Tagged ‘bash’

چ‌چ‌چ‌ (۸)‌: رنگی کردن خروجی فرمان ls در BASH


خیلی وقت بود که دنبال این بودم که بفهمم چطوری خروجی ls رو توی bash رنگی کنم و از این حالت مرده‌ی سادش در بیارم‌. خوبی این رنگ‌بندی موقعی معلوم می‌شه که توی دایرکتوری‌های تو در تو گم می‌شی‌. خلاصه یه پست از پیروزان عزیز امروز بانی خیر شد و من رو مجبور کرد که به سمت حل این مشکل برم و چیزایی یاد بگیرم‌. البته ناگفته نمونه که پیروزان هم چیز جالبی معرفی کرد که در ادامه‌ی مطلب توضیح استفاده ازش رو می‌دم‌.

برای رنگ کردن نتیجه‌ی خروجی خود دستور ls یه آرگومانی به این صورت داره ‎-‎‎-color که خروجی رو رنگی می‌کنه‌. یعنی هر بار که می‌خواین خروجی رنگی بگیرین باید یه همچین دستوری رو بزنین‌:

[bash]
ls –color
[/bash]
که خوب این یه کم ممکنه خسته کننده باشه‌. برای رفع مشکلش هم که طبیعیه می‌تونین از alias استفاده کنین‌، و برای ماندگار شدنش یه همچین خطی رو به فایل ‎.bashrc تون اضافه کنین:
[bash]
alias ls=»ls –color=always»
[/bash]
این دقیقا کاریه که خیلی از توزیع‌ها به صورت پیش‌فرض انجامش می‌دن‌. ولی خوب همونطور که گفتم دوست عزیزم پیروزان یه چیز جالب‌تر هم معرفی کرده بود‌. ماجرا از این قراره که این آرگومان ‎-‎‎-color که بحثش رو کردیم‌، بر می‌گرده از یه فایلی به اسم DIR_COLORS توی شاخه‌ی etc الگوی رنگ‌بندیش رو بر می‌داره‌ (‌که البته با توجه به توزیع‌های مختلف ممکنه جای این فایل فرق کنه‌). حالا یه آدم باحال نشسته و رنگ‌بندی متنوعی برای سیصد نوع فایل مختلف آماده کرده و توی این کانال git منتشر کرده‌. برای استفاده از این فایل اول اون رو دانلود کنین و برای مثال توی شاخه‌ی خانگی لینوکستون ذخیره کنین‌. حالا با اضافه کردن خط زیر توی فایل ‎.bashrc از رنگ‌بندی جدید لذت ببرین‌:
[bash]
eval $(dircolors -b LS_COLORS)
[/bash]
نمونه‌ای از خروجی این فایل به صورت زیره‌:

نمونه‌ای از خروجی فایل LS_COLOR

چ‌چ‌چ (۲) ‌: پوستهٔ Korn در یونیکس‌/‌لینوکس چیست‌؟


پوستهٔ Korn در یونیکس‌/لینوکس چیست‌؟
پوستهٔ Korn توسط دیوید کورن در آزمایشگاه‌های بل توسعه پیدا کرد‌. این پوسته با بیشتر ویژگی‌های پوستهٔ Bourne (پدر Bash) به طور فزاینده‌ای هم‌خوانی دارد‌.
همچنین این پوسته دارای ویژگی‌های تعاملی‌ای نظیر پوستهٔ C می‌باشد‌، اما با اجرای سریع‌تر و قابلیت‌های ویرایش بر‌خط توسعه یافته‌تر‌.
نسخهٔ ksh۹۳ از شرکت‌پذیری آرایه‌ها و قوانین ریاضی نقطهٔ سر‌ریز (Floating point) نیز پشتیبانی می‌کند‌.

ویژگی‌های پوستهٔ Korn

  1. تازیخچهٔ دستورات – بله
  2. ویرایش خط – بله
  3. تکمیل نام فایل – بله
  4. دستورات مستعار (‌Alias Commant) – بله
  5. پوستهٔ محدود (Restricted shells) – بله
  6. کنترل فعالیت‌ها – بله

‎‎/usr/bin/ksh‏

تمام اسکریپت‌های پوستهٔ KSH با خط زیر شروع می‌شوند‌:
[bash]
#! /usr/bin/ksh
[/bash]
نام این خط shebang‌، hashbang‌، hashpling و یا pound bang است‌. در ادامه نمونه دستوری از اسکریپت پوستهٔ KSH را مشاهده می‌کنید‌:
[bash]
#!/usr/bin/ksh
echo “Hello World!”
[/bash]

شما می‌توانید مکان KSH را با استفاده از دستور which پیدا کنید‌:
[bash]
$ which ksh
[/bash]

نمونهٔ خروجی‌:
[bash]
/usr/bin/ksh
[/bash]

Shebang‌ها مکان اصلی دستورات اجرایی سیستم را مشخص می‌کنند‌. این می‌تواند مشکلاتی را در سیستمی که از سیستم فایل غیر استاندارد استفاده می‌کند فراهم کند‌. حتی در مواقعی که سیستم مکان کاملا استانداردی را برای دستورات اجرایی‌اش استفاده می‌کند‌، کاملا ممکن است که نقاط مختلفی را برای ذخیر مترجم دستوراتتان استفاده کند‌. این مشکل می‌تواند با قابل حمل سازی اسکریپت‌، توسط Shebang‌ای به صورت زیر حل شود‌:
[bash]
#!/usr/bin/env ksh
echo “Hello World!”
[/bash]

منبع

تغییر (تثبیت‌) اعلان خط فرمان اسلکور


اعلان خط فرمان لینوکس در عین سادگی‌اش می‌تواند شدیدا کاربردی باشد‌! در توزیع‌های مختلف دیده بودم که این اعلان خط فرمان فقط در علائم کاربری $ و ریشه # متفاوت از هم بود‌، اما در اسلکور‌، یک نکته عجیب در این مورد برایم وجود داشت‌! آن هم این که در حالت عادی اعلان فرمان به صورت‌:
[bash]
user@hostname $
[/bash]
نشان داده می‌شد‌، اما وقتی مثلا در کنسول KDE یک Tab جدید باز می‌کردم‌، اعلان به صورت زیر تغییر می‌کرد که متاسفانه‌، هیچ قابلیت به درد بخوری در خود نداشت‌:
[bash]
bash.4.?: $
[/bash]
این مشکل از وقتی که از برنامه Yakuake برای دسترسی راحت‌تر به ترمینال استفاده می‌کردم‌، بیشتر به چشم می‌آمد‌، و عملا تمامی اعلان فرمان‌هایش به همین شکل بود‌. پس تصمیم گرفتم یک بار برای همیشه‌، بی‌سوادی را کنار بگذارم و حلش کنم‌. مشکل به دو فایل زیر مربوط می‌شد‌:
[bash]
/etc/bashrc
~/.bashrc
[/bash]
که متاسفانه هیچ‌کدامشان در اسلکور به صورت پیش‌فرض وجود نداشتند‌، و از قرار آن اعلان سالم اول کار هم از فایل HOSTNAME موجود در شاخه etc ‏استفاده می‌کرد‌. خوب پس کافی بود یکی از این فایل‌ها را بسازم‌، و از آن‌جایی که ساختن فایل دوم‌، به نظرم آسان‌تر آمد‌، با دستور vim ~/.bashrc اقدام به ساختنش کردم‌، و خط زیر را به آن اضافه کردم‌:
[bash]
PS1=»[u@hw]$ »
[/bash]
ترمینال را یک بار بستم و باز کردم‌، و همه‌چیز خوب بود‌. حالا می‌ماند توضیحات این خط دوم‌:

  • ! : شماره فعلی تاریخچه فرمان را نشان میدهد.
  • # : شماره دستور آخرین دستور را نشان میدهد.
  • $ : اعلان فرمان استاندارد را نشان میدهد.
  • W : فقط دایرکتوری کاری جاری را نشان میدهد.
  • : فقط یک بک اسلش نشان داده میشود.
  • d : روز، ماه و شماره روز را نمایش میدهد. مثلا : Sat Jan 23
  • h : نام کامپیوتر میزبان را نشان میدهد.
  • n : یک خط جدید باز میکند.
  • s : نام پوسته فرمان را نشان میدهد. مثلا bash
  • t : زمان را بصورت ساعت، دقیقه و ثانیه نمایش میدهد. برای مثال : 10:14:40
  • u : نام کاربر را نمایش میدهد.
  • w : مسیر کامل دایرکتوری جاری را نمایش میدهد.

من این تنظیمات را از مطلب «‌آموزش کامل خط فرمان‌» که در سایت تکنوتاکس قرار داشت‌، بدست آورده بودم‌، ولی الان هر چه گشتم لینک پیدا نکردم‌، که اضافه کنم‌!

برای این که نتیجه‌ی اعلانتان را ببینید و یا این که اگر لازم شد در موقعیت خاصی وضعیت اعلانتان را عوض کنید (‌البته نه برای همیشه‌، فقط برای نشست حاظر‌) کافیست از دستور زیر در ترمینال استفاده کنید‌:

[bash]
export PS1=»[u@hw]$ »
[/bash]
فکر کنم به عنوان یک نکته کوچک‌، دیگر همین‌قدر توضیح دادن کافی باشد. 😉

دسته‌ها:اسلکور, حل مشکل برچسب‌ها: , , , ,