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

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

cd ~/d/y را تایپ کنید که شما را به پوشهی cd ~/Downloads/YouTube میبرد.
– cd استفاده کرد.

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

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

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

یکی از بزرگترین مزیتهای استفاده از ترمینال این است که نیازی به استفاده از موس ندارید؛ البته تا وقتی که بخواهید چیزی را کپی کنید. بیایید چند راهکار برای کپی کردن بدون استفاده از موس را بررسی کنیم:
برای کپی کردن با yank کافی است خروجی را به آن redirect کنید، به این ترتیب:

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

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

احتمالا بعد از مدتی، از نوشتن cd ~/yek/masire/kheili/tulani برای رفتن به پوشهی پروژهتان خسته میشوید. fasd میتواند به شما در این مورد کمک کند.
وقتی که fasd را نصب و تنظیم کنید، در پسزمینه به جابجایی شما بین پوشههای مختلف با دستورات cd گوش میکند و میتواند کمک کند که دفعات بعدی، راحتتر به پوشهی مورد نظر خود برسید. در مثال زیر، ابتدا به صورت دستی به پوشهی مورد نظر میرویم. دفعهی دوم، با استفاده از دستور z از fasd این کار را میکنیم:

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

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

برای فیلتر کردن خروجی دستورها میتوانید از peco استفاده کنید. میتوان گفت peco نسخهی تعاملی grep است.
فرض کنید دستور git merge-base را فراموش کردهاید. برای یادآوری آن، میتوانید تاریخچهی دستورات را بررسی کنید:

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

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

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

درست است که در حالت متنی کار میکنید و دارید از tig استفاده میکنید، اما لزومی ندارد که از diff متنی استفاده کنید. اگر به یک ابزار diff/merge مناسب مثل Beyond Compare نیاز دارید، میتوانید با تنظیم tig از آن استفاده کنید. برای این کار باید خط زیر را به فایل tigrc. خود اضافه کنید:
bind status <F4> !sh -c “git difftool -y \”$(git rev-parse — show-toplevel)/%(file)\”"
حالا یک فایل تغییریافته را انتخاب کنید و کلید F4 را فشار دهید.
حتی اگر کار با ترمینال برایتان راحت باشد، باز هم یک سری کارها هستند که ممکن است موجب اذیتتان بشوند. مثلا باز کردن سریع چند پوشه یا کپی چند فایل انتخاب شده به یک پوشهی دیگر.
با استفاده از ranger میتوانید به شیوهی زیر فایلها را کپی کنید:

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

فرض کنید همهی برنامههای خود را تنظیم کردهاید. وقتی کامپیوترتان خراب شود یا بخواهید آن را عوض کنید، چکار خواهید کرد؟ mackup (هم برای لینوکس و هم برای MacOS) راهکاری است برای backup گرفتن تنظیمات برنامههای خود به dropbox یا هر سرویس ذخیرهی ابری دیگر.
روش آن هوشمندانه است، به جای ایجاد نسخهها و scheduleهای مختلف، صرفا فایل را به dropbox شما آپلود میکند و فایل اصلی را با symlink جایگزین میکند.
برنامههای شما طبق روال عادی و با تنظیمات خودشان کار خواهند کرد، اما در واقع در حال تغییر فایلهای dropbox شما هستند. با این روش، هر تغییر روی تنظیمات، مستقیما روی سرویس ذخیرهی ابری شما backup میشود.
نکتهی مهم این است که برخلاف بقیهی برنامههای پشتیبانگیری موجود، mackup تنها به یک بار اجرا شدن نیاز دارد.
این دستور قرار است به سوال «چی داره حافظهی منو میخوره؟!» جواب بدهد. بسیار ساده و پرکاربرد است و از بسیاری از برنامههای جایگزین که رابط گرافیکی دارند بهتر کار میکند. در نهایت میتوان مستقیما از طریق آن چیزهای مختلف را پاک کرد.

یک -- 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

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