
Я могу бегать,
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
вашей sed
команде это вызывает, потому что !
это символ расширения истории Bash. Временно отключите расширение истории, например так:
set -H
alias svtr="..."
set +H
Этого должно хватить.