web-dev-qa-db-ja.com

.bash_aliasesコマンドのオートコンプリート?

.bash_aliasesにはエイリアスコマンドがたくさんあります

最も一般的な例は次のとおりです。

alias apt-update="Sudo apt-get update"  
alias apt-upgrade="Sudo apt-get dist-upgrade"

しかし、私も持っています

alias apt-install="Sudo apt-get install "
alias a2avail="/etc/Apache2/sites-available"

最初の2つは問題ありませんが、2つ目はより強力にしたいです。

特にapt-installの場合、オートコンプリートを機能させたいです。

a2availの場合、Sudo cp a2avail/default a2avail/newのようなものを入力し、Sudo cp /etc/Apache2/sites-available/default /etc/Apache2/sites-available/newとして実行できるようにしたい

これら二つのことのどちらかが可能ですか?

6
Hailwood

次を~/.bashrcに追加すると、apt-installエイリアスのパッケージ名が完成するはずです

_apt_install_complete() { 
    mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "$2");
}
complete -F _apt_install_complete apt-install

A2availに関しては、エイリアスはコマンドの最初のWordとしてのみ機能しますが、変数を使用できます。

a2avail=/etc/Apache2/sites-available   # in ~/.bashrc

# then...
Sudo cp "$a2avail"/{default,new}
5
geirha

2017年7月4日の時点:

  1. complete-alias をインストールします。

  2. 次の行を追加します:complete -F _complete_alias apt-install

できました。

0
Cyker