GNU/Linux >> Linux の 問題 >  >> Linux

コマンドエイリアスのBash補完を取得する方法は?

コマンドラインエイリアスでタブ補完を取得しようとしています。たとえば、次のエイリアスを定義したとします:

alias apt-inst='sudo aptitude install'

タブキーを押したときにaptitudeによって提供される完了を取得する方法はありますか?つまり、「sudo aptitude install gnumer」と入力してタブを押すと、aptitudeはこれをgnumericに完了します。不確実性がある場合は、gnumerで始まるすべての利用可能なパッケージを一覧表示します。エイリアスを使用してそれを行う場合、何も–完了なし。

承認された回答:

Ubuntuフォーラムにはこれに関する素晴らしいスレッドがあります。 Ole Jは、次のエイリアス補完定義関数を提案しています。

function make-completion-wrapper () {
  local function_name="$2"
  local arg_count=$(($#-3))
  local comp_function_name="$1"
  shift 2
  local function="
    function $function_name {
      ((COMP_CWORD+=$arg_count))
      COMP_WORDS=( "[email protected]" ${COMP_WORDS[@]:1} )
      "$comp_function_name"
      return 0
    }"
  eval "$function"
  echo $function_name
  echo "$function"
}

これを使用してエイリアスの補完関数を定義し、その関数をエイリアスの補完機能として指定します。

make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst

常に使用される引数を既存のプログラムに追加するためにエイリアスを使用することを好みます。たとえば、grepを使用します 、常にデバイスとバイナリファイルをスキップしたいので、grepのエイリアスを作成します 。 grepbinなどの新しいコマンドを追加する場合 、~/binでシェルスクリプトを使用しています フォルダ。そのフォルダがパスにある場合、自動補完されます。


Linux
  1. Linux用の10個の便利なBashエイリアス

  2. bash で履歴の編集を無効にする方法

  3. 2 つの引数を持つエイリアスで $1 を適切に使用する方法

  1. cpコマンドの2つの優れた使用法:Bashショートカット

  2. LinuxでBashの履歴をクリアする方法

  3. 単一のコマンドに対してBashでエイリアスを無効にする方法は??

  1. エイリアス コマンドを bash スクリプトまたは .bashrc ファイルで機能させる方法

  2. Linux でシェル エイリアスを使用する方法

  3. C++11:関数をエイリアスする方法は?