2

Я могу бежать,

 svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/!d' |xargs ls -altr --color=auto

просто хорошо. Но когда я добавляю это как псевдоним (alias svtr = "..."), я получаю сообщение об ошибке ...

-bash: !d': event not found

Есть идеи?

2 ответа2

2

!d в вашей команде sed вызывает это, потому что ! является символом расширения истории Bash. Временно отключите расширение истории, например так:

set -H
alias svtr="..."
set +H

Это должно сделать это.

2

Используя обратную косую черту \ чтобы избежать вашего ! должно сработать.

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'

На самом деле, это просто устраняет ошибку, потому что внутри "" оболочка пытается интерпретировать ! ,

Вы можете отменить кавычки (т. е. использовать одинарные кавычки для определения псевдонима, использовать двойные кавычки внутри команды с псевдонимами и экранировать одинарные кавычки, где это необходимо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .