
我可以跑,
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'
實際上,這只是消除了錯誤,因為""
shell 內部嘗試解釋!
.
您可能想要恢復引號(即,使用單引號來定義別名,並在別名命令中使用雙引號,並在必要時轉義單引號。
答案2
!d
您命令中的導致sed
了這種情況,因為!
是 Bash 歷史擴展字元。暫時關閉歷史擴展,如下圖所示:
set -H
alias svtr="..."
set +H
應該可以做到這一點。