O comando shell de trabalho não tem alias

O comando shell de trabalho não tem alias

Eu posso correr,

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

bem. Mas quando vou adicionar isso como um alias (alias svtr="...") recebo um erro dizendo...

-bash: !d': event not found

Alguma ideia?

Responder1

Usar barra invertida \para escapar do seu !deve funcionar.

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'

Na verdade, isso apenas elimina o erro, porque dentro ""do shell tenta interpretar !.

você pode querer reverter aspas (ou seja, usar aspas simples para definir o alias e usar aspas duplas dentro do comando com alias e escapar das aspas simples quando necessário.

Responder2

O !dseu sedcomando está causando isso, porque !é o caractere de expansão do histórico do Bash. Desative temporariamente a expansão do histórico, assim:

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

Isso deve resolver.

informação relacionada