Como usar 'no alias?

Como usar 'no alias?

Tenho uma linha que desejo chamar usando um alias.

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

Tentei escapar ', \'mas não funcionou.

Qual é a sintaxe correta para usar acima de uma linha no alias?

Responder1

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

Você pode verificar o resultado com

alias my_du

If $()é citado por "em vez de 'ou \então é substituído e o resultado, em vez da chamada de programa pretendida, torna-se parte da definição do alias.

Responder2

Embora isso possa ser transformado em um alias, as funções geralmente são preferidas. De man bash:

Para quase todos os propósitos, os aliases são substituídos pelas funções shell.

Seu alias em formato de função:

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

Isso é mais legível e, como tal, mais sustentável.

Responder3

Você não pode escapar de aspas simples enquanto ainda estiver entre aspas simples, porque \é interpretado literalmente em um contexto de aspas simples. Feche as aspas simples antes de escapar ou, melhor, use aspas duplas.

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

Responder4

Se você deseja comandos que recebam argumentos ou interajam de alguma forma com seu ambiente, use funções. Pelo menos no bash, os aliases são expandidos quando definidos, elespoderagir como se pegassem argumentos ou usassem variáveis. Às vezes. A lei de Murphy garante que isso não funcionará quando for realmente necessário.

informação relacionada