Bash

bash中的文件類型依賴別名

  • February 2, 2017

我正在嘗試在 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.texgvim 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 函式所取代。

引用自:https://unix.stackexchange.com/questions/342047