- Linux पर काम की दक्षता बढ़ाने वाले कई आधुनिक command-line टूल्स का परिचय
- पारंपरिक Unix कमांड्स को आधुनिक तरीके से बदलने या उनकी क्षमताएँ बढ़ाने वाले, और Rust·Go आदि में बने performance-केंद्रित टूल्स की बड़ी सूची शामिल
फ़ाइल देखने और नेविगेट करने के टूल्स
bat : cat कमांड का syntax highlighting और git integration के साथ बेहतर संस्करण
exa : ls/tree का विकल्प देने वाला आधुनिक file list viewer, लेकिन फिलहाल maintenance बंद है
eza : exa का fork, जो आधुनिक ls/tree प्रदान करता है
lsd : next-generation ls, जो पुरानी compatibility और अधिक सलीकेदार output देता है
broot : बेहतर navigation वाला tree-आधारित file explorer
nnn : हल्का और तेज़ terminal file manager
फ़ाइल·डायरेक्टरी क्षमता विश्लेषण
ncdu : text-आधारित सहज du interface प्रदान करता है
dust : Rust में बना ज़्यादा आसान du replacement
duf : पारंपरिक df से बेहतर usability वाला disk usage analysis टूल
फ़ाइल और कोड खोज
fd : सरल और तेज़ find replacement जिसकी usability शानदार है
ripgrep : gitignore सपोर्ट वाला बेहद तेज़ grep replacement
ag : ack जैसा लेकिन उससे भी तेज़ code search टूल
fzf : general-purpose fuzzy finder. pipeline समेत कई जगह उपयोगी
bfs : breadth-first आधारित find replacement
टर्मिनल के भीतर Git/diff viewer
delta : git और diff के नतीजों को ज़्यादा पठनीय तरीके से visualize करता है
कमांड हिस्ट्री और प्रोसेसिंग
mcfly : shell history search·navigation को काफी बेहतर बनाता है. बेहतर search quality और सहज UI देता है
डेटा प्रोसेसिंग
choose : cut और कुछ awk उपयोगों का ज़्यादा सहज और तेज़ विकल्प
jq : JSON-विशेष sed की तरह उपयोग होने वाला data parser
sd : ज़्यादा परिचित find/replace अनुभव देने वाला sed replacement
सिस्टम/प्रोसेस मॉनिटरिंग
bottom : cross-platform ग्राफ़िक-आधारित system·process monitor
glances : top/htop का बेहतर संस्करण
gtop : terminal dashboard-शैली system monitor
procs : Rust में लिखा ps replacement command
बेंचमार्किंग·नेटवर्क
hyperfine : CLI benchmarking automation टूल
gping : graph output feature के साथ आने वाला ping टूल
HTTP क्लाइंट
httpie : आधुनिक और उपयोगकर्ता-अनुकूल CLI HTTP client. developer API testing के लिए उपयुक्त
curlie : curl की ताकत को httpie की usability के साथ जोड़ने वाला टूल
xh : performance-केंद्रित httpie replacement
डायरेक्टरी मूवमेंट·एडिटर
zoxide : z से प्रेरित smart cd command
micro : आधुनिक सुविधाओं वाला terminal text editor
नए उभरते CLI utilities
up : real-time preview pipeline टूल, कमांड output तुरंत देखा जा सकता है
हेल्प·डॉक्यूमेंटेशन टूल्स
ManKier : संक्षिप्त man pages, साफ़-सुथरे command descriptions
tldr : संक्षिप्त, example-केंद्रित man page summaries
tealdeer : Rust-आधारित tldr implementation, तेज़ execution speed
explainshell : command arguments का auto-analysis कर अर्थ को visual तरीके से समझाता है
cheat.sh : tldr और cheatsheet को मिलाने वाली online help service
GUI टूल्स
baobab : GUI-आधारित disk usage analyzer
stacer : system optimization और monitoring GUI टूल, service management सहित
1 टिप्पणियां
Hacker News की राय
हो सकता है कि ये टूल वस्तुनिष्ठ रूप से बेहतर हों, लेकिन हर बार नया OS इंस्टॉल करने, VM चलाने या SSH से कनेक्ट होने पर इन्हें सेटअप करना कभी न खत्म होने वाली मशक्कत है—यह बात मैंने सीखी है। हर environment में अलग से सेटिंग करना थका देने वाला है, और मैं यह भी नहीं चाहता कि कहीं नए टूल और कहीं पारंपरिक टूल मिलाकर इस्तेमाल करूँ। क्लासिक टूल्स को ठीक से सीख लेना ही आखिरकार जीवन सबसे आसान बनाता है
कुछ लोग अपना ज़्यादातर समय अपनी ही मशीन पर बिताते हैं, इसलिए ऐसी convenience improvements उनके लिए बहुत मूल्यवान होती हैं। फिर भी उन्हें क्लासिक टूल्स का भी काफ़ी इस्तेमाल करना आता है, इसलिए कभी-कभार दूसरे सर्वरों पर काम करते समय भी काम चल जाता है। हर कोई ऐसा sysadmin नहीं होता जिसे दिन भर कई तरह के सर्वरों में लॉग इन करना पड़े
कुछ टूल इतने ज़्यादा बेहतर होते हैं कि थोड़ा झंझट वाला installation भी पूरी तरह सार्थक लगता है। मुझे क्लासिक टूल्स अच्छी तरह आते हैं, लेकिन
fdयाripgrepहमेशा बेहतर लगते हैंमुझे Nix बहुत पसंद आने की असली वजह यह है कि लगभग हर environment में एक जैसा setup मिल सकता है (जब तक मेरा environment
linuxयाmacOSहो; मैं बस इन्हीं दो की परवाह करता हूँ)। Nix को root permission के बिना इंस्टॉल करने के भी कई तरीके हैं, इसलिए मैं लगभग कहीं भी अपना environment जैसा का तैसा बना लेता हूँ। बेशक Nix न हो तो भी क्लासिक टूल्स से काम हो जाता है। ऐसा नहीं है कि आपको इनमें से सिर्फ़ एक ही चुनना है; दोनों रखे जा सकते हैंनया OS इंस्टॉल करते समय वैसे भी ज़रूरी packages को
apt-get,pacman,dnf,brewजैसी चीज़ों से इंस्टॉल करना पड़ता है, और अपना browser या editor वगैरह भी अलग से लगाना ही होता है। SSH से लॉग इन करने पर GUI तो चल ही नहीं सकता, लेकिन इससे GUI टूल्स से बचने की कोई वजह नहीं बनती। अगर personal environment और shared environment में टूल्स का सेट अलग हो, तो भी मुझे यह कोई बड़ा मुद्दा नहीं लगता। उदाहरण के लिएbat,catको पूरी तरह replace नहीं करता; वह बस syntax highlighting जोड़कर जीवन आसान बना देता है। अगर इंस्टॉल न हो, तो बस इस्तेमाल मत करोमेरी राय में “एक काम बहुत अच्छे से करो” वाली UNIX philosophy के हिसाब से, जब कोई बेहतर विकल्प आता है तो उसे आसानी से replace कर पाना ही इन simple utilities की असली खासियत है। करियर के लिए क्लासिक टूल्स पहले सीखना सही है, लेकिन नए विकल्प भी ज़रूर सीखने चाहिए। मेरे लिए
batयाezaसे ज़्यादाfd(findका विकल्प),sd(sedका विकल्प) जैसे time-saving विकल्प सच में मददगार हैंकई networks, ग्राहकों और सैकड़ों servers पर काम करने की स्थिति में custom टूल्स का मूल्य लगभग नहीं के बराबर है। वजह यह है कि 90% environments में ये टूल्स इंस्टॉल ही नहीं होते। मैं automation के ज़रिए
ansible-configमें बस कुछ चीज़ें जोड़कर deploy करता हूँ, लेकिन सूची को बहुत संक्षिप्त रखता हूँ। जिन systems को मैं manage करता हूँ उनमें 95%debianयाubuntuहैं, इसलिए baseline लगभग एक जैसा है, और उसके ऊपर सिर्फ़ack,etckeeper,vim,pv,dstatजैसी चीज़ें जोड़ता हूँयहाँ "server" वाला पहलू अहम है। ज़्यादातर हल्के-फुल्के सुधरे हुए sysadmin प्रोग्राम शायद उतने मूल्यवान न हों, लेकिन कुछ सचमुच dev tools हैं जो development environment में काम आते हैं और उन्हें बस उन कुछ machines पर इंस्टॉल करना होता है जिन पर programming की जाती है।
ripgrep(बेहतरीन recursive grep),jq(JSON processor, जिसका unix की default toolkit में कोई विकल्प नहीं),hyperfine(benchmarking) इसके अच्छे उदाहरण हैंWindows और Linux के बीच आते-जाते काम करने पर
ripgrepजैसे बेहतरीन cross-platform टूल सच में बहुत सुविधाजनक लगते हैंमुझे जिज्ञासा है कि क्या कोई ऐसा टूल या SSH extension है जो इन apps को remote SSH session में अपने-आप ले आए। अगर binary छोटी हो, तो उसे temp folder में कॉपी करके चलाया जा सकता है, और उस प्रक्रिया को automate करना भी कल्पना से बाहर नहीं है। बस सवाल यह है कि क्या इसमें security concerns होंगे, या क्या extra permissions चाहिए होंगी। आखिरकार इन apps की portability ही असली मुद्दा है। मैं भी इस बारे में अक्सर सोचता हूँ
emacsलगभग एक operating system की तरह काम करता है, इसलिए किसी भी system पर एक परिचित environment मिल जाता है। इसी वजह से “GNU is my operating system, linux is just the current kernel” जैसी बात कही जाती है। एक अनुभवी admin के नज़रिए से, जो लोग Linux सीखना शुरू कर रहे हों उन्हें मैं पहलेinfocommand देखने और उसकी manuals पढ़ने की सलाह देता हूँ। इससे आप ज़्यादातर admins से बहुत आगे निकल सकते हैं। अगर आपको built-in tools का पता हो, तो manuals भी अच्छी लगती हैं और scripting आसान हो जाती है—यही Linux philosophy का मूल है। एक समय ऐसा भी था जबnanoनहीं होता था और सिर्फ़viहोता था, लेकिन आजकल CI/CD automation सेtuieditor जोड़ना भी आसान हैइस तरह की “मैं कौन हूँ” वाली टिप्पणियों से मुझे ज़्यादा जुड़ाव नहीं लगता। बहुत से लोगों को इस बात से कोई फ़र्क नहीं पड़ता कि वे custom tools को remote पर इंस्टॉल नहीं करेंगे। बात बस इतनी है कि कम-से-कम अपने local computer पर तो ऐसे tools लगाकर उनका लाभ लिया जाए
मुझे लगता है कि इस तालिका में “यह टूल किस समस्या को हल करता है” वाला एक अतिरिक्त column होना चाहिए। और “Rust में लिखा गया है” जैसी बात मुझे कोई differentiator नहीं लगती
मुझे एक बार company meeting में यह सुनकर बहुत अजीब लगा था कि “Go में लिखा है” कोई खास differentiator है। #facepalm
तालिका की कई entries वास्तव में समस्या बताती हैं, जैसे “syntax highlight”, “ncurses interface”, “more intuitive”। लेकिन “Rust में लिखा”, “modern”, “better” जैसे शब्द मुझे मददगार नहीं लगते
ज़्यादातर tools का प्राथमिक उद्देश्य UX सुधारना है
non-GPL license भी कोई differentiator नहीं है
इनमें से काफ़ी tools Windows पर भी उपलब्ध हैं, यह अच्छी बात है
ऐसे tool lists हमेशा मज़ेदार लगते हैं। ज़्यादातर लोग शायद यहाँ से एक-दो tools तो ज़रूर अच्छे से इस्तेमाल कर सकेंगे। मेरे लिए व्यक्तिगत तौर पर
ripgrepऔरjqअनिवार्य हैं।ripgrep,grepके विकल्पों में सबसे अच्छा drop-in है, औरjqने ठीक वही समस्या हल की जिसे मुझे सच में हल करना था। मैंlsdऔरdustभी आज़माना चाहूँगा। भले कोई नया टूल मुझे सीधे ज़रूरी न लगे, फिर भी मुझे अच्छा लगता है कि लोग इन tools पर समय लगाते हैं। पूरे समुदाय के toolbox को थोड़ा-थोड़ा बेहतर बनाना अपने-आप में शानदार बात हैमैं सबसे पहले
fzfचुनूँगा। मुझे यहrgयाjqसे भी ज़्यादा पसंद हैripgrepका व्यवहारgrepसे अलग है, इसलिए वह वास्तव में drop-in replacement नहीं है। यह शानदार program है, लेकिन पूरी तरह compatible नहीं हैमेरी तरह Linux admins के पास आमतौर पर ऐसी कसकर चुनी हुई सूची होती है। मैंने अपना stack ज़्यादातर GPL-आधारित tools के आसपास बनाया है, और यह ikrima.dev format मुझे ख़ास तौर पर पसंद है
मैं terminal में ही जीता हूँ, लेकिन ये tools या तो मेरी तत्काल समस्या हल नहीं करते, या मेरे system में इंस्टॉल नहीं होते, फिर भी किसी तरह इन पर GitHub के दसियों हज़ार stars हैं। आखिर इनकी इतनी लोकप्रियता किस वजह से है, यह मुझे समझ नहीं आता
जो लोग अपनी music library में जीते हैं, वे भी कभी-कभी यह देखकर हैरान हो सकते हैं कि कोई ऐसा artist जिसे वे पसंद नहीं करते, या जो उनकी library में है ही नहीं, लाखों records बेच देता है। मज़ाक अपनी जगह, लेकिन मैं पूछना चाहूँगा कि क्या आपने खुद इनमें से किसी tool को सच में इस्तेमाल किया है। मुझे भी पहले समझ नहीं आता था कि लोग
vimक्यों इस्तेमाल करते हैं, लेकिन जब मैंने उसे ठीक से इस्तेमाल किया, तब वजह समझ आईfzfइस्तेमाल नहीं करते? तब तो terminal life काफ़ी कठिन लगती होगी। सीधे run करने से भी ज़्यादा उपयोगी यह है कि shell plugins के ज़रिएCtrl+Rसेbash_historyऔरCtrl+Tसे current directory की files का fuzzy search मिल जाता हैcore unix toolset इतना मज़बूत है कि default tools से भी आराम से काम हो जाता है। कई alternative tools बेहतर हैं, लेकिन वे अनिवार्य नहीं हैं, और ऊपर से ज़्यादातर default install में होते भी नहीं
जिज्ञासा से पूछ रहा हूँ: क्या built-in unix tools से hidden files (
.gitआदि) को ignore करते हुए और सिर्फ़ किसी खास extension पर recursive grep करने का कोई elegant तरीका है? उदाहरण के लिएrg -g '*.foo' barऐसा pattern है जो मैं बहुत इस्तेमाल करता हूँ। इसी तरहfdसे regex या glob से match करने वाली files ढूँढना भी। default tools के साथ मुझे इसका कोई साफ़-सुथरा तरीका नहीं मिलामुझे यह जानने की उत्सुकता है कि terminal में दिन भर किस तरह का काम किया जाता है कि toolset को बेहतर बनाने की इच्छा ही न हो। मन में आता है पूछूँ—क्या आप अपने सारे tools खुद लिखते हैं?
dark mode में link text बहुत कम दिखाई देता है, इसलिए पढ़ना मुश्किल है
मुझे लगता है कि सिर्फ़
jqही ऐसा है जो ऐसी वास्तविक समस्या हल करता है जिसे मौजूदा tools से ठीक तरह हल नहीं किया जा सकता। बाकी ज़्यादातर चीज़ें बस preference, performance, highlighting या Rust implementation जैसी भिन्नताएँ हैंमेरी इच्छा है कि कोई team parameters, colors, tables वगैरह के design को एक जैसा रखकर tools की एक पूरी “suite” बनाए
मैं लंबे समय तक
htopकोtopसे ज़्यादा accessible मानकर इस्तेमाल करता रहा, लेकिनhtopdefault रूप से kernel threads नहीं दिखाता, और इसने incident diagnosis में रुकावट डाली। उसके बाद मैं फिरtopपर लौट आया क्योंकि वह सारी जानकारी दिखाता है और ज़्यादा भरोसेमंद है।htop/btopजैसी UI मुझे अब लगभग showmanship जैसी लगती हैंयह लेख 2023 का है। संभव है कि ज़्यादातर “modern tools” अब तक अपडेट हो चुके हों और नए trendy विकल्प भी आ गए हों
tools इतने ज़्यादा हैं कि अगर आधे भी टिके रहें, तब भी यह काफ़ी मूल्यवान है
मेरा अनुभव तो उल्टा रहा है। इनमें से ज़्यादातर tools बस बेहद शक्तिशाली GNU default tools का एक और “reinvention” लगते हैं—अगर आप समय लगाकर उन्हें सही से सीख लें तो वही काम हो जाता है