
나는 뛸 수 있습니다,
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 기록 확장 문자이기 때문에 명령 !d
이 sed
원인입니다 . !
다음과 같이 기록 확장을 일시적으로 해제합니다.
set -H
alias svtr="..."
set +H
그렇게 해야 합니다.