بهترین جایگزین‌های ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi برای ترمینال حرفه‌ای

دستورهای ls و cd سال‌هاست بخش جدایی‌ناپذیر کار با ترمینال لینوکس هستند، اما ابزارهای مدرن‌تری ساخته شده‌اند که همان وظایف را سریع‌تر و کاربردی‌تر انجام می‌دهند. در میان این ابزارها، eza برای نمایش فایل‌ها، zoxide برای جابه‌جایی سریع بین پوشه‌ها و Yazi برای مرور کامل فایل‌ها در محیط ترمینال، گزینه‌های بسیار جذابی هستند.

مزیت مهم این ابزارها این است که قرار نیست روش کار شما با لینوکس را کاملاً تغییر دهند. eza تقریباً همان کاری را انجام می‌دهد که ls انجام می‌دهد، zoxide نقش هوشمندتر cd را بر عهده می‌گیرد و Yazi نیز زمانی وارد عمل می‌شود که بخواهید فایل‌ها و پوشه‌ها را مانند یک فایل منیجر کامل مرور کنید. eza علاوه بر رنگ‌بندی و اطلاعات بیشتر، قابلیت نمایش وضعیت Git و ساختار درختی پوشه‌ها را دارد و zoxide نیز بر اساس میزان و تازگی استفاده از مسیرها، بهترین مقصد را پیدا می‌کند.

چرا باید ls و cd قدیمی را با ابزارهای جدید لینوکس جایگزین کنیم؟

ls و cd مشکلی ندارند و همچنان از قابل‌اعتمادترین دستورهای خط فرمان هستند. مشکل اصلی زمانی ظاهر می‌شود که تعداد پروژه‌ها، پوشه‌ها و فایل‌های شما زیاد شود. در چنین شرایطی، پیدا کردن یک مسیر عمیق با cd یا بررسی اطلاعات زیاد فایل‌ها با ls می‌تواند به وارد کردن مکرر مسیرهای طولانی و استفاده از چند دستور مختلف نیاز داشته باشد.

ابزارهای جدید دقیقاً برای کاهش همین اصطکاک طراحی شده‌اند. eza اطلاعات بیشتری را در همان فهرست فایل‌ها نمایش می‌دهد، zoxide مسیرهای پرتکرار را به خاطر می‌سپارد و Yazi نیز یک محیط تعاملی کامل برای مرور فایل‌ها ارائه می‌کند. در نتیجه، می‌توان بخش زیادی از کارهای روزمره فایل سیستم را بدون خروج از ترمینال انجام داد.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

eza و zoxide و Yazi چه تفاوتی با هم دارند؟

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

  • eza جایگزین مدرن ls برای نمایش محتویات پوشه‌ها است.
  • zoxide جایگزین هوشمند cd برای رفتن سریع به پوشه‌ها است.
  • Yazi یک فایل منیجر کامل مبتنی بر ترمینال است.
  • fzf می‌تواند در کنار zoxide برای انتخاب تعاملی مسیرها استفاده شود.
  • ls و cd همچنان برای اسکریپت‌ها و محیط‌هایی که ابزارهای اضافی در آنها نصب نیستند، اهمیت دارند.

این تفاوت باعث می‌شود نیازی نباشد یکی از این ابزارها را برای تمام کارها استفاده کنید. در استفاده روزمره می‌توانید eza و zoxide را جایگزین دستورهای قدیمی کنید و هر زمان که به مرور جدی فایل‌ها نیاز داشتید، Yazi را اجرا کنید.

eza؛ جایگزین مدرن ls با نمایش بهتر فایل‌ها

eza یک جایگزین مدرن و مبتنی بر Rust برای ls است که با هدف ارائه اطلاعات بیشتر و پیش‌فرض‌های کاربردی‌تر ساخته شده است. این ابزار علاوه بر رنگ‌بندی فایل‌ها، از وضعیت Git، لینک‌های نمادین، نمایش درختی و آیکون‌ها نیز پشتیبانی می‌کند. پروژه eza در حال حاضر به عنوان جایگزین نگهداری‌شده برای exa شناخته می‌شود.

تفاوت eza با یک تغییر ظاهری ساده بیشتر از چیزی است که در نگاه اول به نظر می‌رسد. اطلاعاتی مانند نوع فایل، اندازه، سطح دسترسی و وضعیت Git می‌توانند مستقیماً در همان فهرست فایل‌ها دیده شوند و نیاز به اجرای دستورهای جداگانه را کاهش دهند.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

مهم‌ترین دستورهای eza برای استفاده روزمره

ساده‌ترین حالت eza تقریباً همان خروجی پایه ls را ارائه می‌کند:

eza

برای نمایش اطلاعات کامل‌تر فایل‌ها:

eza -l

برای نمایش اندازه فایل‌ها با واحدهای خواناتر:

eza -lh

برای نمایش فایل‌های مخفی:

eza -la

برای نمایش آیکون کنار فایل‌ها:

eza -l --icons

برای مرتب‌سازی بر اساس زمان تغییر:

eza -l --sort=modified

برای مرتب‌سازی بر اساس اندازه:

eza -l --sort=size

eza گزینه‌های بسیار بیشتری نیز دارد و از نمایش درختی گرفته تا محدود کردن عمق پوشه‌ها و نمایش اطلاعات Git را پوشش می‌دهد. مستندات پروژه نیز گزینه‌هایی مانند --tree و --git و --icons و --sort را در میان قابلیت‌های اصلی آن معرفی می‌کنند.

نمایش ساختار پوشه‌ها به شکل درختی با eza

یکی از قابلیت‌های مفید eza، نمایش ساختار پوشه‌ها به صورت درختی است. این قابلیت برای پروژه‌های برنامه‌نویسی و پوشه‌هایی که فایل‌های زیادی دارند بسیار کاربردی است.

eza --tree

اگر فقط چند سطح ابتدایی را می‌خواهید ببینید:

eza --tree --level=2

و برای نمایش اطلاعات کامل فایل‌ها در ساختار درختی:

eza -l --tree --level=3

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

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

نمایش وضعیت Git مستقیماً کنار فایل‌ها

یکی از جذاب‌ترین امکانات eza برای برنامه‌نویسان، پشتیبانی از Git است. به جای اینکه ابتدا فهرست فایل‌ها را با ls ببینید و سپس git status را اجرا کنید، eza می‌تواند وضعیت Git را در کنار فایل‌ها نمایش دهد.

eza -l --git

این قابلیت در مخازن Git بسیار مفید است، زیرا فایل‌های تغییرکرده یا فایل‌هایی که در وضعیت خاصی قرار دارند، علامت مخصوص خود را دریافت می‌کنند. در نتیجه هنگام مرور یک پروژه بزرگ، وضعیت فایل‌ها سریع‌تر قابل تشخیص است.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

چگونه eza را جایگزین ls کنیم؟

اگر به جای حفظ کردن دستور جدید، می‌خواهید همچنان ls را تایپ کنید، می‌توانید برای eza یک alias بسازید. این کار باعث می‌شود ls در عمل eza را اجرا کند.

alias ls="eza" alias ll="eza -l --git --icons" alias tree="eza --tree"

این خطوط را می‌توانید در فایل تنظیمات Shell خود قرار دهید. برای Bash معمولاً فایل زیر استفاده می‌شود:

~/.bashrc

و برای Zsh:

~/.zshrc

بعد از ذخیره فایل، تنظیمات Shell را دوباره بارگذاری کنید یا یک ترمینال جدید باز کنید.

این روش به‌خصوص برای افرادی مفید است که سال‌ها به تایپ ls عادت کرده‌اند و نمی‌خواهند حافظه عضلانی خود را تغییر دهند.

zoxide؛ جایگزین هوشمند cd برای جابه‌جایی سریع بین پوشه‌ها

zoxide برای حل یکی از آزاردهنده‌ترین بخش‌های کار با ترمینال طراحی شده است: پیدا کردن و وارد شدن به پوشه‌هایی که مسیر طولانی دارند.

به جای این:

cd ~/Documents/projects/homelab/Docker

می‌توانید پس از اینکه zoxide مسیر را شناخت، از دستور ساده‌تری مانند این استفاده کنید:

z Docker

zoxide مسیرهایی را که بیشتر استفاده می‌کنید در یک پایگاه داده نگه می‌دارد و آنها را بر اساس ترکیبی از تعداد دفعات استفاده و تازگی استفاده رتبه‌بندی می‌کند. به همین دلیل هرچه بیشتر از آن استفاده کنید، انتخاب مسیر مناسب نیز دقیق‌تر می‌شود.

چگونه با zoxide بدون نوشتن مسیر کامل وارد پوشه شویم؟

فرض کنید چنین ساختاری دارید:

~/Documents/projects/homelab/Docker

بعد از استفاده از این پوشه، می‌توانید بنویسید:

z Docker

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

z test docker

zoxide عبارت‌های واردشده را برای پیدا کردن بهترین مسیر با هم ترکیب می‌کند. بنابراین لازم نیست مسیر کامل را تایپ کنید.

همچنین می‌توانید از بخشی از نام مسیر استفاده کنید:

z dock

این ویژگی مخصوصاً در سیستم‌هایی که تعداد زیادی پروژه و پوشه تو در تو دارند، تفاوت زیادی در سرعت کار ایجاد می‌کند.

استفاده از zoxide برای مسیرهای قبلی و پوشه والد

zoxide فقط برای جستجوی پوشه‌ها نیست و بعضی رفتارهای آشنای cd را نیز حفظ می‌کند:

z ..

برای رفتن به پوشه قبلی:

z -

برای رفتن به یک مسیر مشخص نیز می‌توانید از مسیر مستقیم استفاده کنید:

z ~/Documents

مستندات رسمی zoxide همچنین امکان ترکیب چند عبارت برای پیدا کردن یک مسیر و قابلیت تکمیل تعاملی را ارائه می‌کنند.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

استفاده از zoxide همراه fzf برای جستجوی تعاملی

اگر fzf را نیز نصب کرده باشید، zoxide قابلیت جستجوی تعاملی را در اختیار شما قرار می‌دهد:

zi

یا:

zi docker

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

برای کسانی که با تعداد زیادی پروژه کار می‌کنند، ترکیب zoxide و fzf یکی از کاربردی‌ترین روش‌های سریع جابه‌جایی در فایل سیستم است.

نصب و فعال کردن zoxide در لینوکس

روش نصب zoxide بسته به توزیع لینوکس متفاوت است. در توزیع‌هایی مانند Arch یا Fedora و برخی توزیع‌های دیگر می‌توانید از مدیر بسته استفاده کنید. در سیستم‌هایی که نسخه جدیدتری نیاز دارید، روش نصب رسمی یا نصب از طریق Cargo نیز قابل استفاده است.

برای Arch:

sudo pacman -S zoxide

برای Fedora:

sudo dnf install zoxide

در صورت استفاده از Cargo:

cargo install zoxide --locked

پس از نصب، باید integration مربوط به Shell را نیز فعال کنید.

برای Bash:

eval "$(zoxide init bash)"

برای Zsh:

eval "$(zoxide init zsh)"

برای Fish:

zoxide init fish | source

خط مربوط به Shell خود را در فایل تنظیمات همان Shell قرار دهید تا در ترمینال‌های بعدی نیز فعال بماند.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

Yazi؛ یک فایل منیجر کامل داخل ترمینال لینوکس

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

در این شرایط Yazi گزینه متفاوتی است. Yazi یک فایل منیجر مبتنی بر ترمینال است که با Rust نوشته شده و از ورودی و خروجی ناهمگام استفاده می‌کند. این ابزار به جای اجرای یک دستور برای هر عملیات، یک محیط تعاملی در اختیار شما قرار می‌دهد. پروژه Yazi قابلیت‌هایی مانند نمایش پیش‌نمایش فایل، پشتیبانی از Git، تغییر نام گروهی، استخراج آرشیو، حالت بصری و پشتیبانی از ماوس را ارائه می‌کند.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

رابط سه‌ستونه Yazi چگونه کار می‌کند؟

Yazi معمولاً فایل سیستم را به شکل چند بخش کنار هم نمایش می‌دهد. یک بخش مسیر والد را نشان می‌دهد، بخش دیگر محتویات پوشه فعلی را نمایش می‌دهد و بخش پیش‌نمایش اطلاعات فایل انتخاب‌شده را نشان می‌دهد.

این ساختار باعث می‌شود برای پیدا کردن فایل مجبور نباشید مرتب بین cd و ls جابه‌جا شوید. کافی است در محیط Yazi حرکت کنید و فایل مورد نظر را انتخاب کنید.

یکی از ویژگی‌های جذاب Yazi پشتیبانی از پیش‌نمایش انواع فایل‌ها است. بسته به محیط ترمینال و وابستگی‌های نصب‌شده، امکان نمایش کد، متن، PDF و حتی تصاویر وجود دارد. برای نمایش تصاویر، Yazi از پروتکل‌هایی مانند Kitty و iTerm2 پشتیبانی می‌کند و در برخی محیط‌ها می‌توان از ابزارهای جایگزین برای پیش‌نمایش استفاده کرد.

بهترین جایگزین ls و cd در لینوکس؛ آموزش eza و zoxide و Yazi

کنترل Yazi با کلیدهای میانبر شبیه Vim

اگر با Vim آشنا باشید، کار کردن با Yazi برایتان بسیار ساده‌تر خواهد بود. Yazi از کلیدهای میانبر سبک Vim برای جابه‌جایی استفاده می‌کند و محیط آن برای کار سریع با صفحه‌کلید طراحی شده است.

در کنار صفحه‌کلید، Yazi از ماوس نیز پشتیبانی می‌کند و قابلیت‌هایی مانند Drag and Drop، سطل زباله و Layoutهای قابل تنظیم را نیز ارائه می‌دهد. بنابراین می‌توانید آن را صرفاً یک ابزار وابسته به میانبرهای Vim در نظر نگیرید.

نصب Yazi در لینوکس و آماده کردن فایل منیجر ترمینالی

Yazi برای توزیع‌های مختلف لینوکس روش‌های نصب متعددی دارد. برای Arch Linux می‌توان آن را از مخزن سیستم نصب کرد:

sudo pacman -S yazi

در Debian و Ubuntu نیز پروژه Yazi یک مخزن APT رسمی ارائه می‌کند که نسخه‌های پایدار و Nightly برای معماری‌های AMD64 و ARM64 دارد. برای کسانی که نمی‌خواهند مخزن جداگانه اضافه کنند، Snap نیز یکی از روش‌های ساده نصب Yazi است.

sudo snap install yazi --classic

بعد از نصب، کافی است در ترمینال بنویسید:

yazi

در Arch Linux، مستندات رسمی Yazi نصب برخی وابستگی‌های جانبی مانند ffmpeg یا 7zip یا jq یا poppler یا fd یا ripgrep یا fzf و zoxide را نیز برای دسترسی به امکانات کامل‌تر پیشنهاد می‌کنند.

آیا eza و zoxide و Yazi باید جایگزین کامل ls و cd شوند؟

نه لزوماً. این ابزارها بیشتر برای کار تعاملی روزمره مناسب هستند. ls و cd همچنان دستورهای استاندارد و قابل اعتمادی هستند و در اسکریپت‌ها، سیستم‌های تازه نصب‌شده و سرورهایی که ابزار اضافی روی آنها نصب نشده است، اهمیت زیادی دارند.

برای همین بهتر است این ابزارها را به عنوان لایه‌ای بهتر برای استفاده روزمره در نظر بگیرید. می‌توانید ls را همچنان برای اسکریپت‌ها نگه دارید و فقط در Shell تعاملی خود آن را با eza جایگزین کنید. همین موضوع درباره cd نیز صدق می‌کند.

eza و zoxide نیز وابستگی زیادی به تنظیمات Shell دارند، بنابراین اگر با یک سرور از راه دور کار می‌کنید که این ابزارها نصب نشده‌اند، همچنان باید با دستورهای استاندارد لینوکس راحت باشید.

بهترین ترکیب برای یک ترمینال مدرن لینوکس چیست؟

برای بسیاری از کاربران، یک ترکیب ساده می‌تواند بخش زیادی از مشکلات کار با فایل سیستم را حل کند. eza نمایش فایل‌ها را بهتر می‌کند، zoxide مسیرهای پرتکرار را سریع‌تر پیدا می‌کند و Yazi زمانی وارد عمل می‌شود که نیاز به مرور تعاملی فایل‌ها داشته باشید.

یک تنظیم ساده برای Bash یا Zsh می‌تواند شامل aliasهای زیر باشد:

alias ls="eza" alias ll="eza -l --git --icons" alias tree="eza --tree"

و پس از فعال‌سازی zoxide نیز می‌توانید به جای وارد کردن مسیرهای طولانی، از z استفاده کنید.

برای کارهای پیچیده‌تر نیز:

yazi

را اجرا کنید و فایل سیستم را داخل محیط تعاملی آن مرور کنید.

این ترکیب به‌خصوص برای برنامه‌نویسان، مدیران سیستم، کاربران لینوکس روی سرور و افرادی که دائماً بین پروژه‌های مختلف جابه‌جا می‌شوند، کاربرد زیادی دارد. eza اطلاعات بیشتری را در همان فهرست فایل‌ها ارائه می‌کند، zoxide زمان پیدا کردن مسیرها را کاهش می‌دهد و Yazi نیز فاصله میان ابزارهای خط فرمان و فایل منیجرهای گرافیکی را کم می‌کند.

جمع‌بندی؛ آیا وقت آن رسیده ls و cd را کنار بگذاریم؟

اگر هر روز ساعت‌های زیادی را در ترمینال لینوکس سپری می‌کنید، eza و zoxide از آن دسته ابزارهایی هستند که با هزینه یادگیری بسیار کم می‌توانند تجربه کار با سیستم را بهتر کنند.

eza برای کسانی که از خروجی ساده ls خسته شده‌اند، گزینه‌ای بسیار مناسب است؛ زیرا رنگ‌بندی، آیکون، اطلاعات Git، مرتب‌سازی پیشرفته و نمایش درختی را در اختیار قرار می‌دهد. zoxide نیز مشکل مسیرهای طولانی را تا حد زیادی حل می‌کند و به جای اینکه مسیر کامل را حفظ کنید، کافی است چند کلمه از نام مسیر را به خاطر داشته باشید.

Yazi یک قدم فراتر می‌رود و یک فایل منیجر کامل را داخل ترمینال قرار می‌دهد. بنابراین اگر به جای اجرای مکرر دستورهای کوتاه، محیطی تعاملی برای مرور فایل‌ها می‌خواهید، Yazi می‌تواند مکمل بسیار خوبی برای eza و zoxide باشد.

در نهایت، بهترین روش این نیست که ls و cd را برای همیشه فراموش کنید. بهتر است آنها را به عنوان ابزارهای پایه نگه دارید و در محیط روزمره خود از eza و zoxide استفاده کنید. این روش هم سرعت کار را بالا می‌برد و هم باعث نمی‌شود هنگام کار روی یک سیستم جدید یا سرور بدون ابزارهای اضافی، با مشکل مواجه شوید.