فهرست مطالب
اگر در محیط ترمینال لینوکس یا مک کار کرده باشید، بارها برای پیدا کردن یک فایل مجبور شدهاید از دستور find استفاده کنید. سینتکس طولانی، کندی در شاخههای بزرگ و خطاهای مکرر در نوشتن الگوها باعث شده جستجوی فایل برای خیلی از توسعهدهندگان کاری خستهکننده باشد. ابزار fd دقیقاً برای حل همین اصطکاک روزمره طراحی شده است.
ابزار fd چه کاری انجام میدهد
ابزار fd برنامهای ساده، بسیار سریع و کاربرپسند برای جستجوی فایلها و پوشهها در خط فرمان است. این پروژه متنباز را دیوید پیتر (sharkdp) به زبان راست توسعه داده است. در حالی که دستور سنتی find برای همهمنظوره بودن طراحی شده و در اسکریپتهای سیستمی قدیمی کاربرد دارد، fd نیازهای روزمره یک برنامهنویس مدرن را اولویت قرار میدهد. این برنامه به صورت پیشفرض پوشههای مخفی و محتوای پرونده .gitignore را نادیده میگیرد و جستجو را به صورت موازی روی هستههای پردازنده اجرا میکند.
توسعه چنین ابزارهایی با کارایی حافظه و سرعت بالا نشاندهنده ظرفیتهای ویژه زبان راست در حوزه ابزارهای خط فرمان است؛ موضوعی که در دوره راست از صفر تا برنامهنویس نیز به صورت ریشهای بررسی میشود.
چه افرادی به fd نیاز دارند
توسعهدهندگان وب و نرمافزار که روزانه با مخازن بزرگ کدهای منبع کار میکنند بیشترین بهره را از این ابزار میبرند. اگر در پروژهای با هزاران فایل در پوشه node_modules یا target کار میکنید، جستجو با ابزارهای قدیمی سیستم شما را معطل میکند. مدیران سیستم و کاربرانی که زمان زیادی را در محیط شل میگذرانند نیز میتوانند با جایگزین کردن این ابزار، کارهای روزمره را سریعتر پیش ببرند.
شیوه نصب fd در سیستمعاملهای مختلف
نصب fd در تمام توزیعهای مطرح لینوکس و سیستمعامل مک به راحتی انجام میشود. در توزیع اوبونتو و دبیان میتوانید با اجرای دستور زیر آن را نصب کنید:
bashsudo apt update
sudo apt install fd-find
در دبیان و اوبونتو به دلیل تداخل نام با یک بسته قدیمی دیگر، فایل اجرایی با نام fdfind ذخیره میشود. برای اینکه با همان نام کوتاه کار کنید، ساخت یک پیوند یا نام مستعار در شل بهترین کار است:
bashalias fd=fdfind
در مکینتاش با مدیریت بستههای Homebrew این دستور را اجرا کنید:
bashbrew install fd
همچنین اگر روی سیستم خود زنجیره ابزار زبان راست را دارید، نصب مستقیم از مخزن Crates به صورت زیر ممکن است:
bashcargo install fd-find
اولین فرمان و نمونه خروجی
برای جستجوی یک فایل ساده دیگر نیازی به نوشتن عبارتهای پیچیدهای مثل find . -name "*search*" ندارید. کافی است نام یا بخشی از الگوی مورد نظر را بعد از نام دستور وارد کنید:
bashfd config
خروجی این دستور بلافاصله مسیر فایلهای مطابق را به همراه رنگآمیزی بر پایه نوع فایل نمایش میدهد:
textsrc/config.rs
tests/fixtures/config.json
اگر بخواهید تنها به دنبال فایلهایی با پسوند مشخص مثلاً اسکریپتهای پایتون بگردید، پارامتر e- کار را انجام میدهد:
bashfd -e py
این دستور تمام فایلهای با پسوند .py را بدون نیاز به ساخت الگوهای گیجکننده فهرست میکند.
تفاوتهای کلیدی fd با دستور سنتی find
تفاوت اول در رفتار پیشفرض است. فرمان find به شکل پیشفرض وارد پوشههای مخفی مثل .git میشود و تمام فایلهای نادیدهگرفتهشده در پروژه را هم میگردد، اما fd فایلهای داخل .gitignore و موارد پنهان را جستجو نمیکند مگر اینکه با پرچم u- از آن بخواهید.
تفاوت دوم حساسیت به بزرگی و کوچکی حروف است. اگر کلمه جستجو را تماماً با حروف کوچک بنویسید، جستجو بدون حساسیت به حروف اجرا میشود؛ اما به محض اینکه یک حرف بزرگ وارد کنید، جستجو حساس به حروف خواهد شد.
تفاوت سوم سرعت اجرا است. استفاده از پیمایش چندنخی و پیادهسازی کارآمد به زبان راست باعث میشود جستجو در پروژههای حجیم تا چند برابر سریعتر از ابزارهای پیشفرض یونیکس به پایان برسد.
محدودیتهای واقعی fd در محیطهای عملیاتی
با وجود تمام نقاط قوت، fd جایگزین کامل برای هر سناریویی نیست. مهمترین محدودیت این است که ابزار در تمام سرورها به صورت پیشفرض نصب نیست. در نتیجه هنگام نوشتن اسکریپتهای شل پرتابل یا خط لولههای استقرار سرور که باید روی هر ماشین لینوکسی بدون پیشنیاز اجرا شوند، اتکا به find استاندارد همچنان انتخاب مطمئنتری است.
همچنین برخی از سوییچهای بسیار خاص در نسخه پیشرفته گنو فایند مانند محاسبه دقیق زمانهای فایل بر پایه دقیقه یا دستکاری عمیق مجوزها، در دستور fd سادهسازی شدهاند و به شکل عینی وجود ندارند. بنابراین fd برای استفاده تعاملی در پایانه توسعه طراحی شده است و اسکریپتهای حساس سیستمی همچنان باید با دقت بررسی شوند.



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