작업 쉘 명령이 별명을 지정하지 않습니다


2

나는 뛸 수있어,

 svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/!d' |xargs ls -altr --color=auto

괜찮아 그러나 이것을 별칭 (별칭 svtr = "...")으로 추가하려고하면 오류가 발생합니다 ...

-bash: !d': event not found

어떤 아이디어?

답변:


2

백 슬래시 \를 사용 하여 탈출 !해야합니다.

alias svtr="svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/\!d' |xargs ls -altr --color=auto"
alias svtr
alias svtr='svn status |grep -v .jasper$ |cut -d '\'' '\'' -f8 |sed '\''/.*\..*/\!d'\'' |xargs ls -altr --color=auto'

실제로 ""쉘 내부 에서 해석하려고하기 때문에 오류를 제거합니다 !.

따옴표를 되돌릴 수 있습니다 (즉, 작은 따옴표를 사용하여 별칭을 정의하고 별칭이 지정된 명령 안에 큰 따옴표를 사용하고 필요한 경우 작은 따옴표를 이스케이프 할 수 있습니다.


감사! 두 번째 솔루션은! 앞의 이스케이프 문자를 제거한 후에 작동했습니다.
JJRhythm

2

!d당신의 sed때문에 명령이 원인이되는 !배쉬 역사 확장 문자입니다. 다음과 같이 히스토리 확장을 일시적으로 해제하십시오.

set -H
alias svtr="..."
set +H

그렇게해야합니다.


나는 이것을 시도하고 같은 오류를 받았다.
JJRhythm

미안하지만 그것은 나를 위해 작동합니다.
Fran
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.