작동 중인 쉘 명령이 별칭을 지정하지 않습니다.

작동 중인 쉘 명령이 별칭을 지정하지 않습니다.

나는 뛸 수 있습니다,

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

괜찮아요. 하지만 이것을 별칭(alias svtr="...")으로 추가하려고 하면 다음과 같은 오류가 발생합니다.

-bash: !d': event not found

어떤 아이디어가 있나요?

답변1

백슬래시를 사용하여 \이스케이프 !해야 합니다.

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'

""실제로, 쉘 내부에서 해석을 시도하기 때문에 오류가 제거됩니다 !.

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

답변2

Bash 기록 확장 문자이기 때문에 명령 !dsed원인입니다 . !다음과 같이 기록 확장을 일시적으로 해제합니다.

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

그렇게 해야 합니다.

관련 정보