工作 shell 指令沒有別名

工作 shell 指令沒有別名

我可以跑,

 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

應該可以做到這一點。

相關內容