فهرست مطالب
اگر ساعتهای زیادی از روز را در خط فرمان سپری میکنید، حتماً بارها پیش آمده که نام یک فایل، متغیر یا دستور قدیمی در خاطرتان نباشد و ناچار شوید دستورهای تکراری مثل find یا grep را پشت سر هم بنویسید. ابزار fzf دقیقاً برای حل همین سردرگمی طراحی شده است.
ابزار fzf چه میکند
ابزار fzf یک جستوجوگر فازی و تعاملی همهمنظوره در خط فرمان است. واژه فازی به این معناست که برای پیدا کردن یک عبارت نیازی نیست املای دقیق یا پیوسته آن را بنویسید؛ اگر حروف را با فاصله یا به صورت تقریبی وارد کنید، fzf نزدیکترین نتیجهها را به صورت بلادرنگ فیلتر میکند و نمایش میدهد. این ابزار به عنوان یک فیلتر یونیکسی عمل میکند، یعنی هر ورودی استانداردی را دریافت میکند، یک رابط بصری برای انتخاب در اختیارتان میگذارد و در نهایت انتخاب شما را به خروجی استاندارد تحویل میدهد.
چه کسانی به fzf نیاز دارند
توسعهدهندگان نرمافزار، مدیران سیستم و هر کاربری که با مخازن بزرگ کدهای منبع یا ساختارهای تو در توی دایرکتوریها کار میکند، بیشترین بهره را از fzf میبرند. اگر روزانه صدها بار بین پوشهها جابهجا میشوید، فایلهای متنی را در ویرایشگر باز میکنید یا میان شاخههای متعدد گیت جابهجا میشوید، این ابزار زمان تلفشده برای یادآوری مسیرها را به صفر نزدیک میکند.
در تیمهایی که پروژههای پرشاخه دارند، ترکیب fzf با ابزارهای مدیریت نسخه بسیار رایج است. برای تسلط عمیق بر مفاهیم شاخهبندی و رهگیری کدها، دوره گیت و گیتهاب تعاملی مسیر یادگیری را شفافتر میکند.
روش نصب از مخزن رسمی
ابزار fzf برای لینوکس، مک و ویندوز در دسترس است و در بیشتر توزیعها از طریق مدیر بسته پیشفرض نصب میشود.
در سیستمعامل مک با Homebrew:
bashbrew install fzf
در توزیعهای مبتنی بر دبیان و اوبونتو:
bashsudo apt install fzf
همچنین با شبیهسازی مستقیم مخزن گیتهاب پروژه میتوانید نسخهای مستقل به همراه میانبرهای پوسته دریافت کنید:
bashgit clone --depth ۱ https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
اجرای اولین فرمان و رفتار ابزار
پس از نصب، کافی است در هر پوشهای نام ابزار را تایپ کنید:
bashfzf
بلافاصله تمام فایلهای دایرکتوری فعلی در قالب یک لیست پیمایشی عمودی نمایان میشوند. با نوشتن چند حرف دلخواه، گزینهها بلافاصله پالایش میشوند. با کلیدهای جهتنما یا کلیدهای حرکتی میتوانید روی گزینه مورد نظر بروید و با فشردن Enter، نام آن فایل چاپ میشود.
قدرت واقعی fzf در ترکیب با لولهها نمایان میشود. به عنوان نمونه برای باز کردن یک فایل در ویرایشگر nano:
bashnano $(fzf)
یا برای جستوجو در لیست پردازشهای در حال اجرا:
bashps aux | fzf
چه فرآیندهایی با fzf دگرگون میشوند
اولین تغییر، نحوه استفاده از تاریخچه دستورها است. کلید ترکیبی Ctrl+R در پوستههای zsh یا bash با fzf بازنویسی میشود؛ بنابراین به جای جستوجوی معکوس سنتی، فهرستی کامل و فازی از کارهای پیشین باز میشود.
دومین دگرگونی، تعامل با فایلها و پوشهها است. با استفاده از کلید ترکیبی Alt+C میتوانید سریعتر از هر فرمان دیگری وارد پوشه دلخواه شوید. همچنین میانبر Ctrl+T امکان درج مسیر هر فایلی را مستقیم در میانه دستور فعلی فراهم میکند.
محدودیتهای واقعی fzf
ابزار fzf به خودی خود درون محتوای فایلها را جستوجو نمیکند؛ این ابزار فقط نامها و رشتههای ورودی را پردازش میکند. برای خواندن داخل متنها باید آن را با ابزارهایی مانند ripgrep ترکیب کنید. علاوه بر این، در دایرکتوریهای بسیار بزرگ با میلیونها فایل ممکن است مصرف حافظه اندکی افزایش یابد، هرچند بهینهسازیهای انجامشده در این ابزار سرعت اجرا را حتی در کاتالوگهای سنگین در سطح بسیار بالایی نگه میدارد.




نظرها
اولین نفری باشید که نظر میدهدسؤالتان را بپرسید یا تجربهتان را بنویسید تا نویسندهی مطلب پاسخ بدهد.