"टैब पूर्ण" द्वारा प्रदर्शित आदेशों की सूची को कैसे पाइप करें?


12

बाश में कमांड का उपयोग करते समय मैं उपलब्ध कमांड को प्रदर्शित करने के लिए डबल टैब विकल्प पसंद करता हूं। कुछ आदेशों में दूसरों की तुलना में अधिक संभावित मैच हैं:

एक टैब पूरा होने का स्क्रीनशॉट http://img13.imageshack.us/img13/5541/picturemn.npg

क्या कोई तरीका है जिससे मैं डबल टैब के आउटपुट को किसी भी तरह से पाइप कर सकता हूं, जैसे grep? मुझे एक संबंधित पोस्ट मिली , लेकिन मुझे अभी भी यकीन नहीं है कि इसे grep पर पाइप करने के लिए कैसे लागू किया जाए।


आप वास्तव में कैसे कल्पना करते हैं कि आप grepरेगेक्स में प्रवेश करेंगे ? (y or n or g[rep])? मुझे निराशावादी ध्वनि से नफरत है, लेकिन मुझे संदेह है कि इसे बैश कोड में जोड़े बिना किया जा सकता है।
केविन

जवाबों:


21

आदेशों के उपयोग के लिए compgen -c:

$ compgen -c bas
basename
base64
bashbug
bash
basename
base64
bashbug

यह आउटपुट आप बस के माध्यम से पाइप कर सकते हैं grep


+1 कमांड के लिए ... अगला दिलचस्प हिस्सा हो सकता है कि इसके लिए कीबोर्ड शॉर्टकट कैसे बनाया जाए।
rozcietrzewiacz

3

मैं एक स्क्रिप्ट जो मैं नामक @ salutis के जवाब के आधार पर compऔर में संग्रहित ~/bin/compहै कि खोजों commands', aliasesहै, और builtins, (विकल्प झंडा -cabदेखना बैश आदमी प्रविष्टि है, जो अगर वर्तमान, पाइप के उत्पादन एक वैकल्पिक दूसरा पैरामीटर के साथ), grepके लिए और खोजों दूसरा पैरामीटर।

Usage: comp string [keyword-for-grep]

कोड:

#!/bin/bash

if [ -z "$1" ]; then
    echo usage: comp string [keyword-for-grep]
    echo 
    exit
fi

if [ -z "$2" ]; then
    compgen -cab -- $1
    exit
fi

compgen -cab -- $1 | grep -i $2

व्यक्तिगत रूप से मुझे स्क्रिप्ट में शेल इतिहास से अंतिम कमांड को हटाने का एक तरीका जानने में भी दिलचस्पी होगी (कुछ से संबंधित history -d) ताकि bashइतिहास की खोज करते समय मुझे compप्रविष्टियां न मिलें। मुझे पता है कि मैं इसके साथ भी कर सकता हूं, HISTIGNOREलेकिन लिनक्स बहुत शक्तिशाली है इसलिए स्क्रिप्ट फ़ाइल से इसे करने का एक तरीका होना चाहिए, बहुत सही?


1
बेशक आप अपनी आवश्यकताओं के अनुरूप इसे समायोजित कर सकते हैं, लेकिन यह आपको शुरू कर देना चाहिए।
चिह्नित करें

-3

आप जो ढूंढ रहे हैं वह क्यों नहीं मिला?

उदाहरण:

find / -name ec2* -executable -type f -perm -og+rx -print

आपके उपयोग के मामले को जानकर मैं एक अधिक विस्तृत कमांड उदाहरण बना सकता हूं।


2
दूसरे शब्दों में आप बैश के पूरा होने पर जो कुछ भी करते हैं, उसे फिर से लागू कर सकते हैं। यकीन है, लेकिन यह व्यावहारिक नहीं है, और यह सवाल क्या है के बारे में नहीं है।
गाइल्स 'एसओ- बुराई को रोकना'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.