명령줄 "환경"을 프로그램 명령으로 변경

명령줄 "환경"을 프로그램 명령으로 변경

콘솔에서 "environment" 명령으로 변경이 가능한가요? 설명을 위해 "git"을 예로 들어보겠습니다. git 저장소를 프로그래밍하고 작업하는 동안 저장소 경로로 변경한 다음 "git x...", "git y..." 등과 같은 많은 "git" 명령을 실행합니다. 그래서 내가 원하는 것은 "git"을 "git"으로 변경하여 항상 "git"을 입력할 필요 없이 "x..."와 "y..."만 입력하는 것입니다. 기능을 원하지 않나요?

답변1

"git shell"을 요청하셨습니다. 이름도 있는 것 같은데git-sh.

내가 아는 한 보편적인 해결책은 없지만 git은 단지 자체 명령을 실행하기 위한 사용자 정의 셸을 가진 유일한 프로그램은 아닙니다. 유사한 예로는 mysql, 등이 있습니다 telnet. ftp실제로 자체 쉘 환경이 내장된 프로그램이 꽤 많이 있으며 명령을 인수로 제공하거나 쉘로 시작하여 내부적으로 명령을 실행할 수 있습니다.

이러한 맥락에서 탭 완성도 유용합니다. 좋은 탭 완성 라이브러리에는 git과 같은 프로그램에 대해 가능한 모든 명령과 인수가 있습니다.

참고: 여기서는 "git shell"이 올바른 용어이지만 시스템 로그인 셸을 대체하고 git 작업에 대해 제한된 권한만 제공하도록 설계된 "git-shell" 프로젝트와 혼동하지 마십시오.

답변2

셸에서 git 명령을 별칭으로 정의할 수 있습니다. git 명령이 쉘 명령이기도 한 경우 선택해야 합니다. 예를 들어 git diff, git mv, ... 이 기능은 all_git_aliases_on모든 git 명령을 접두사 없이 사용할 수 있도록 하며 , 이 기능은 git쉘 명령이 없을 때unambiguous_git_aliases_on 접두어 없이 git 명령만 사용할 수 있도록 합니다 git. 이 이름 .

이 함수는 git_aliases_off이러한 별칭을 제거합니다. git 명령과 이름이 같은 별칭이 있는 경우(예: alias mv='mv -i') 복원되지 않으며 다시 설정해야 합니다(해당 정의를 함수에 추가 git_aliases_off).

또는 unambiguous_git_aliases_on에서 전화를 걸 거나 짧은 별칭(예: )을 제공 할 수 있습니다 .~/.bashrc~/.zshrctoggle_git_aliasesg

git_commands=$(git help -a | grep '^  *[a-z]')
git_aliases=
all_git_aliases_on () {
  for x in $git_commands; do
    alias $x="git $x"
    git_aliases="$git_aliases $x"
  done
}
unambiguous_git_aliases_on () {
  for x in $git_commands; do
    if ! type $x >/dev/null 2>/dev/null; then alias $x="git $x"; fi
    git_aliases="$git_aliases $x"
  done
}
git_aliases_off () {
  unalias $git_aliases
  git_aliases=
}
toggle_git_aliases () {
  if [ -n "$git_aliases" ]; then
    all_git_aliases_on
  else
    git_aliases_off
  fi
}

답변3

파일에 별칭을 만들어 이 작업을 수행 할 수 있지만 ~/.bashrc어떤 별칭을 선택하면 다른 명령줄 프로그램/스크립트를 덮어쓸 수 있으므로 주의해야 합니다. 다음은 사용 예입니다 ls.

  alias l = 'ls -Alh'

따라서 l명령줄에 입력하면 bash가 실행됩니다 ls -Alh. 그래서 당신은 이것을 할 수 있습니다 :

  alias gx = 'git x'
  alias gy = 'git y'

당신이 ~/.bashrc달릴 때 gx당신은 달립니다 git x.

나는 평균적인 프로그램에서 작동하는 일반적인 솔루션을 모릅니다.

답변4

내가 하나 만들어 볼게요 shell emulator. 이는 기본적으로 가짜 프롬프트를 제공하고 특정 입력 값을 받아들이는 작은 스크립트입니다. 예를 들어 다음과 같을 수 있습니다.

user@host ~$ gitshell
 Welcome to git-shell. Type help for command info
>> help
 help  - display this message
 x     - do x
 y     - do y
 exit  - close the shell
>> exit
user@host ~$

코딩하는 것은 어렵지 않습니다(파이썬이나 펄 등을 사용하여). $PATH에 넣으면 끝입니다. git, hg, svn 등 원하는 대로 사용할 수 있습니다. 그냥 아이디어입니다. 이것이 제가 할 일입니다.

관련 정보