کامندلاین به فرمانِ شما: ۲۰ برنامه کاربردی برای برنامه‌نویس‌ها

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

oh-my-zsh (zsh)

چارچوب oh-my-zsh مجموعه‌­ای از تنظیمات zsh است که قابلیت­‌هایی برای بهبود تجر‌به‌­ی استفاده از ترمینال در اختیار ما می­‌گذارد. تعدادی از پرکاربردترین­ این تنظیمات را در ادامه بررسی می‌کنیم:

  • اتوکامپلیتِ (autocomplete) بهتر، که در آن می‌­توان از فلش‌­ها برای حرکت بین گزینه‌­ها استفاده کرد.
  • تکمیل خودکار مسیرها، با تایپ فقط یک حرف از مسیر پوشه. مثلا می‌­توانید cd ~/d/y را تایپ کنید که شما را به پوشه‌­ی cd ~/Downloads/YouTube می‌­برد.
  • برای دسترسی به تاریخچه‌ی مسیرها، می­‌توان از – cd استفاده کرد.
  • تکمیل خودکار در git: می­توانید با tab به راحتی بین شاخه‌­های مختلف حرکت کنید.

علاوه بر کارهایی که خود zsh انجام می‌­دهد، افزونه­‌های مختلفی نیز وجود دارند.

افزونه‌ی history-substring-search به شما اجازه می­‌دهد که چند حرف اول یک دستور را بنویسید و سپس با فشردن فلش بالا، همه­‌ی دستوراتی را که با رشته­‌ی نوشته شده شروع می­‌شوند پیدا کنید.

اگر رنگ متن‌­ها را دوست ندارید، افزونه‌­ی syntax-highlighting را نصب کنید. با این افزونه، اگر syntax دستور را اشتباه نوشته باشید، قبل از اجرای آن متوجه خواهید شد.

این پلاگین علاوه بر این‌که ترمینال شما را زیباتر می‌کند، به شما اجازه می­‌دهد به آسانی وضعیت و شاخه­‌ی git فعلی خود را ببینید.

کپی کردن خروجی (بدون استفاده از موس)

یکی از بزرگترین مزیت‌­های استفاده از ترمینال این است که نیازی به استفاده از موس ندارید؛ البته تا وقتی که بخواهید چیزی را کپی کنید. بیایید چند راهکار برای کپی کردن بدون استفاده از موس را بررسی کنیم:

yank

برای کپی کردن با yank کافی است خروجی را به آن redirect کنید، به این ترتیب:

pbcopy (MacOS) / xclip (Linux)

هردوی این دستورها، محتوایی که به آن­ها pipe شده را کپی می‌­کنند:

iTerm2 integration

از بین ویژگی‌های زیاد iTerm2، با استفاده از ویژگی integration در آن می‌­توانید به آسانی خروجی دستور آخر را انتخاب و کپی کنید:

fasd

احتمالا بعد از مدتی، از نوشتن cd ~/yek/masire/kheili/tulani برای رفتن به پوشه‌­ی پروژه‌­تان خسته می‌شوید. fasd می‌­تواند به شما در این مورد کمک کند.

وقتی که fasd را نصب و تنظیم کنید، در پس‌زمینه به جابجایی شما بین پوشه‌های مختلف با دستورات cd گوش می­‌کند و می‌­تواند کمک کند که دفعات بعدی، راحت­‌تر به پوشه‌­ی مورد نظر خود برسید. در مثال زیر، ابتدا به صورت دستی به پوشه‌­ی مورد نظر می‌­رویم. دفعه‌­ی دوم، با استفاده از دستور z از fasd این کار را می‌­کنیم:

علاوه بر رفتن به پوشه­‌های مختلف، می­‌توانید از میانبرهای fasd برای اجرای عملیات­‌های دیگر با دستور کاما (,) استفاده کنید:

lnav

یکی از بهترین راه­‌ها برای سر و کله زدن با لاگ‌­ها، lnav است. این موضوع که lnav در خود کامندلاین وجود دارد، کار با آن را راحت­‌تر می‌­کند. این دستور به سادگی یک فایل لاگ یا چند لاگ موجود در یک پوشه را بارگذاری می‌­کند و به شما اجازه می‌­دهد آن‌­ها را فیلتر کنید، در آن­ها جست‌وجو کنید و مدیریت‌­شان کنید.

در مثال زیر، تعداد زیادی لاگ باز می­‌کنیم و سپس با استفاده از فیلتر، خطوطی را که به دنبال آن هستیم می‌یابیم:

peco

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

فرض کنید دستور git merge-base را فراموش کرده‌اید. برای یادآوری آن، می­‌توانید تاریخچه­‌ی دستورات را بررسی کنید:

دقت کنید که peco خط انتخاب شده را برمی­‌گرداند. این یعنی می‌­توانید برای برنامه­‌های دیگر از آن استفاده کنید. مثلا ‌می‌توانیم pid برنامه­‌ی Evernote را به کمک دستور yank که بالاتر گفتیم کپی کنیم:

tig

احتمالا استفاده از ترمینال برای خیلی از دستورات عمومی git مثل checkout ،pullout و merge راحت‌­تر از استفاده از یک رابط کاربری گرافیکی است. اما بعضی از دستورات واقعا نیاز به یک رابط کاربری تعاملی دارند. ممکن است وقتی دارید لاگ­‌های git را بررسی می‌­کنید، بخواهید آزادانه بین commitها حرکت کنید و وقتی دارید commit می­‌کنید، بخواهید فایل­‌هایی را که قصد stage کردن دارید انتخاب کنید. اگر برای این اعمال از یک رابط گرافیکی استفاده کنید، مجبورید از ترمینال خارج شوید و رشته‌­ی افکارتان پاره می­‌شود. tig می‌­تواند در این مورد به شما کمک کند.

git log

برای مشاهده­‌ی تاریخچه می‌­توانید از دستور tig در پوشه‌­ی مربوطه استفاده کنید. با این دستور، commitهایی که انجام داده‌­اید، فایل­‌هایی که تغییر کرده‌اند و diff مربوطه نمایش داده می­‌شوند.

git commit

با استفاده از دستور tig status، می‌­توانید به آسانی فایل­‌ها و حتی خطوط خاصی (chunkهایی) را قصد commit کردن‌شان را دارید، stage کنید.

git difftool

درست است که در حالت متنی کار می­‌کنید و دارید از tig استفاده می­کنید، اما لزومی ندارد که از diff متنی استفاده کنید. اگر به یک ابزار diff/merge مناسب مثل Beyond Compare نیاز دارید، می­توانید با تنظیم tig از آن استفاده کنید. برای این کار باید خط زیر را به فایل tigrc. خود اضافه کنید:

bind status <F4> !sh -c “git difftool -y \”$(git rev-parse — show-toplevel)/%(file)\”&quot

حالا یک فایل تغییریافته را انتخاب کنید و کلید F4 را فشار دهید.

ranger

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

با استفاده از ranger می­توانید به شیوه‌­ی زیر فایل­ها را کپی کنید:

realpath

چطور می­‌شود با استفاده از ترمینال، یک فایل را به برنامه­‌ای که رابط کاربری گرافیکی دارد فرستاد؟ مثلا مسیر یک عکس را به برنامه­‌ی ویرایش عکس داد.

به این شکل realpath مسیر واقعی و مطلق هر فایلی را به شما می‌­دهد:

mackup

فرض کنید همه‌­ی برنامه‌­های خود را تنظیم کرده­‌اید. وقتی کامپیوترتان خراب شود یا بخواهید آن را عوض کنید، چکار خواهید کرد؟ mackup (هم برای لینوکس و هم برای MacOS) راهکاری است برای backup گرفتن تنظیمات برنامه­‌های خود به dropbox یا هر سرویس ذخیره‌­ی ابری دیگر.

روش آن هوشمندانه است، به جای ایجاد نسخه‌­ها و scheduleهای مختلف، صرفا فایل را به dropbox شما آپلود می­‌کند و فایل اصلی را با symlink جایگزین می­‌کند.

برنامه­‌های شما طبق روال عادی و با تنظیمات خودشان کار خواهند کرد، اما در واقع در حال تغییر فایل­‌های dropbox شما هستند. با این روش، هر تغییر روی تنظیمات، مستقیما روی سرویس ذخیره‌­ی ابری شما backup می­‌شود.

نکته­ی مهم این است که برخلاف بقیه­ی برنامه‌های پشتیبان­‌گیری موجود، mackup تنها به یک بار اجرا شدن نیاز دارد.

ncdu

این دستور قرار است به سوال «چی داره حافظه‌­ی منو می­‌خوره؟!» جواب بدهد. بسیار ساده و پرکاربرد است و از بسیاری از برنامه­‌های جایگزین که رابط گرافیکی دارند بهتر کار می‌­کند. در نهایت می­‌توان مستقیما از طریق آن چیزهای مختلف را پاک کرد.

دستورات دیگر

یک -- caffeinate (برای کاربران مک): به شما اجازه می‌­دهد بدون نگرانی از به خواب رفتن سیستم، دستوری که اجرای آن طول می­‌کشد را اجرا کنید؛ مثلا: caffeinate sleep 5

دو -- Hub: دیگر لازم نیست مدام برای درخواست­های pull و forkها به گیت­هاب بروید، می­توانید بیشتر دستورات گیت­هاب را مستقیما در ترمینال اجرا کنید.

سه -- Tmux: درواقع یک multiplexer برای ترمینال است. اگر روی یک remote computer کار می­کنید، دوست دارید از تب­ها و paneهای زیادی استفاده کنید و می­خواهید بدون قطع شدن و بسته شدن محیط­هایتان ارتباط‌تان را قطع کنید، می­توانید از Tmux استفاده کنید.

چهار -- scm_breeze: اگر حس می­کنید tig زیادی رابط کاربری دارد، شاید بهتر باشد سراغ scm_breeze بروید. این برنامه امکان جایگزینی مسیرهای طولانی موجود در status با میانبرهای عددی را فراهم می‌­کند و به شما اجازه می‌­دهد فایل­های git add را بدون نیاز به تایپ مسیرهای طولانی انتخاب کنید.

پنج -- Mdlt: یک ماشین­ حساب برای کامندلاین است که مشتق و انتگرال را هم محاسبه می­‌کند.

شما هم پیشنهاد دیگری برای اضافه شدن به این لیست دارید؟ می‌توانید در کامنت‌ها درباره کاربرد و روش استفاده‌شان بنویسید.

ترجمه بر اساس:

"My favorite command-line utilities", by Vitaly Belman at Hackernoon

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