ترمینال شل ZSH چیست؟ #
پوسته Z (Zsh) یک مفسر (پوسته) قدرتمند دستورات یونیکس با ویژگیهای تعاملی فراوان است. این پوسته پیشفرض MacOS است که برای کاربران لینوکس و ویندوز نیز در دسترس است. درست مانند پوسته Bash مخصوص لینوکس، Zsh نیز یک زبان اسکریپتنویسی است که به شما امکان میدهد اسکریپتهای خود را بنویسید و وظایف را خودکار کنید.
در این راهنما، شما Zsh را به همراه چارچوب مدیریت پیکربندی آن، Oh My Zsh، نصب خواهید کرد و از برخی از ترفندهای شگفتانگیز آن برای افزایش بهرهوری، مانند موارد زیر، استفاده خواهید کرد:
- ناوبری دایرکتوری بهبود یافته
- تکمیل خودکار تب پیشرفته
- جستجوی پیشرفته تاریخچه
- تمهای سفارشی
- افزونههای سفارشی
- و موارد دیگر!
تفاوت های Zsh و Bash #
هم Zsh و هم Bash مفسرهای خط فرمان متنباز هستند که به طور گسترده مورد استفاده قرار میگیرند. Zsh با Bash با سینتکس تقریباً یکسان سازگار است و همین امر انتقال بین این دو را به هیچ وجه پیچیده نمیکند. اکثر دستورات و الگوهای تعاملی که برای bash یاد گرفتهاید، در Zsh نیز کار خواهند کرد.
در مورد تفاوتهای بین Zsh و Bash، یکی از جنبهها این است که Zsh ویژگیهای سفارشیسازی تعاملی بسیار بیشتری نسبت به Bash دارد. کاربران با تنظیم یک تم و دسترسی به اکوسیستم وسیعی از افزونههای Zsh که بسیاری از ترفندهای تعاملی کوچک را معرفی میکنند، امکانات بسیار بیشتری برای شخصیسازی پوسته خود دارند.
اگرچه ممکن است در نگاه اول، دستاوردهای تدریجی کوچک به نظر برسند، اما تمام آن ترفندهای کوچک بهرهوری جمع میشوند و شما به سرعت به سطح بعدی یا عملکرد خط فرمان منتقل میشوید.
🇦🇹 سرور مجازی اتریش 🇦🇹
انجمن Oh My Zsh چیست؟ #
Oh My Zsh یک چارچوب متنباز و جامعهمحور برای مدیریت پیکربندی Zsh شماست. با بیش از ۱۴۰ قالب از پیش ساخته شده و ۳۰۰ افزونه، مکانی عالی برای شروع سفارشیسازی ترمینال Zsh و آزاد کردن ابرقدرتهای جدید خط فرمان شماست.
پیش نیاز ها #
برای دنبال کردن موارد زیر به شما نیاز دارید:
- یک سرور مجازی با سیستم عامل اوبونتو
- درک اولیه از رابط خط فرمان
نحوه نصب Oh My Zsh در اوبونتو ۲۰.۰۴ #
قبل از شروع نصب Oh My Zsh، ابتدا باید Zsh را نصب کنید. بنابراین، ابتدا نحوه نصب Zsh را در اوبونتو ۲۰.۰۴ به شما نشان خواهیم داد و سپس با دستورالعملهای نصب Oh My Zsh ادامه خواهیم داد و پس از آن روشهای شروع استفاده از آن را برجسته خواهیم کرد.
بیایید مستقیماً شروع کنیم – ابتدا مراحل زیر را انجام دهید:
مرحله ۱: نصب Zsh در اوبونتو ۲۰.۰۴ #
۱: مخازن نرمافزاری خود را بهروزرسانی کنید #
قبل از شروع هرگونه نصب، همیشه ایده خوبی است که مخازن نرمافزاری خود را بهروزرسانی کنید. ترمینال Bash قدیمی و خوب خود را باز کنید و از دستور زیر استفاده کنید:
sudo apt update
۲: نصب Zsh از مخازن اوبونتو #
پس از بهروزرسانی مخازن نرمافزاری، آماده نصب Zsh از مخازن رسمی اوبونتو هستید. ما در اینجا از -aگزینهای برای موافقت خودکار با تمام درخواستهای نصب استفاده میکنیم:
sudo apt install -y zsh
شما میتوانید با نگاه کردن به مسیر فایل باینری Zsh، از نصب آن مطمئن شوید:
which zsh
خروجی باید به این شکل باشد:
/usr/bin/zsh
۳: پوستهی پیشفرض خود را Zsh قرار دهید #
همانطور که Zsh را با موفقیت نصب کردهاید، اکنون میتوانید آن را به عنوان پوسته پیشفرض خود انتخاب کنید. برای این کار chshاز دستور زیر به همراه -cآپشن و مسیر فایل باینری Zsh استفاده کنید:
sudo chsh -s /usr/bin/zsh
این دستور /etc/passwdفایل users را طوری تغییر میدهد که هر بار که با نام کاربری خود وارد یک جلسه ترمینال میشوید، Zsh را به عنوان پوسته پیشفرض شما بارگذاری کند. پس از راهاندازی مجدد ترمینال، میتوانید پوسته فعلی خود را با چاپ $SHELLمتغیر محیطی در ترمینال خود بررسی کنید:
echo $SHELL
خروجی باید به این شکل باشد:
/usr/bin/zsh
تبریک میگویم، Zsh اکنون پوسته ترمینال پیشفرض شماست.
مرحله ۲: راهاندازی Oh My Zsh در اوبونتو ۲۰.۰۴ #
اگرچه اکنون از Zsh به عنوان پوسته پیشفرض خود استفاده میکنید، اما هنوز تفاوت چندانی با Bash ندارد. میتوانید Zsh را از ابتدا و به تنهایی توسعه دهید، اما ایده بهتر این است که به اکوسیستم Oh My Zsh دسترسی پیدا کنید و با آنچه که قبلاً توسط جامعه ایجاد شده است، آزمایش کنید.
نصب Oh My Zsh فقط چند مرحله دارد. ابتدا، دستور apt install را اجرا کنید تا مطمئن شوید که curl روی سیستم اوبونتو شما نصب شده است :
sudo apt install curl
یا curl را نصب خواهید داشت، یا مطمئن خواهید بود که از قبل روی سیستم شما وجود دارد. برای شروع نصب، اسکریپت نصب Oh My Zsh را از مخزن رسمی GitHub آن دانلود و اجرا کنید :
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

فقط چند ثانیه طول میکشد و تمام! شما Oh My Zsh را نصب کردهاید.
شروع به استفاده از قابلیتهای پایه Oh My Zsh کنید #
ترفندهای بهرهوری بسیار خوبی وجود دارد که میتوانید بلافاصله پس از نصب Oh My Zsh از آنها استفاده کنید. بیایید برخی از قابلیتهای آن را مرور کنیم.
کار با دایرکتوریها در Zsh #
زمان زیادی در ترمینال صرف پیمایش در دایرکتوریهای شما میشود. توانایی بهبود ناوبری اولیه اولین قدرت فوقالعادهای است که از چارچوب Oh My Zsh به دست خواهید آورد.
گسترش مسیر دایرکتوری #
دیگر نیازی به تایپ مسیر کامل دایرکتوری برای استفاده از آن نیست. میتوانید چند حرف اول نام دایرکتوری را وارد کنید و فشار دهید TABتا راهنمای شما به یک مسیر کامل تبدیل شود. برای مثال، تایپ کنید /e/3.8و فشار دهید TABتا به تبدیل شود /etc/python3.8.
دسترسی به دایرکتوری Swift #
اکنون میتوانید cdدستور را حذف کنید و مسیر دایرکتوری مورد نظر خود را مستقیماً در ترمینال تایپ کنید تا وارد آن شوید. برای مثال، دستور ~cd را برای ورود به دایرکتوری خانگی یا /cd را برای ورود به دایرکتوری ریشه تایپ کنید.
تاریخچه دسترسی به دایرکتوری #
Zsh تاریخچهای از دایرکتوریهای دسترسیشده را نگه میدارد. میتوانید آن را با استفاده از دستور d که با نام مستعار dirs -v | head -10۱۰ دایرکتوری آخری که در آنها بودهاید، بررسی کنید:

از شماره مرتبط برای دسترسی به یک دایرکتوری از حافظه پنهان تاریخچه خود استفاده کنید. برای isntance، عدد ۳ را تایپ کنید و ENTERبرای ورود به آن، دکمه را فشار دهید /etc/fonts.
تکمیل خودکار پیشرفته تب در Zsh #
یکی دیگر از ویژگیهای قدرتمند Zsh، سیستم تکمیل تب آن است. این سیستم سعی میکند دستورات موجود را بر اساس متن خط فرمان پیشنهاد دهد. به عنوان مثال، ممکن است اسکریپتها، متغیرهای محیطی ، دستورات و حتی گزینههای دستور موجود را پیشنهاد دهد.
تایپ کنید systemو فشار دهید TABتا لیستی از پیشنهادات خودکار نمایش داده شود. میتوانید دوباره کلید TAB را فشار دهید تا پیمایش در برنامههای موجود شروع شود. از TABیا arrow keysبرای پیمایش در لیست استفاده کنید:

به طور مشابه، تایپ کنید systemctl، put a spaceو سپس کلید را بزنید TABتا لیستی از دستورات systemctl موجود به همراه توضیحات آنها نمایش داده شود. TABبرای شروع پیمایش در لیست، دوباره کلید را بزنید:

برای پیمایش در فهرست گزینههای موجود systemctl به همراه توضیحات آنها، Enter را فشار داده systemctl -و چند بار فشار دهید :TAB

و اگر میخواهید شاهد وقوع یک جادوی واقعی باشید، تایپ کنید systemctl stop، یک قرار دهید spaceو بزنید TABتا لیستی از تمام فرآیندهای لینوکس موجود که در حال حاضر روی دستگاه شما در حال اجرا هستند و واجد شرایط دستور systemctl stop هستند را ببینید:

شروع استفاده از تکمیل خودکار پیشرفته تب آسان است و افزایش بهرهوری قابل توجه است. آن را به ابزاری دیگر در زرادخانه خط فرمان خود تبدیل کنید.
جستجوی پیشرفته تاریخچه #
CTRL + Rمعمولاً، شما از جستجوی معکوس تاریخچه استفاده میکنید . این به شما امکان میدهد هر کلمهای را در رشته فرمان خود در تاریخچه فرمان جستجو کنید. برای یافتن آخرین دستور با این زیررشته، کلید را فشار داده CTRL + Rو یک زیررشته تایپ کنید :oh-my

میتوانید CTRL + Rبرای رفتن به عقب در تاریخ، همچنان فشار دهید. به عنوان یک روش جایگزین، از آن CTRL + Sبرای رفتن به جلو استفاده کنید.
Zsh یک تغییر کوچک در این قابلیت ایجاد کرده است. اگر ابتدای دستوری را که به دنبال آن هستید به خاطر دارید، آن را تایپ کنید و از کلیدهای UPو DOWNبرای پیمایش در تاریخچه فیلتر شده توسط زیررشته داده شده خود استفاده کنید. به عنوان مثال، برای یافتن آخرین دستوری که با این زیررشته شروع میشود، enter را بزنید aptو بزنید .UP
نصب یک قالب برای Zsh #
اولین چیزی که هنگام استفاده از Zsh متوجه میشوید، ظاهر منحصر به فرد آن است. یک تم، یک پیکربندی از پیش تعریف شده برای اعلان است که رنگهای متمایز و برخی اطلاعات مفید را به ترمینال شما اضافه میکند.
Oh My Zsh با بیش از ۱۴۰ قالب از پیش تعریف شده برای انتخاب شما ارائه میشود. ~/.oh-my-zsh/themesبرای مشاهده لیست کامل قالبهای نصب شده، به دایرکتوری مراجعه کنید:
ls ~/.oh-my-zsh/themes
حالا بیایید قالب پیشفرض «robbyrussel» را به چیزی زیباتر و آموزندهتر تغییر دهیم. برای انجام این کار، باید فایل پیکربندی Zsh خود را باز کنید:
vim ~/.zshrc
و ZSH_THEMEبا تنظیم مقدار متغیر به قالب دلخواه خود، آن را تغییر دهید، برای مثال:
ZSH_THEME="strug"
فایل پیکربندی .zshrc را ذخیره کرده و دوباره بارگذاری کنید:
source ~/.zshrc
اکنون میتوانید ببینید که یک قالب جدید بارگذاری شده است:

این تم شامل نام کاربری root، نام میزبان loving-moleو دایرکتوری فعلی شما ~در اعلان فرمان شما میشود.
و اگر به دایرکتوری که Git در آن آغاز شده است بروید، به طور خودکار خواهید دید که در کدام شاخه هستید:

git branchانقلابی نیست، اما هر از گاهی شما را از چند دستور غیرضروری معاف میکند .
فعال کردن افزونههای Zsh #
افزونه Zsh مجموعهای از نامهای مستعار و توابع مفید است که برای افزایش بهرهوری شما هنگام استفاده از ابزارهای خط فرمان مورد علاقهتان طراحی شده است. Oh My Zsh با بیش از ۳۰۰ افزونه از پیش ساخته شده ارائه میشود که به صورت آماده در دسترس هستند.
به طور پیشفرض، افزونههای از پیش ساخته شده غیرفعال هستند. ممکن است لیستی از افزونههای نصب شده محلی را در ~/.oh-my-zsh/pluginsدایرکتوری پیدا کنید. برای فعال کردن یک افزونه در Oh My Zsh، pluginsخط .zshrcفایل پیکربندی را با اضافه کردن نام افزونههای مورد نظر خود که با فاصله از هم جدا شدهاند، تغییر دهید:
plugins=(plugin_1 plugin_2 plugin_3 …)
اکنون بیایید برخی از افزونههای از پیش ساخته شده Oh My Zsh را فعال و آزمایش کنیم.
افزونهی Dirhistory #
تاریخچه دسترسی به دایرکتوری را به خاطر دارید؟ این افزونه پیمایش در دایرکتوریهای شما را حتی بیشتر بهبود میبخشد. این افزونه با افزودن پیوندهای صفحهکلید، پیمایش در تاریخچه دایرکتوری را آسانتر میکند. با اضافه کردن dirhisotry به فایل پیکربندی شروع کنید:
plugins=(… dirhistory)
فایل را ذخیره کنید و پیکربندی zsh را مجدداً بارگذاری کنید:
source ~/.zshrc
اکنون میتوانید از کلیدهای ترکیبی زیر برای پیمایش در تاریخچه دایرکتوری خود استفاده کنید:
ALT + LEFT– رفتن به دایرکتوری قبلیALT + RIGHT– رفتن به دایرکتوری بعدیALT + UP– انتقال به دایرکتوری والدALT + DOWN– به اولین دایرکتوری فرزند بروید
افزونه تاریخچه #
بسیاری از افزونههای Oh My Zsh فقط تعدادی نام مستعار کاربردی هستند که توسط مدیران سیستم باتجربه ایجاد شدهاند. افزونه History چند نام مستعار مناسب برای دستور history ارائه میدهد. با تغییر فایل پیکربندی Zsh آن را فعال کنید:
plugins=(… history)
و شما نامهای مستعار زیر را در دسترس خواهید داشت:
h(history) – تاریخچه دستورات شما را چاپ میکندhs(history | grep) – از grep برای جستجوی تاریخچه دستورات خود استفاده کنیدhis(history | grep -i) استفاده از grep برای جستجوی تاریخچه دستورات با حساسیت به حروف بزرگ و کوچک
افزونه صفحات مرد رنگی #
چند وقت یکبار صفحات راهنمای یک ابزار خط فرمان خاص را بررسی میکنید؟ افزونه Colored Man Pages با رنگآمیزی دستورات مختلف و آرگومانهای آنها، شما را به یک خواننده سریعتر تبدیل میکند تا فوراً در سند قابل مشاهده باشند. با تغییر فایل پیکربندی Zsh، آن را فعال کنید:
plugins=(… colored-man-pages)
پس از بارگذاری فایل پیکربندی، سعی کنید از دستور man grep برای مشاهدهی راهنمای تغییر یافتهی grep استفاده کنید:

افزونه ابزارهای JSON #
JSON به عنوان استاندارد داده بالفعل برای توسعه وب عمل میکند و ممکن است اغلب نیاز به استفاده مستقیم از آن در ترمینال خود داشته باشید، به خصوص هنگام آزمایش فراخوانیهای API جدید. افزونه JSON Tools این تجربه را بسیار راحتتر میکند. با ویرایش فایل پیکربندی Zsh، این افزونه را امتحان کنید:
plugins=(… jsontools)
اکنون میتوانید دادههای JSON خود را به یک jsontool مناسب منتقل کنید. برای مثال، یک dump پیشفرض JSON به هم ریخته و به سختی قابل خواندن است. سعی کنید لیستی از تمام نژادهای سگ را از سرویس معروف Dog API دریافت کنید تا ببینید چقدر بد است:
curl https://dog.ceo/api/breeds/list/all

بیایید این JSON dump را از طریق pretty print jsontool ارسال کنیم:
curl https://dog.ceo/api/breeds/list/all | pp_json

حالا حتی انسانها هم میتوانند آن را بخوانند.
نصب افزونههای سفارشی Zsh #
گذشته از افزونههای پیشفرض Zsh که با Oh My Zsh ارائه میشوند، افزونههای محبوب دیگری نیز وجود دارند که میتوانید خودتان نصب کنید تا قابلیتهای Zsh خود را بیشتر گسترش دهید و بهرهوری خود را افزایش دهید.
افزونه پیشنهاد خودکار #
یکی از محبوبترین افزونههای سفارشی Zsh، zsh-autosuggestions است. این افزونه بر اساس تاریخچه و دستورات تکمیلشدهی موجود، دستوراتی را پیشنهاد میدهد. برای افزودن آن به چارچوب Oh My Zsh خود، راهنمای نصب سفارشی را دنبال کنید.
پس از نصب افزونه، شروع به تایپ یک دستور کنید و autosuggest پیشنهادی برای شما ایجاد میکند:

برای پذیرش پیشنهاد، ضربه بزنید ENDیا RIGHTتیر بزنید.
گزینههای اضافی و کلیدهای اتصال زیادی وجود دارد که میتوانید برای پیشنهاد خودکار تنظیم کنید. اگر این افزونه را دوست دارید و میخواهید آن را بیشتر سفارشی کنید، مستندات رسمی را بررسی کنید .
افزونه برجستهسازی سینتکس #
افزونهی برجستهسازی سینتکس Zsh، هایلایت کردن دستورات را هنگام تایپ در خط فرمان Zsh امکانپذیر میکند. این افزونه هنگام نوشتن دستورات طولانی که احتمال بروز خطاهای سینتکسی در آنها زیاد است، مفید است. برای افزودن آن به فریمورک Oh My Zsh خود، راهنمای نصب سفارشی را دنبال کنید .
پس از نصب افزونه، دستور کمی اصلاحشدهای را برای دریافت فهرستی زیبا از نژادهای سگ تایپ کنید تا هایلایت شدن سینتکس را در عمل مشاهده کنید:

همانطور که میبینید، دستورات شما اکنون رنگارنگ و آموزندهتر هستند. دستورات معتبر به رنگ سبز، دستورات ناآشنا به رنگ قرمز، گزینههای دستورات به رنگ سفید و رشتهها به رنگ زرد نمایش داده میشوند. تضمین میشود که خطاهای نحوی کمتری رخ دهد!
افزونه پرش خودکار #
در آخر، اما نه کماهمیتترین، افزونه Autojump Zsh است. این افزونه روشی سریعتر برای پیمایش در سیستم فایل به شما ارائه میدهد. Autojump فایل تاریخچه خود را با فهرستی وزندار از دایرکتوریهای بازدید شده شما نگه میدارد. سپس سعی میکند مسیر کامل دایرکتوری مورد نظر شما را با نام دایرکتوری داده شده و وزن آن حدس بزند.
برای افزودن autojump به فریمورک Oh My Zsh خود، راهنمای نصب سفارشی را دنبال کنید .
پس از نصب autojump و مدتی استفاده از آن، فایل تاریخچه autojump خود را پر خواهید کرد. میتوانید آن را با autojump -sدستور زیر بررسی کنید:

همانطور که میبینید، برخی از دایرکتوریها بیشتر بازدید شدهاند و وزن بالاتری دارند.
فرض کنید اکنون در دایرکتوری خانگی خود هستید و میخواهید به ../warehouseدایرکتوری مورد نظر بروید:

پس از اجرای دستور، به طور خودکار به دایرکتوری ../warehouse با بالاترین وزن تاریخی منتقل میشوید:

سعی کنید به جلو و عقب بپرید تا به آن عادت کنید و اگر برای شما مناسب است، پرش خودکار را در کار روزمره خود بگنجانید.
پیکربندی بیشتر Zsh #
پس از نصب Oh My Zsh، یک فایل پیکربندی راهاندازی .zshrcدر دایرکتوری خانگی شما ایجاد شد. این یک فایل راهاندازی پوسته است که در آن دستورات، نامهای مستعار، توابع، گزینهها و کلیدهای اتصال خود را قرار میدهید. این فایل هنگام شروع یک جلسه ترمینال جدید به طور خودکار بارگذاری میشود.
ما قبلاً هنگام افزودن قالبها و افزونههای سفارشی، تغییراتی در فایل ایجاد کردهایم .zshrc. اکنون بیایید تغییرات بیشتری برای تقویت بیشتر محیط Zsh خود ایجاد کنیم. فایل پیکربندی را باز کنید و شروع به ویرایش کنید:
vim ~/.zshrc
به روزرسانی های خودکار #
شاید بخواهید بهروزرسانیهای خودکار Oh My Zsh را فعال کنید. برای بهروزرسانی Oh My Zsh به محض انتشار نسخه جدید، خط زیر را از حالت کامنت خارج کنید:
zstyle ':omz:update' mode auto
مهر های زمانی تاریخچه #
همچنین مفید است که برای هر دستور history یک مهر زمانی داشته باشید. خط زیر را از حالت کامنت خارج کنید و قالب تاریخ خود را انتخاب کنید تا این ویژگی فعال شود:
HIST_STAMPS="yyyy-mm-dd"
این دستور یک مهر زمانی در کنار هر دستوری که توسط دستور history نمایش داده میشود، قرار میدهد:

اتصالات کلید Vim #
اگر از کاربران پروپاقرص Vim هستید ، قابلیت اتصال کلید Vim را فعال کنید. این کار باعث میشود وقتی ترمینال خود را باز میکنید، به طور پیشفرض در حالت درج قرار بگیرید. در عوض، دکمه ESC را بزنید تا وارد حالت فرمان شوید. میتوانید با استفاده از خط زیر، قابلیت اتصال کلید Vim را فعال کنید:
bindkey -v
به خاطر داشته باشید که این گزینه، کلیدهای اتصال پیشفرض emacs را غیرفعال میکند. برای مثال، دیگر نمیتوانید از آن CTRL + Rبرای ورود به حالت جستجوی معکوس استفاده کنید. با این حال، میتوانید کلیدهای اتصال از دست رفته emacs را خودتان با الگوی زیر دوباره تعریف کنید:
bindkey [keys] [function]
برای بازیابی قابلیت جستجوی معکوس با استفاده از کلیدهای Vim، خط زیر را اضافه کنید:
bindkey '^r' history-incremental-search-backward
این گزینه ترکیب کلید را برای فراخوانی جستجوی تاریخچه به عقب دوباره فعال میکند CTRL + R.
نام های مستعار اضافی #
شما همچنین میتوانید نامهای مستعار خودتان را به .zshrcفایل اضافه کنید. برای مثال، بیایید نامهای مستعار زیر را اضافه کنیم تا دسترسی به فایل zshrc راحتتر شود:
alias zconf="vim ~/.zshrc"
حالا هر بار که zconf را در ترمینال تایپ کنید، به طور خودکار vimوارد .zshrcفایل خواهید شد.
تغییرات بار #
وقتی تغییرات در فایل را تمام کردید .zshrc، فراموش نکنید که آن را در پوسته خود بارگذاری کنید. دستور source دستورات را از یک فایل مشخص شده میخواند و اجرا میکند و آنها را در محیط پوسته فعلی شما بارگذاری میکند:
source ~/.zshrc
نتیجه گیری #
شما میتوانید محیط Zsh خود را بیشتر تغییر دهید و ترفندهای خودتان را اضافه کنید. هیچ محدودیتی در نحوه تغییر محیط خط فرمان شما وجود ندارد، زیرا Zsh یک زبان اسکریپتنویسی قدرتمند نیز هست. اگر تصمیم دارید که وارد این مخمصه شوید
