Bashのファイルタイプに関連するエイリアス

Bashのファイルタイプに関連するエイリアス

ファイルの種類に応じてbashrcにgvimエイリアスを作成しようとしています。

if [[ $file == *.tex ]]; then
  alias vi="/home/rudra/bin/vims.py"
else
  alias vi="gvim"
fi

と入力すると、~/bin/vims.py foo.texファイルが実行されるvi foo.texと予想されます。ただし、機能せず、すべての拡張子に対してのみ実行されます。gvim bar.txtvi bar.txtgvim foo.{tex/txt}

また、以下の内容も表示されます。

which vi
alias vi='gvim'
    /usr/bin/gvim

だから*.texなら、条件がまったく機能しないと思いました。理由をご存知ですか?

私は以下を使用しています:

bash --version 
GNU bash, version 4.3.43(1)-release (x86_64-redhat-linux-gnu)

\vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jan 26 2017 07:53:42)

返品:

vi --version
bash: syntax error near unexpected token `--version'

答え1

editエディタを使用してファイルを開くシェル関数です。デフォルトはthisですgvimが、ファイルにサフィックス.texが含まれている場合は別のエディタを選択します。

function edit
{
    typeset argc="$#"
    typeset file="${!argc}"

    typeset cmd="gvim"

    case "$file" in
        *.tex)  cmd="/home/rudra/bin/vims.py" ;;
    esac

    command "$cmd" "$@"
}

これにより、特定のファイル名サフィックス用の追加エディタを簡単に追加できます。

この機能は~/.bashrcファイルに配置できます。

マニュアルにはbash次の内容が含まれています。

ほとんどすべての目的で、エイリアスはシェル関数に置き換えられます。

関連情報