El comando de shell en funcionamiento no tiene alias

El comando de shell en funcionamiento no tiene alias

Puedo correr,

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

muy bien. Pero cuando voy a agregar esto como alias (alias svtr="...") aparece un error que dice...

-bash: !d': event not found

¿Algunas ideas?

Respuesta1

Usar barra invertida \para escapar de tu !debería 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'

En realidad, eso simplemente elimina el error, porque dentro ""del shell intenta interpretar !.

es posible que desees revertir las comillas (es decir, usar comillas simples para definir el alias, usar comillas dobles dentro del comando con alias y escapar de comillas simples cuando sea necesario.

Respuesta2

El comando !den tu sedcomando está causando esto, porque !es el personaje de expansión del historial de Bash. Desactive temporalmente la expansión del historial, así:

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

Deberias hacer eso.

información relacionada