¿Cómo usar 'en alias?

¿Cómo usar 'en alias?

Tengo una línea a la que quiero llamar usando un alias.

while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"; do sleep 30; done

Intenté escapar 'pero \'no funcionó.

¿Cuál es la sintaxis correcta para usar arriba de una sola línea en alias?

Respuesta1

alias my_du=$'while printf \'%s \' "$(df -P / | awk \'NR==2 { print $(NF-1) }\')"; do sleep 3; done'

Puedes comprobar el resultado con

alias my_du

Si $()se cita por "en lugar de 'o \luego se sustituye y el resultado, en lugar de la llamada al programa prevista, pasa a formar parte de la definición del alias.

Respuesta2

Si bien esto se puede convertir en un alias, generalmente se prefieren las funciones. De man bash:

Para casi todos los propósitos, los alias son reemplazados por funciones de shell.

Su alias en forma de función:

my_du() {
    while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"
    do
        sleep 30
    done
}

Eso es más legible y, como tal, más fácil de mantener.

Respuesta3

No puede escapar de las comillas simples mientras todavía están entre comillas simples porque \se toma literalmente en un contexto de comillas simples. Cierra las comillas simples antes de escapar o, mejor, usa comillas dobles.

alias my_du="while printf '%s ' \"\$(df -P / | awk 'NR==2 { print \$(NF-1) }')\"; do sleep 30; done"

Respuesta4

Si desea comandos que tomen argumentos o interactúen de alguna manera con su entorno, use funciones. Al menos en bash, los alias se expanden cuando se definen,podríaactuar como si tomaran argumentos o usaran variables. A veces. La ley de Murphy garantiza que eso no funcionará cuando sea realmente necesario.

información relacionada