GreatBahram
GreatBahram
خواندن ۵ دقیقه·۷ سال پیش

موثرتر کار کنیم - این قسمت Zsh !

بش یا زی شل مساله این است!

مقدمه

سلام!
امیدوارم که از مطلب جلسه قبل خوشتون اومده باشه، توی قسمت قبل به معرفی Tmux پرداختیم و گفتیم که هدفمون در کُلِ این سری از پست‌ها این هست که بتونیم یک محیط توسعه خیلی خلاقانه و دوست داشتنی تحت خط فرمان (همون کامند-لاین) داشته باشیم. این قسمت می‌خواهیم به معرفی یه شلِ خیلی خوب بپردازیم.

وقتی شما دارید توی ترمینال کار می کنید، دستوراتی رو که وارد می‌کنید توسط یک مفسری دارن اجرا میشن که به اون شل گفته میشه، شل دستورات شما رو می‌گیره و اجرا میکنه و حاصل و خروجی اون رو به شما نشون میده. برای اینکه بفهمید الان دارید از چه شلی استفاده می کنید کافیه ترمینالتون رو باز کنید و مقدار متغیر محیطی SHELL رو چاپ کنید:

echo $SHELL # Print your current Shell, like /bin/bash for example

امروزه تو اکثر سیستم های گنو/لینوکسی دو تا شل خیلی معروف وجود داره. اولی Bourne shell هست که تو ایران ما بیشتر به sh (بخونید اس ایچ) می شناسیم و دومی Bash.

  • اما خب طبعیتاً سوال اول اینه چرا دوتا؟ دلیل اصلیش اینه اس ایچ خیلی از بَش شل سبک‌تره و به همین خاطر معمولاً میگن کلا یک شل داریم که بهش میگیم System shell و یکی دیگه User shell. کارهای که قرار خیلی سریع و سبک اجرا بشن مثل کارهای اولیه بوت و Initramfs و ... رو میدیم اس ایچ اجرا کنه و کارهای مربوط به کاربر و چیزهای سطح بالاتر رو میدیم User shell اجرا کنه.

هر کاربر می‌تونه توی سیستم عامل گنو/لینوکس مشخص کنه که دوس داره از چه شلِی استفاده کنه، اما چی میشه که یک کاربر تصمیم می‌گیره شل اش رو عوض کنه؟‌ قطعاً برای دسترسی به امکانات بیشتر و راحت‌تر کار کردن تو ترمینال.

اما Zsh چیه ؟

زی شل (زد شل هم درسته، تلفظ امریکاییش میشه zee shell) خودش رو یک بَشِ توسعه یافته معرفی می‌کنه که خیلی از ویژگی‌های خوب شِل‌های دیگه مثل tsh، ksh رو هم توی خودش داره.

  • اولین قدم واسه معرفی این شل نصب اونه
sudo apt-get install zsh

برای اینکه بتونید با این شِل کار کنید، کافیه تو خط فرمان تایپ کنید zsh اون به صورت موقت شِلِ شما به زی‌شِل تغییر پیدا می‌کنه،‌ اما خب تفاوت‌های اولیه‌ای که میشه راجعبه‌شون صحبت کرد:

  • زی‌شِل، Tab-complete ِ خیلی قوی‌تری داره، مثلا دستور ls رو بنویسید و بعدش یک اسپیس بزنید حالا چند بار دکمه Tab بزنید،‌چیزی شبیه پایین اتفاق میفته:
  • دسترسی خیلی راحت‌تر به آپشن‌های هر دستور: فرض کنید می‌خواهید با دستور dd کار کنید و اصلاً یادتون نمی‌یاد آپشنی که می‌خواستید چی بود، کافیه مثل مثال قبل دستور dd رو بنویسید و دوبار تب بزنید تا لیست کامل آپشن‌ها با توضیح هرکدوم نشون بشه:
  • مسیریابی خیلی کوتاه‌تر
  • هیستوری باحال‌تر(دسترسی راحت‌تر و مشترک بودنش): توی بَش هر شلِ در حال اجرا فقط به هیستوری(تاریخچه دستورات) خودش دسترسی داره و وقتی مثلاً دارید با Tmux کار می‌کنید خیلی خوب میشه اره بتونید به هیستوری یه شل دیگه هم دسترسی داشته باشید (کارتون راحت تر میشه).
  • دسترسی راحت تر به متغیر‌ها: اسم متغیر یا دستورتون رو بنویسید و تب بزنید تا خروجی اون رو بگیرید:

تمومه؟

قطعاً نه! یه چیز باحال دیگه که مونده Oh my zsh هست. Ohmyzsh در حقیقت کلی اسکریپت، تم‌ها و پلاگین های مختلف و باحالیه که واسه زی‌شِل نوشته شدن و با اضافه کردن اونا کار کردن با ابزارهای دیگه، علاوه بر خود شل، راحت‌تر میشه.

مثل همیشه اولین قدم نصب اونه (قبلش یادتون باشه حتما باید git رو نصب کنید):

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

این دستور شروع میکنه همه فایل های لازم رو توی Home directory کاربر فعلی اضافه می‌کنه، در حقیقت توی فایل کانفیگ زی‌شِل که یک فایلِ به اسم zshrc. کدی نوشته که میگه تنظیمات و پلاگین‌های Ohmyzsh هم توی زی‌شِل لود بشن.

حالا کافیه یه بار دیگه Zsh رو اجرا کنید توی ترمینال تا تنظمیات جدید لود بشه و چیزی شبیه پایین باید ببینید:

زی شِل ‌promtهای مختلفی داره که اینجا می‌تونید همه رو اینجا ببینید و هر کدوم رو که خوشتون اومد توی فایلِ zshrc. درون متغییر ZSH_THEME بنویسید.

فریمورک Ohmyzsh پلاگین‌های مختلفی داره که هر پلاگین در حقیقت مجموعه‌ای از Alias‌ها هست که قرارِ کار رو برای ما راحت‌تر کنه. مثلاً اگه پلاگین گیت رو فعال کنید، به جای اینکه هی بنویسید:

git log --oneline --decorate --graph --all

می‌تونید بجاش بنویسید gloga خیلی شیک و مجلسی‌ترم هست.

پلاگین‌ها توی مسیر

~/.oh-my-zsh/plugins

قرار گرفتن و انتظار میره هر کدوم یه فایل readme.md بغل‌شون باشه که توضیح بده قرار چه کاری انجام بدن.

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

آها!

اگه از زی‌شِل و داستاناش خوش‌تون اومده و می‌خواید شلِ پیش فرض‌تون باشه با دستور زیر می‌تونید این کارو انجام بدید:‌

chsh -s /usr/bin/zsh

از اینجا کجا بریم؟

  • اگه با زی‌شِل آشنا هستین و دنبال یه قدم حرفه‌ای‌تر می‌گردین لینک پایین مقدمه‌ی خوبی واسه این کاره:

http://reasoniamhere.com/2014/01/11/outrageously-useful-tips-to-master-your-z-shell/

  • اگه دنبال کارهای باحال با Ohmyzsh هستید تا کامندلاین‌تون بازم از اینی که هست قشنگ‌تر بشه، لینک پایین مختص شماست:

https://hackernoon.com/oh-my-zsh-made-for-cli-lovers-bea538d42ec1

حتماً دو پلاگین Zsh-syntax-highlighting و Colored-man-pages که تو لینک بالا توضیح داده امتحان کنید.

productivityzshohmyzshterminal
Pythonista, Free Software Enthusiast. GNU/Linux Master. Network Security Researcher. Son. Brother.
شاید از این پست‌ها خوشتان بیاید