मैं खुद <command> --help | grep <feature>
को रोज बहुत बार ऐसा कर पाता हूं । मैं सोच रहा था कि क्या यह संभव है कि ऐसा कुछ किया ^^
जाए "--help | grep"
और फिर मैं ऐसा करूं:
ls ^^ size
यह निम्नलिखित कार्य करेगा:
ls --help | grep size
मैं खुद <command> --help | grep <feature>
को रोज बहुत बार ऐसा कर पाता हूं । मैं सोच रहा था कि क्या यह संभव है कि ऐसा कुछ किया ^^
जाए "--help | grep"
और फिर मैं ऐसा करूं:
ls ^^ size
यह निम्नलिखित कार्य करेगा:
ls --help | grep size
जवाबों:
के साथ zsh
, आप एक वैश्विक उपनाम का उपयोग करेंगे :
$ alias -g '^^=--help|grep --color -i'
$ ls ^^ size
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
-h, --human-readable with -l and/or -s, print human readable sizes
-s, --size print the allocated size of each file, in blocks
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
The SIZE argument is an integer and optional unit (example: 10K is 10*1024)
इसके साथ bash
, आप इतिहास विस्तार का उपयोग करने में सक्षम हो सकते हैं, जो कि शेल सिंटैक्स में पर्याप्त रूप से होता है जो कि पाइप को प्रतिस्थापित करने पर काम कर सकता है:
उस पाठ के साथ इतिहास को प्रधान करें जिसे आप स्थानापन्न करना चाहते हैं और एक विशेष वर्ण जिसे आप अन्यथा उपयोग करने की संभावना नहीं रखते हैं (जैसे £
कि यह आपके कीबोर्ड पर होता है):
$ --help $(: £)|grep
bash: --help: command not found
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
फिर इतिहास विस्तार का उपयोग करके इसे पुनः प्राप्त करें:
$ ls !?£? size
ls --help $(: £)|grep size
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
-h, --human-readable with -l and/or -s, print human readable sizes
-s, --size print the allocated size of each file, in blocks
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
या आप कुछ प्रमुख या प्रमुख अनुक्रम प्रेस पर readline
विस्तार कर सकते थे --help|grep
। इसके लिए bash
केवल (और अन्य अनुप्रयोगों जैसे gdb
कि रीडलाइन का उपयोग करने के लिए) आवेदन करने के लिए , आप bind
बैश बिलिन कमांड का उपयोग कर सकते हैं जो आपके bash
विन्यास readline
के लिए एपीआई है , उदाहरण के लिए ~/.bashrc
:
bind '"^^": "--help|grep "'
या अपने ~/.inputrc
(रीडलाइन की कॉन्फ़िगरेशन फ़ाइल) में जोड़ें:
$if Bash
"^^": "--help|grep "
$endif
(इस तरह के अन्य गोले हैं rc
या es
जो रीडलाइन का उपयोग करते हैं और जहां ऐसा करने से बाध्यकारी अर्थ हो सकता है लेकिन AFAICT, वे इनवॉइस करने से rl_readline_name
पहले वैरिएबल सेट नहीं करते हैं, readline
इसलिए आप $if
उनके लिए कुछ स्टेटमेंट नहीं जोड़ पाएंगे (वे other
सभी एप्लिकेशन की तरह दिखाई देंगे कि इसका उपयोग अपने आवेदन नाम के बिना) पढ़ें)।
ध्यान दें कि ^
घटस्थापना के लिए पहले एक के बाद आपको आधे सेकंड (डिफ़ॉल्ट रूप से) के भीतर दूसरा दर्ज करने की आवश्यकता है।
आप इसके लिए एक बश फ़ंक्शन का उपयोग कर सकते हैं:
निम्नलिखित को अपने ~ / .bashrc में रखें:
qh() {
type -all "$1" ; { man "$1" || "$1" --help ;} | egrep -i -- "$2"
}
जब आप अपना bashrc
काम बचाते हैं source ~/.bashrc
तो आप कर सकते हैं:
$ qh ls size
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
-h, --human-readable with -l and/or -s, print human readable sizes
-s, --size print the allocated size of each file, in blocks
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
qh () { type -all "$1" ; { "$1" --help || man "$1" ;} | egrep -i -- "$2" ;}
इसमें बदलूंगा : # इसलिए आप कर सकते हैं: qh ls आकार, qh ls "कुछ और।" आदि। (विकल्प) type -all "$1"
$ 1 के बारे में जानकारी भी जोड़ें: यह कहता है कि क्या आप एक उपनाम, एक फ़ंक्शन लॉन्च करेंगे, एक ( कमांड आदि। और यह "$ 1" आदमी से जानकारी देता है यदि कमांड $ 1 के पास विकल्प नहीं था - "help "(यह कभी-कभी होता है)
-a
है, लेकिन के बारे में कुछ नहीं कहा -l
या -all
, लेकिन समारोह काम करता है।
आप रीडलाइन बाइंडिंग का उपयोग कर सकते हैं:
जैसी लाइन जोड़ते हैं
"^^": "--help | grep "
आपके ~ / .inputrc के लिए
फिर अपने कार्यकाल में ^ X ^ R दबाएं, और बाइंडिंग सक्रिय हो जाएगी।
ls ^^
अब कुंजीयन में परिणाम होगा ls --help | grep
।
less
सहायता संदेश देखने के लिए उपयोग करनाआपको अपनी खोज क्वेरी से मेल खाने वाली पंक्तियों के आसपास के संदर्भ को देखना उपयोगी हो सकता है।
hh () { "${1}" --help | less -p "${2}" ; }
इस bash
फ़ंक्शन को कॉल करने का सिंटैक्स qh
@ tgwtdt के उत्तर में फ़ंक्शन के समान है , पहला तर्क कमांड की जांच करने के लिए है, और दूसरा तर्क खोज शब्द है। उदाहरण के लिए:
hh ls size
hh ls "symbolic link"
यह पूर्ण सहायता संदेश को खोलता है less
, खोज शब्द के हर उदाहरण पर प्रकाश डालता है, और खोज शब्द के पहले उदाहरण पर स्क्रॉल करता है। फिर आप n
अगली पंक्ति को स्क्रॉल करने के लिए आगे खोज शब्द युक्त, n
फिर से अगले के लिए, और इसी तरह दबा सकते हैं । पिछले उदाहरण पर वापस स्क्रॉल करने के लिए, दबाएँ N
। का प्रयोग करें Home
, End
, Page Up
, Page Down
, Up Arrow
, और Down Arrow
सामान्य नेविगेशन के लिए कुंजी। प्रेस q
या Q
बाहर निकलने less
और कमांड लाइन पर लौटने के लिए।
मुझे @tgwtdt द्वारा समाधान पसंद आया, इसलिए मैंने इसे थोड़ा बढ़ाया।
यह वही काम करता है, लेकिन त्रुटियों को संभालने के लिए थोड़ा सा करता है और अंतर्निहित इन्स को संसाधित करने का प्रयास भी करता है।
{} के बजाय qh का उपयोग करता है () इसलिए qh1 () और बाहर स्थानीय हैं (एक उपधारा में)।
function qh () (
function qh1 () {
out="$(help "$1" 2>&1 )"
[ $? -ne 0 ] && return 1
echo "$out"
}
type -all "$1" ; { qh1 "$1" || "$1" --help 2>/dev/null || man "$1" 2>/dev/null ;} | egrep -i -- "$2"
)