Перенаправить '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]
Я взглянул на это великолепное введение и на страницу руководства, но у меня нет достаточного опыта, чтобы найти решение из этого.
Большое спасибо за вашу помощь :)