Как вы можете отразить функцию автозаполнения в ваших собственных псевдонимах (в 14.04)

У меня есть несколько псевдонимов, которые я использовал на своей машине 12.04.

пример:

alias pssh="tsocks ssh"
alias pscp="tsocks scp"
alias prdp="tsocks xfreerdp  ..........SOMETHING ...."

Эти псевдонимы являются модификациями обычных команд linux (scp, ssh и т. Д.), Поэтому я бы хотел, чтобы эти псевдонимы имели те же правила автозаполнения, что и их исходные аналоги. Я не хочу писать свои собственные правила, так как правила для обычных команд в порядке.

В 12.04 следующее прекрасно работало:

complete -F _ssh pssh
complete -F _scp pscp
complete -F _ssh prdp

Это не работает в 14.04. Если я пытаюсь выполнить автозаполнение, я получаю следующую ошибку:

bash: completion: function `_ssh' not found

Если я выполняю автозаполнение по ssh перед тем, как попробовать pssh, все работает. Насколько я знаю, это потому, что правила автозаполнения не загружаются, прежде чем они используются. Пока правила автозаполнения для ssh не будут загружены, мои правила будут недействительными и приведут к ошибке.

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

5
задан 25 April 2014 в 11:08

1 ответ

Более новые выпуски завершения удара (> =2.0) улучшенный чрезвычайно время раньше загружали логику автозавершения. Они сделали их путем загрузки по запросу необходимых файлов, более новое местоположение для этих файлов:

/usr/share/bash-completion/completions /

, Если Вы используете ls-lah для исследования такого каталога, Вы найдете, чем, там существуют много гибких ссылок. Поэтому файл необходим для каждой команды/псевдонима, таким образом, если у Вас есть pssh, pscp и prdp, необходимо будет создать ссылки с теми именами:

sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/psss
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/pscp
sudo ln -s /usr/share/bash-completion/completions/ssh /usr/share/bash-completion/completions/prdp

Другая альтернатива является к syslink ssh файлом автозавершения к/etc/bash_completion.d /

sudo ln -s /usr/share/bash-completion/completions/ssh /etc/bash_completion.d/ssh

, Бывший метод загрузит функцию _ssh на каждом ударе интерактивная сессия (делающий медленнее запуск).

После использования любого из вышеупомянутых методов Ваш complete -F _ssh pssh ... конфигурация свяжет функцию _ssh с Вашими псевдонимами.

0
ответ дан 25 April 2014 в 11:08

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

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