각 디렉토리의 별칭을 설정하는 방법은 무엇입니까?

각 디렉토리의 별칭을 설정하는 방법은 무엇입니까?

별칭이 있지만 go다른 디렉터리에서 다른 작업을 수행하길 원한다고 가정해 보세요.

한 디렉터리에서는 실행되어야 cmd1하지만 다른 디렉터리에서는 실행되어야 합니다.cmd2

그런데 위 디렉터리로 전환하기 위한 별칭이 이미 있는데 별칭 go에 별칭 할당을 첨부 할 수 있습니까?foo

alias "foo=cd /path/to/foo"

OSX에서 bash(?)와 함께 작동합니다.

답변1

무엇을 요구하는지 완전히 확신할 수 없지만 별칭은 별칭에 있는 내용으로 확장됩니다. 별칭이 두 개 있는 경우 다른 명령, 심지어 별칭도 연결할 수 있습니다.

alias "foo=cd /path/to/foo; go"
alias "foo2=cd /path/to/foo2; go"

다른 경우에는 다음을 사용할 수 있습니다..bashrc

function go ()
{
    if [ "$PWD" == "/path/to/foo" ]; then
       cmd1
    elif [ "$PWD" == "/path/to/go" ]; then
       cmd2
    fi;
}

더 많은 옵션이 있다면 케이스 구조를 사용하는 것이 더 좋습니다.

답변2

다음 기능을 추가하면.bashrc

function cd () { 
  builtin cd "$@" && [[ -f .aliases ]] && . .aliases
  return 0
}

.aliases 파일이 포함된 디렉터리로 CD를 이동할 때마다 해당 파일을 받게 됩니다.

다른 사람이 귀하의 컴퓨터에 파일을 생성할 수 있다면 주의하시기 바랍니다.

이 트릭을 사용하면 별칭은 제거되지 않지만 함수 내에 코드를 얼마든지 작성할 수 있습니다.

온딜수많은 추가 기능과 함께 이 트릭을 사용하세요.

http://swapoff.org/ondir.html#download

답변3

나는 당신이 매우 "디렉토리 지향적"인 것 같은 느낌이 들며, 이 경우 당신의 사고 방식에 더 잘 맞을 것입니다.

(그러나 솔직히 말해서 이것은 완전히 나쁜 생각이라고 생각합니다. 명령이 전역적이기를 원합니다.)

.bashrc넣다 alias go="./.cmd"(다음에 source ~/.bashrc).

그런 다음 각 디렉토리에 라는 스크립트를 배치하고 .cmd원하는 작업을 수행하십시오.chmod +x .cmdgo

답변4

저는 이 작업을 수행하는 방법을 찾는 데 오랜 시간을 보냈고 오늘은 다른 답변 중 일부를 조합했지만 소스에 추가되는 비밀 성분이 있는 솔루션을 생각해냈습니다 direnv.

.aliases@teknopaul이 제안한 것처럼 매번 읽을 때의 문제는 정의를 축적하지만 언로드되지 않는다는 것입니다.direnv로드하여 문제를 해결했습니다.그리고 언로드각 디렉터리의 환경 변수입니다. 그러나 이것은 단지환경 변수, 하지만 함수와 함께 사용할 수 있습니다!

내 별칭은 다음과 같습니다 npm(물론 별칭은 아니지만 함수입니다).

function npm(){ if [[ -z "$NPMBIN" ]]; then $(which npm) $@; else $NPMBIN $@; fi; }

alias서브셸에서 논리를 실행하여 위의 내용을 true로 다시 작성할 수도 있지만 따옴표를 이스케이프 처리하는 데 주의해야 합니다!

alias npm='bash -c "if [[ -z \"$NPMBIN\" ]]; then $(which npm) $@; else \"$NPMBIN\" $@; fi;"'

관련 정보