less(1) कमांड के उपयोगी टिप्स का संग्रह
(blog.thechases.com)lessकमांड की विभिन्न सुविधाओं और shortcut combinations के ज़रिए file navigation, search, filtering, bookmark, option switching आदि को प्रभावी ढंग से किया जा सकता है- कई files को एक साथ खोलकर
:n,:p,:e,:dकमांड से files के बीच move·add·remove किया जा सकता है - search (
/, ?, n, N) और filtering (&,&!) सुविधाओं का उपयोग करके खास pattern को जल्दी खोजा या बाहर रखा जा सकता है - bookmark (
m,') और bracket matching सुविधा से लंबे documents या code files में position बदलना आसान हो जाता है - run के दौरान option toggle (
-S,-R,-Nआदि) और external command execution (!) के जरिएlessसे बाहर निकले बिना environment को तुरंत बदला जा सकता है
कई files को संभालना
lessसिर्फ pipeline के अंत में इस्तेमाल होने वाला tool नहीं है, बल्कि कई files को सीधे arguments के रूप में खोल सकता है- उदाहरण:
less file1 file2 file3
- उदाहरण:
- run के दौरान भी
:e file.hकमांड से नई file जोड़ी जा सकती है :nसे अगली file,:pसे पिछली file,:xया:rewindसे पहली file पर जाना संभव है:dकमांड से मौजूदा file को सूची से हटाया जा सकता है
navigation सुविधाएँ
3141Gकी तरह number+G डालने पर किसी खास line number पर जाया जा सकता है75%की तरह number+% से file में प्रतिशत आधारित position पर jump किया जा सकता है/patternसे forward search,?patternसे backward search,n/Nसे अगले/पिछले result पर जाना संभव है!patternका मतलब मेल न खाने वाली line खोजना,*का मतलब कई files में search,@का मतलब पहली file से search शुरू करना,@*का मतलब सभी files में पूरा search
filtering सुविधाएँ
&patternसे सिर्फ वही lines दिखती हैं जो उस pattern से match करती हैं, यह internalgrepकी तरह काम करता है&!patternसे सिर्फ वे lines दिखती हैं जो pattern से match नहीं करतीं, जो log files देखने में उपयोगी है
bookmark और bracket matching
m+ character से bookmark सेट,'+ character से उस position पर जाना- उदाहरण:
moसे OPTIONS section,meसे EXAMPLES section में bookmark रखने के बाद'o,'eसे jump करना
- उदाहरण:
- अगर
(,[,{जैसे brackets स्क्रीन की पहली line में हों, तो उसी bracket को input करने पर matching bracket पर jump किया जा सकता है- इसके उलट, अगर closing bracket आखिरी line में हो, तो opening bracket पर जाया जा सकता है
alt+ctrl+bआदि से custom bracket pairs भी सेट किए जा सकते हैं
option toggle और external command execution
- run के दौरान
-के बाद options डालकर settings तुरंत बदली जा सकती हैं-S: line wrap toggle-G: search highlight-i/-I: case sensitivity setting-R: ANSI colors दिखाना-N/-n: line numbers दिखाना/छिपाना
!कमांड से external command चलाना संभव है (!date,!bcआदि)
environment variables और अन्य सुविधाएँ
- अक्सर इस्तेमाल होने वाले options को environment variable
$LESSमें save किया जा सकता है- उदाहरण:
LESS="-RNe"→ colors दिखाना, line numbers दिखाना, file के अंत में अपने आप exit
- उदाहरण:
vकमांड से मौजूदा file को$VISUALeditor में खोलनाoयाOकमांड से standard input से पढ़ी गई सामग्री को file में save किया जा सकता हैlessctagsआधारित tag jump सुविधा को support करता है, हालांकि इसका उपयोग कम होता है
1 टिप्पणियां
Hacker News की राय
हैरानी हुई कि
followफीचर छूट गया। शुरुआत में यह थोड़ा अजीब UX लगता है, लेकिन आदत पड़ने पर कई बारtailसे बेहतर होता हैless +Fसे चलाने पर यह input stream या file को real time में follow करते हुए दिखाता है।<C-c>से follow रोककर सामान्यlessकी तरह browse कर सकते हैं, और फिरF(बड़ा अक्षर) दबाने पर follow दोबारा शुरू हो जाता हैkubectl logs | less +F) को follow करते समय<C-c>दबाने पर पूरा pipe process बंद हो जाता है, इसलिए बाद मेंFसे follow फिर शुरू नहीं किया जा सकता।lessमें<C-x>से follow रोकने का विकल्प है, लेकिन ज़्यादातर shell इस key को intercept कर लेते हैंtailमें Enter दबाकर आख़िरी line के नीचे खाली line जोड़ी जा सकती है। कई runs के output को अलग-अलग देखकर समझना आसान होता है, इसलिए इसी एक फीचर की वजह से मैं अब भीtailइस्तेमाल करता हूँ-Xया--no-initoption exit होने पर screen साफ़ नहीं होने देता। मैं आमतौर पर screen को बनाए रखना पसंद करता हूँ ताकि पिछला content देख सकूँ या copy-paste कर सकूँ-Xbehavior सिर्फ कभी-कभी चाहिए, तो इस thread की tip देखी जा सकती है-Eके साथ इस्तेमाल करने पर output terminal size से छोटा हो तो यह तुरंत exit हो जाता है। कई options मिलाकर मैं अक्सर “less -SEXIER” इस्तेमाल करता हूँ। याद रखना भी आसान हैलंबे log debug करते समय
&से सिर्फ़ ज़रूरी हिस्से filter करता हूँ और&!से गैरज़रूरी हिस्से exclude करता हूँ। regex भी support होता है। कभी-कभी धीमा होता है, लेकिन तुरंत filtering के लिए काम का हैदो उपयोगी tips हैं
-Loption input file preprocessing को skip करता है, जिससेlogfile.1,logfile.2जैसे rotated log files कोnroffसे गलत तरह process होने से बचाया जा सकता हैऔर search करते समय पहले अक्षर के रूप में
Ctrl-Rडालने पर regex नहीं बल्कि literal string से search किया जा सकता है~/.lesskeyfile से key binding सेट की जा सकती है। मैंsको पीछे scroll करने के लिए bind करता हूँ, ताकिdऔरsसे एक ही हाथ से तेज़ी से page up/down कर सकूँmacOS के default
lessमें यह फीचर नहीं है, इसलिए Homebrew से install करना पड़ता है (उदाहरण config, संबंधित विवरण)Nको next-file के लिए bind करता हूँ। macOS में lesskey न होना सच में बहुत असुविधाजनक हैOpenBSD का
man,lessको tags पास करता है ताकि:t testकी तरह किसी खास section पर सीधे जाया जा सके। दिलचस्प फीचर है, लेकिन व्यवहार में मैं इसे लगभग कभी इस्तेमाल नहीं करता।बस
/से search करने वाला consistent interface ज़्यादा सहज लगता है।वैसे BSD परिवार
mdocmacro set का इस्तेमाल करके semantic documentation बनाता है, और OpenBSD इसे render करने के लिएmandocprogram का उपयोग करता है (mdoc दस्तावेज़)^qसेlessबंद करते समय screen साफ़ न हो, और सामान्यqपहले की तरह exit के बाद screen साफ़ करे, ऐसा set किया जा सकता हैlessको-Xके बिना चलाना होगा, औरgit logजैसी स्थिति में जहाँ पिछले output को देखना हो, यह खास तौर पर उपयोगी हैlessमें external command को pipe करने का फीचर भी है।उदाहरण के लिए
maसे mark सेट करें और|aसे current position से उस mark तक का content किसी external command को भेज सकते हैं।news या email के हिस्से save करने में यह उपयोगी है।
साथ ही
-joption से यह समायोजित किया जा सकता है कि search result screen के top से कितनी lines नीचे दिखेgit logमें इस्तेमाल करता हूँ। commit चुनने के बाद shortcut सेgit showचलाता हूँ, या सीधे fixup काम करता हूँ।bashके debug trap औरkeyd-application-mapperका इस्तेमाल करके अभी चल रहे command का पता लगाया जाता है, फिर उस commit hash को निकालकर script से process किया जाता हैless(1)का regex engine बहुत धीमा है। बड़े files में मैंgrepयाripgrepसे search करके उसका resultlessमें भेजकर देखता हूँskey से pipe data को file में save किया जा सकता है। copy-paste से कहीं ज़्यादा सुविधाजनक हैlessमें देखता हूँ, और जब result उपयोगी लगे तभीsसे save करता हूँ।teeभी इस्तेमाल किया जा सकता है, लेकिन वह हमेशा file छोड़ देता है, इसलिए जब ज़रूरत न हो तो वह कम प्रभावी है