
走れる、
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
!d
コマンド内の はBash履歴拡張文字であるsed
ため、この問題が発生します。次のようにして、履歴拡張を一時的にオフにします。!
set -H
alias svtr="..."
set +H
それで大丈夫でしょう。