vim이 설치되어 있는지 확인하는 방법은 무엇입니까?

vim이 설치되어 있는지 확인하는 방법은 무엇입니까?

명령어가 설치되었는지 확인하는 방법을 알고 싶습니다.

vi특히 명령이 유효한 모든 시스템 에서 별칭을 사용 하고 싶습니다 vim. vim내 *rc 파일을 일반으로 유지하고 싶습니다. 그러나 일부 운영 체제에서는 기본적으로 이를 설치하지 않습니다 vim. 그리고 다른 측면에서는,vi Vi가 개선되었으나 vim유효한 명령이 아닙니다.

나는 이것을 할 수 있다고 생각합니다 (bash 스타일):

#If the version info from vi includes the phrase "Vi IMproved", then vi IS vim.
vimInfo=$(vi --version 2> /dev/null | head -n 1 | grep -Fi 'VI IMPROVED')
if [[ -z $vimInfo ]]; then
  if [[ -f $(which vim) ]]; then
    #if the value returned by 'which' is a valid directory, then vim is installed
    alias vi='vim'
  else
    #vim is not installed
    echo "Vi IMproved (vim) is not installed";
  fi
fi

하지만 더 좋은 방법이 있나요? 이 which명령은 모든 UNIX 계열 시스템에 나타나는 것이 보장됩니까?

PS 저는 거의 모든 인기 쉘(bash, tcsh, zsh, ksh)에 대한 *rc 파일을 가지고 있으며 이 솔루션을 모든 쉘에 적용할 계획입니다. 따라서 솔루션은 셸에만 국한되어서는 안 됩니다. 문법할 수 있는하지만 그렇습니다.

답변1

예를 들어 다음 을 사용할 수 있습니다 command.

command -v vim

쉘 내장 명령입니다. (zsh, bash, ksh,하지만tcsh)

존재하다tcsh다음을 사용할 수 있습니다.

~> sh -c 'command -v vim'

답변2

나는 당신이 문제를 너무 복잡하게 생각하고 있다고 생각합니다.

if type vim >/dev/null 2>/dev/null; then
  alias vi=vim
fi

vim실행해야 하는 유일한 이유 vi는 이러한 명령이 유효한 시스템이 있지만 설치가 손상되었거나 동일한 이름을 가진 다른 프로그램이 있는 경우입니다.

type내장 기능은 모든 POSIX 쉘과 대부분의 Bourne 쉘에 있습니다. csh에서 (그리고csh에서만), 사용 which:

if ({ which vim }) alias vi vim >&/dev/null

물고기의 경우:

if type vim >/dev/null 2>/dev/null; alias vi=vim; end

관련 정보