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다음 내용이 포함되어 있습니다.

거의 모든 목적에서 별칭은 쉘 함수로 대체됩니다.

관련 정보