Перенаправить 'complete' в bash-функциях и псевдонимах

tl;dr: есть ли способ использовать существующую функцию автозаполнения, чтобы также автоматически завершать аргументы псевдонима или короткой функции.

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

Например, скажем, я часто называю исполняемый файл myexec с некоторыми аргументами всегда есть:

myexec --arg1=val1 --arg2 foo
myexec --arg1=val1 --arg2 bar
myexec --arg1=val1 --arg2 foobaz
...

Чтобы сделать мою жизнь проще, я могу создать псевдоним: alias myalias='myexec --arg1=val1 --arg2', но тогда я потеряю завершение заказа для аргументов, которые время от времени меняются (foo, bar, так далее.)

Проблема 1: Псевдоним

Есть ли способ, где я могу сделать автозаполнение на myalias вести себя так, как будто я написал myexec --arg1=val1 --arg2то есть эти две команды должны выдавать один и тот же вывод:

# Theese should provide identical completion
myalias foo[tab]
myexec --arg1=val1 --arg2 foo[tab]

Проблема 2: Функция

Есть ли способ сделать то же самое для функции, например:

function myfun {
  cd ../..
  myexec --arg1=val1 --arg2 $@
  cd some/dir
}
# Theese should provide identical completion
myfun foo[tab]
myexec --arg1=val1 --arg2 foo[tab]

Я взглянул на это великолепное введение и на страницу руководства, но у меня нет достаточного опыта, чтобы найти решение из этого.

Большое спасибо за вашу помощь :)

0 ответов

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