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.txt
當我輸入vi bar.txt
. 但是,它不起作用,並且僅gvim 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'
這是一個 shell 函式,
edit
它將使用編輯器打開一個文件。它預設為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
手冊包含聲明對於幾乎所有用途,別名都被 shell 函式所取代。