Як передавати список команд, що відображаються в розділі "Повна вкладка"?


12

Під час використання команд у bash мені подобається параметр подвійної вкладки для відображення доступних команд. Деякі команди мають більше можливих збігів, ніж інші:

Знімок екрана завершення вкладки http://img13.imageshack.us/img13/5541/picturemhy.jpg

Чи є спосіб я передати висновок подвійної вкладки де-небудь, як 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див. Запис bash man ), з додатковим другим параметром, який, якщо він присутній, передає висновок 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але Linux є досить потужним, тому повинен бути спосіб це зробити і з файлу сценарію - правда?


1
Звичайно, ви можете налаштувати це відповідно до своїх потреб, але це повинно розпочати вас.
позначка

-3

Чому б не знайти те, що шукаєш?

Приклад:

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

Знаючи ваш випадок використання, я можу створити більш детальний приклад команд.


2
Іншими словами, ви можете повторно реалізувати те, що робить баш. Звичайно, але це не практично, і справа не в тому.
Жил 'SO- перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.