Tengo este comando que hace lo que quiero, pero no puedo ponerle un alias en mi .bashrc (tenga en cuenta que usa comillas simples y dobles):
svn status | awk '$1 =="M"{print $2;}'
He intentado:
alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"
Y algunas otras combinaciones de sentido común sin suerte ... Sé que bash es muy exigente con las comillas ... Entonces, ¿cuál es la forma correcta de ponerle un alias y por qué? Gracias
linux
bash
quotes
double-quotes
programador_pragmático
fuente
fuente
Aquí hay algo que logra lo mismo sin usar un alias. Ponlo en una función en tu .bashrc:
xx() { svn status | awk '$1 =="M"{print $2;}' }
De esta manera, no tiene que preocuparse por obtener las cotizaciones correctas. Esto usa exactamente la misma sintaxis que usaría en la línea de comando.
fuente
function
palabra clave es una incompatibilidad innecesaria con POSIX. Déjelo apagado:xx() { ...
#bash
, la respuesta es "use una función en su lugar". ; los alias no pueden hacer nada más que la expansión de prefijos, lo que no es útil si, por ejemplo, desea ramificar los argumentos.Desde Bash 2.04, hay una tercera forma (más fácil) además de usar una función o escapar de la forma en que lo hizo @ffledgling: usando sintaxis literal de cadena ( aquí hay una excelente respuesta ).
Entonces, por ejemplo, si desea crear un alias de este en línea , terminará siendo:
alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'
Así que solo tienes que agregar
$
delante de la cadena y escapar de las comillas simples.Esto trae una advertencia de shellcheck con la que probablemente podría deshabilitar con
# shellcheck disable=SC2139
seguridad .fuente