O comando shell de funcionamento não possui alias

2

eu posso correr,

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

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

-bash: !d': event not found

Alguma idéia?

    
por JJRhythm 05.07.2012 / 20:18

2 respostas

2

Usar a barra invertida \ para escapar de 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 de "" o shell tenta interpretar ! .

você pode querer reverter aspas (por exemplo, usar singlequote para definir o alias e usar doublequote dentro do comando aliased, e escapar de uma única citação quando necessário.

    
por 05.07.2012 / 20:25
2

O !d no seu comando sed está causando isso, porque ! é o caractere de expansão de histórico do Bash. Desativar temporariamente a expansão do histórico, assim:

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

Isso deve ser feito.

    
por 05.07.2012 / 20:25