دانشجوی پزشکیِ عاشقِ تکنولوژی
کامندلاین به فرمانِ شما: ۲۰ برنامه کاربردی برای برنامهنویسها
اگر شما هم برنامهنویس یا مهندس نرمافزار هستید، احتمالا خیلی اوقات ترجیح میدهید از کامندلاین برای انجام کارها استفاده کنید. استفاده از ترمینال برای بیشتر کارها، کمک میکند که بازدهی و عملکرد بهتری داشته باشید و بتوانید راحتتر بین پروژهها، فعالیتها و پوشههای مختلف جابجا شوید. در این مقاله میخواهیم چندتا از برنامههای جالب کامندلاین را بررسی کنیم.
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)\”"
حالا یک فایل تغییریافته را انتخاب کنید و کلید 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
کوئرامگ مجلهای تخصصی برای توسعهدهندگان است که هر هفته با مطلبهایی در زمینه تکنولوژی، رشد فردی و آینده برنامهنویسی بهروزرسانی میشود. برای اطلاع از آخرین مطلبهای ما، میتوانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.
مطلبی دیگر از این انتشارات
5 مسئله برنامهنویسی که باید زیر یک ساعت حل کنید!
مطلبی دیگر از این انتشارات
راهنمای جامع برای آشنایی با PHP و دنیای طراحی وب
مطلبی دیگر از این انتشارات
۶ پروژه چالشبرانگیز برای برنامهنویسها