bashrc 게으른 교체

bashrc 게으른 교체

~/.bashrc별칭을 얻는 방법$()런타임 시 대체 평가, ~/.bashrc를 실행할 때(터미널을 열 때)가 아닌?

나는 이 명령을 자주 실행하므로 별칭을 추가하고 싶습니다.

svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff

~/.bashrc그러나 이를 별칭으로 추가했을 때 터미널을 열었을 때의 값으로 평가가 하드코딩된 것을 발견했습니다.

$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'

터미널을 열면 ~오류가 발생합니다.

svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
$ alias
alias svnbranch='svn diff -r :HEAD  | colordiff'
$

나는 이 두 별칭의 변형을 시도했고 ~/.bashrc둘 다 동일한 효과를 가졌습니다(예상했던 대로).

alias svnbranch="svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff"
alias svnbranch="svn diff -r `svn info | grep ^Revision | awk {'print $2'}`:HEAD `svn info | grep ^URL | awk {'print $2'}` | colordiff"

런타임에 ~/.bashrc대체를 평가하기 위해 별칭을 얻는 방법$()?

게다가 사람이 어떻게구글에 이 상황이?"bashrc 교체", "bashrc 게으른 교체" 및 기타 핵심 문구를 인터넷 검색해 보았지만 정보를 찾을 수 있을 만큼 일반적인 질문이라고 생각되는 항목을 찾지 못했습니다.

답변1

사용아포스트로피특수 문자 처리를 억제합니다. 당신은 또한 수백슬래시 이것 $에스.

복잡한 명령의 경우 어떤 경우에도 이스케이프가 필요하지 않고 읽고 편집하기 쉬운 함수를 사용하는 것이 더 나을 것입니다.

svnbranch() {
    svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
}

별칭을 정의할 수 있는 모든 위치에서 함수를 정의할 수 있습니다.

관련 정보