Как я могу создать что-то подобное псевдониму, который действительно правильно расширяется до начальной команды?

Я настроил псевдонимы для apt-get update, apt-get install, и так далее. Это довольно удобно. Но то, что я действительно хотел бы иметь, является чем-то вроде этого:

ввести agi TAB vi и имейте его, автоматически перечисляют все пакеты, запускающиеся с vi, как это произошло бы при издании apt-get install TAB vi.

Что-то вроде этого было бы достижимо так или иначе, возможно, путем записи небольшого сценария?

4
задан 21 July 2011 в 01:36

2 ответа

Bash программируемое завершение - что-то, которое я не обеспокоился очень мной, но я полагаю, что это сделает то, что Вы хотите (NB принимает версию 4.0 удара или более новый. При выполнении Ubuntu 10.04 или более новый Вы хороши.):

alias agi='apt-get install'
_agi_completion() { 
    mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "${COMP_WORDS[COMP_CWORD]}")
}
complete -F _agi_completion agi

Программируемое Завершение в руководстве удара объясняет, как оно работает, хотя это довольно сложно.

4
ответ дан 1 December 2019 в 09:28

Необходимо добавить псевдонимы к словарям завершения оболочки, таким образом, это знает то, что это завершает для тех команд. Завершения оболочки нужно уже назвать функциями, но необходимо сказать этому, что они относятся новым названиям команды.

2
ответ дан 1 December 2019 в 09:28

Другие вопросы по тегам:

Похожие вопросы: