راستش من یه چند وقتیه اوبونتو رو نصب کردم:) و میخوام تجربههامو از کار باهاش و.. اینجا به اشتراک بزارم، این متن قراره در مورد تجربه ی خودم از نصب fish shell و نحوهی نصبش روی اوبونتو باشه، خب بریم سر اصل مطلب :)
شاید براتون مثل خود من سؤال باشه که shell چیه اصلا؟ به زبون خیلی ساده شل میشه یه ابزاری که میاد بین دستوراتی که شما توی ترمینال میزنین و هستهی اصلی سیستم عامل ارتباط برقرار میکنه که دستورات رو بهش برسونه.
آشنایی من با fish shell (خودِ این اسم از این سه کلمه میاد: friendly interactive shell) از همین ویرگول و زیر یکی از پست ها شکل گرفت که یکی از دوستان توصیهاش کرده بود و منم تصمیم گرفتم یه مدت نصبش کنم و امکاناتشو ببینم، نتیجه این شد که از ویرگول شروع کردم و هرچقدر گشتم مطلبی که نحوهی نصب این شل رو توضیح داده باشه پیدا نکردم، درنهایت دست به دامن گوگل و سایت های خارجی شدم که توی این سرچ به سایت اصلی این شل رسیدم، که یکی از امکانات خوب این سایت اینه که یه گزینهی try in browser تو همون صفحهی اصلیش داره که میتونین بهصورت آنلاین شل رو امتحان کنین و تصمیم بگیرین که میخوایین نصبش کنین یا نه؟
از جمله امکانات جالبی که fish shell نسبت به bash (شِل دیفالت اوبونتو) داره میشه اینارو گفت:
این ویژگی همونطور که از اسمش مشخصه میاد کلمات و دستورهایی که تایپ میکنید رو به رنگهای مختلفی در میاره که هرکدوم از اونا معانی مختلفی دارن:
قرمز : دستورهای نامعتبر به رنگ قرمز نشون داده میشن. (البته تا وقتی معتبر نشدن)
آبی : دستورهای معتبر به رنگ آبی نشون داده میشن.
دستورات زیر خط دار : وقتی میخوایین آدرس محل فایل یا مسیری رو تایپ کنین، اگه چند حرف اولشو تایپ کنید این شل بصورت خودکار اگه فایل یا مسیری که با اون اسم شروع بشه وجود داشته باشه، اون چند حرف رو زیر خط دار می کنه که این میتونه بهتون کمک کنه که بدونین همچنین فایلی وجود داره یا نه؟
توی این ویژگی وقتی شما چند حرف از یه دستوری رو تایپ میکنید بصورت خودکار پیشنهادهایی رو برای تکمیل کردنش بهتون میده که بنظر جالب میاد، اگه خواستین پیشنهادش رو قبول کنین میتونین کلید ctrl + f و یا کلید → رو بزنید، اگه خواستین فقط یه کلمه از چیزی که بهتون پیشنهاد داده رو قبول کنین با کلید alt + → میتونین این کار رو انجام بدین.
این ویژگی تقریباً با ویژگی قبلی یکیه، به این صورت که با کمک این ویژگی وقتی چند حرف از یه دستوری رو تایپ کنین و tab رو بزنین دستوری یا دستوراتی که بعد از اون متنی که نوشتین میتونه بیاد رو نمایش میده و با زدن کلید tab میتونین روی دستورات احتمالی پیمایش کنین و با زدن اینتر یکی رو انتخاب کنین. (فرق این ویژگی با قبلی اینه که مثلاً وقتی دستور sudo apt رو بزنین و تب رو بزنین تمام دستوراتی که میتونن ادامهی این دستور بیان رو براتون میاره)
یکی از ویژگیهای خیلی جذابش که حقیقتاً خودم خیلی لذت بردم این وب بیس کانفیگشه، به این صورت که بعد از نصب کردن این شل، با زدن دستور زیر توی ترمینال
fish_config
مرورگرتون باز میشه و میتونین بخشهای مختلفش رو شخصی سازی کنین.
وقتی دستوری رو می زنین و یسری دستورات پیشنهادی رو میاره اگه دنبال یه دستور خاصی توی اون ها بگردین با زدن کلیدهای ctrl + s میتونین توی همون ترمینال از بین نتایج سرچ کنید.
نکته : من همه شل های ممکن رو امتحان نکردم و طبیعتاً به ویژگیهایی که این شل داشت پرداختم، شاید یه شل دیگه شما بشناسین که علاوه بر این امکانات یسری امکانات دیگه هم داشته باشه که خوشحال می شم تو کامنت ها ذکر کنین.
راستش تا الان بزرگترین و تنها عیبی که دیدم اینه که دستوراتش توی یسری قسمت ها با bash همخونی ندارن:(
خب بریم سراغ مراحل شیرین نصب:
از طریق دستور زیر می تونین اقدام به نصب کنید.
sudo apt install fish
بعد از نصب با دستور fish میتونین شل رو از شل فعلی به fish shell تغییر بدین (با دستور exit هم برمیگردین به همون شل فعلی)، اما میبینین اگه ترمینال رو ببندین و دوباره باز کنین shell پیشفرضِ ترمینالتون میاد، خب حالا چکار کنیم که این شلی که نصب کردیم بصورت پیشفرض وقتی ترمینال رو باز میکنیم بالا بیاد؟ اول با دستور زیر آدرس محل نصب fish shell رو پیدا کنید که احتمالاً باید یه همچین چیزی باشه:
usr/bin/fish
با دستور زیر هم می تونین بفهمین که شل پیشفرضتون چی هست:
echo $SHELL
بعد از اون باید به سیستم بفهمونیم که هربار که ترمینال رو باز میکنیم شل رو از اون آدرسی که ما بهش میگیم بخونه (که اینجا همون آدرس محل نصب fish shell میشه.) که برای این کار دستورات زیر رو وارد میکنیم:
chsh -s /usr/bin/fish
دقت کنین اگه مسیر نصب fish shell شما با اینی که اینجا هست فرق میکنه آدرسی که جلوی این دستور هست رو پاک کنین و آدرس محل نصبی که توی مرحله قبلی بدست آوردین رو بنویسین.
بعد از این کار با یکبار لاگ این/اوت کردن میبینین که fish shell به شل پیشفرضتون تبدیل شده:)
با این دستور میتونین متن خوش آمد گویی ای که اولش میاد رو پاک کنین
set fish_greeting
در آخر ممنون از اینکه مطالعه کردین، من سعی کردم توی نگارش این متن منابعم معتبر باشن با این حال اگه اشکالی دیدین توی کامنت ها ذکر کنین که اصلاح کنم❤️.