بهینه سازی لینوکس، معرفی ابزارهای جذاب و پرکاربرد

بهینه سازی لینوکس با ابزارهای جدید و کارآمد

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

عملکردهای این ابزارها ضروری هستند، اما ظاهری ساده و کسل‌کننده دارند. آیا تمایل به بهبود خروجی آن‌ها با رنگ‌های زیبا و جذاب دارید؟ یا حتی سرعت آن‌ها را افزایش دهید؟ ابزارهای خط فرمان که در ادامه معرفی می‌شوند، این کارها و موارد بیشتری را انجام میدهند.

Bat: جایگزینی بهتر برای Cat

Cat دستوری است که برای نمایش متن ساده و بدون قالب‌بندی استفاده میشود. این دستور قدیمی شده است، زیرا خواندن فایل‌های پیچیده مانند فایل‌های پیکربندی، کد، JSON یا YAML را دشوار میکند. Bat دقیقاً مانند Cat است، با این تفاوت که بسیار بهتر عمل میکند.

این ابزار مشکل خوانایی را با برجسته کردن فایل‌های پیچیده با رنگ‌های زیبا (معروف به برجسته‌سازی نحوی) حل میکند. این ویژگی، خواندن فایل‌ها را بسیار آسان‌تر می‌کند، زیرا بخش‌ها و مرزها برجسته میشوند.

Bat دارای ویژگی‌های اضافی است که آن را جذاب‌تر می‌کند، مانند ادغام با Git برای علامت‌گذاری خطوط تغییر یافته. همچنین میتواند با ابزارهای دیگری مانند fzf یا find برای نمایش پنجره‌های پیش‌نمایش رنگی کار کند. Bat به‌طور جهانی در دسترس است و تقریباً در هر مخزن توزیعی میتوان آن را یافت.

Ripgrep: جستجوی سریع و قدرتمند

مانند همه ابزارهای دیگری که ذکر خواهند شد، ripgrep نیز یک ارتقاء برای همتای استاندارد خود (grep) است. نکته اصلی و متمایز این ابزار، سرعت آن است: این ابزار جستجوهای متعددی را به‌طور موازی انجام می‌دهد، در حالی که grep این کار را نمیکند. Ripgrep با پخش کردن کار خود در تمام هسته‌های CPU، از قدرت پردازنده‌های مدرن استفاده میکند.

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

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

Ripgrep همچنین فایل‌ها و پوشه‌های خاصی را مطابق دستورالعمل‌های موجود در فایل gitignore یا ignore نادیده میگیرد. برای مثال، یک فایل میتواند باعث شود ripgrep تمام تصاویر با نام foo.jpg یا دایرکتوری‌های با نام ignoreddir را نادیده بگیرد.

Ripgrep یکپارچگی بسیار خوبی با سایر برنامه‌ها دارد. Emacs، Vim، Neovim و fzf همگی دارای افزونه‌های شخص ثالثی هستند که یکپارچگی ripgrep را فراهم میکنند. این امر، این برنامه‌ها را قادر میسازد تا مستقیماً از قابلیت‌های جستجوی قدرتمند ripgrep استفاده کند. Fzf (یکی دیگر از ابزارها) ویژگی‌های پیشرفته‌ای را ارائه میدهد که به‌خوبی با ripgrep کار میکنند.

این تمام ماجرا نیست؛ Ripgrep همچنین میتواند با استفاده از فلگ Z در فایل‌های فشرده جستجو کند. اگر یک دایرکتوری گسترده از فایل‌های متنی و فشرده وجود داشته باشد، ripgrep میتواند همه آن‌ها را بدون نیاز به باز کردن دستی، جستجو کند. از آنجایی که جزئیات زیادی در مورد تطابق ارائه نمی‌دهد، کمی ناامیدکننده است؛ با این حال، باعث صرفه‌جویی در زمان و جلوگیری از دست‌وپا گیر شدن میشود.

Ripgrep در بیشتر مخازن توزیع‌ها موجود است، بنابراین برای نصب بسته‌ها باید به دفترچه راهنمای توزیع مراجعه کرد.

Delta: بهبود خروجی Ripgrep

Delta معمولاً برای برنامه‌نویسان است. Ripgrep کار فوق‌العاده‌ای در جستجوی سریع فایل‌ها برای یافتن دقیقاً آنچه نیاز است، انجام میدهد. این ابزار دارای ویژگی‌های مدرن و یک نحو جستجوی پیشرفته است. با این حال، خروجی آن خسته‌کننده است، زیرا فاقد رنگ و زمینه است. در حالی که برخی ممکن است استدلال کند که این ابزار ساده است و فقط بر روی عبارت جستجو تمرکز دارد، اما به نظر میرسد به موارد بیشتری نیاز است. هنگام جستجوی کد، مشاهده زمینه و رنگ‌های اطراف مورد نیاز است، زیرا هر دو به جدا کردن قسمت‌های مهم از غیرمهم کمک میکنند.

برای کسانی که برنامه‌نویس هستند (یا تازه شروع کرده‌اند)، delta، برجسته‌سازی نحوی را بر روی خروجی ripgrep اعمال میکند. همچنین ویژگی‌های اضافی برای ادغام با Git، که یک سیستم مدیریت اسناد است، ارائه میدهد. به عنوان مثال، یک نمای جانبی خوب از تغییرات در اسناد (معروف به diff، که مخفف difference است) ارائه میدهد.

Git میتواند هر نوع سند متنی را مدیریت کند و افراد اغلب از آن برای ذخیره dotfileهای خود (معروف به فایل‌های پیکربندی که با یک نقطه شروع میشوند) استفاده میکنند. اگر به ذخیره dotfileهای خود علاقه دارید، اکیداً توصیه میشود که آن‌ها را با Git ذخیره کنید. در این صورت، delta نیز ارزش بررسی را دارد، حداقل فقط به خاطر نمای diff آن.

میتوان delta را از طریق مخازن رسمی Debian، Ubuntu، Fedora، Arch Linux و چند مورد دیگر، با نام gitdelta نصب کرد. همچنین از طریق Homebrew و Nix نیز در دسترس است.

Fd: جایگزینی سریع‌تر برای Find

همان‌طور که در عنوان ذکر شد، fd بسیار شبیه find است، با این تفاوت که به‌طور قابل توجهی سریع‌تر است و رنگ‌های زیباتری دارد. رنگ‌ها، همان‌طور که قبلاً ذکر شد، نتایج جستجو را آسان‌تر میکنند.

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

مانند ripgrep، fd نیز از جستجوهای هوشمند حالت حروف پشتیبانی میکند و همچنین از فایل gitignore پیروی می‌کند، بنابراین جستجوها به‌طور پیش‌فرض راحت‌تر هستند و نویز را کاهش میدهند.

Fd تقریباً برای هر توزیعی در دسترس است، بنابراین برای نصب آن، باید به مدیر بسته یا دفترچه راهنمای توزیع مراجعه کرد.

Eza: ls مدرن با ویژگی‌های بهبود یافته

Eza یک رویکرد مدرن به دستور استاندارد ls است و ویژگی‌های اصلی آن، پشتیبانی بهتر از رنگ و آیکون‌ها است. اگرچه ضروری نیست، اما آیکون‌ها یک لمس خوب هستند، اما برای بسیاری، رنگ‌ها ضروری هستند.

Eza دارای برخی از ویژگی‌های خوب دیگر مانند نمای درختی و هایپرلینک‌ها است. به عنوان مثال، فلگ هایپرلینک‌ها، تمام نام‌های فایل و دایرکتوری را با استفاده از فرمت OSC 8 به لینک‌های قابل کلیک تبدیل میکند. اکثر ترمینال‌ها از این لینک‌ها پشتیبانی می‌کنند، اما برای اطمینان، میتوان به لیست غیررسمی ترمینال‌هایی که از هایپرلینک‌های OSC 8 پشتیبانی می‌کنند، مراجعه کرد. هر ترمینال متفاوت است و ممکن است لازم باشد آن را به‌صورت دستی فعال کرد.

بهترین قسمت این است که هایپرلینک‌ها با نمای درختی نیز کار می‌کنند، به این معنی که میتوان به‌سرعت در دایرکتوری‌های بزرگ پیمایش کرد. با این حال، یک مشکلی که مشاهده شده این است که نمای درختی eza بسیار کندتر از درخت استاندارد است: tree نتایج را با پیدا کردنشان به‌صورت پیوسته نمایش می‌دهد، در حالی که eza کل دایرکتوری (گاهی اوقات بزرگ) را پیمایش میکند و همه آن‌ها را به‌طور هم‌زمان نمایش میدهد—این کار ممکن است مدتی طول بکشد، اما رنگ‌های زیبا و لینک‌های قابل کلیک دارد!

نکته آخر این است که تایپ `eza icons` هر بار آزاردهنده است، بنابراین ممکن است ایجاد یک نام مستعار (alias) مفید باشد.

Eza برای اکثر توزیع‌های محبوب در دسترس است، بنابراین میتوان به مدیر بسته توزیع مراجعه کرد. با این حال، نصب روی Debian و Ubuntu به یک مخزن APT سفارشی نیاز دارد، اما صفحه اصلی eza این موضوع را پوشش میدهد.

جستجوی تقریبی تاریخچه پوسته: راه حلی کارآمد

چه مبتدی باشید و چه باتجربه، استفاده از یک ابزار جستجوی تقریبی برای تاریخچه پوسته ضروری است—این مهم‌ترین ابزاری است که در دسترس است. تایپ دستورات خسته‌کننده است، بنابراین تمایل به انجام آن فقط یک بار وجود دارد. جستجوی دستورات قبلی نیز خسته‌کننده است، زیرا استفاده از کلیدهای بالا و پایین، گردش کار را کند میکند. یک ابزار جستجوی تقریبی هر دوی این مشکلات را حل میکند.

اگر نمی‌دانید جستجوی تقریبی چیست، به‌سادگی به معنای جستجوی نزدیک به تقریبی است. برای مثال، تایپ `emp` یا `xpe` با `example` مطابقت دارد. چرا این مهم است؟ زیرا به خاطر سپردن دستوری که دو ماه پیش تایپ شده، دشوار است، یا به این دلیل که جابه‌جایی سریع بین چندین دستور، حافظه را تحت فشار قرار میدهد. فقط لازم است چند کاراکتر را در دستور به خاطر سپرد و ابزار جستجوی تقریبی به‌سرعت جستجو را در زمان واقعی محدود میکند.

سال‌ها است که به افزونه fzf History Search برای zsh تکیه شده است. از طرف دیگر، یک ابزار مستقل به نام Atuin وجود دارد که تقریباً یکسان است. هر دو کار ساده اما مؤثری انجام میدهند.

برای دستورالعمل‌های نصب به مخزن GitHub fzf History Search مراجعه کنید. همچنین ممکن است راهنماهای مربوط به نصب OhMyZsh و نحوه نصب fzf دنبال شود. یک رویکرد جایگزین و آسان‌تر، مطالعه راهنمای مربوط به نحوه نصب و استفاده از Atuin است.

اگر fzf، ripgrep و bat نصب شوند، میتوان از دستور عالی زیر برای جستجوی تقریبی در سیستم فایل استفاده کرد و خطوط منطبق را در ویرایشگر متن مورد علاقه باز کرد. دستور زیر را در فایل bashrc خود قرار دهید و سپس با `source bashrc` آن را دوباره بارگیری کنید. برای اطلاعات بیشتر، به راهنمای مربوط به نحوه عملکرد فایل bashrc مراجعه کنید.

دستور قبلی به‌طور پیش‌فرض فایل‌ها را در nano باز می‌کند، اما میتوان آن را طوری تنظیم کرد که از Vim، Neovim، Emacs و چند مورد دیگر استفاده کند. به‌سادگی متغیر editor را در bashrc خود تنظیم کرده و آن را دوباره بارگیری کنید.

برای استفاده از اسکریپت، به‌سادگی به دایرکتوری حاوی فایل‌های متنی و حرف `s` بروید. در حالی که این دستور کلمات ساده قدیمی را برای عبارات جستجو می‌پذیرد، اگر راهنمای مربوط به Regex، یک نحو جستجوی پیشرفته که میتوان در یک ساعت یاد گرفت، دنبال شود، میتوان دقت آن را به‌طور چشمگیری افزایش داد.

بدون fzf History Search، ripgrep و delta، احساس گم‌شدگی میشود و بنابراین اغلب اولین ابزارهایی هستند که نصب میشوند. بدون eza، bat و fd، ترمینال ساده و غیرقابل خواندن به نظر میرسد. با این حال، این یک لیست جامع نیست و ابزارهای ترمینال بیشتری برای نظارت بر منابع سیستم وجود دارد.