Qual caractere escapar para que funcione em ~ / .bashrc
Quero adicionar este iostatcomando ao meu .bashrce criar um alias para ele:
iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')
Estou adicionando isso ao meu .bashrc:
alias ios='iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')'
Infelizmente, isso não funciona.
Se eu executar o iostatcomando acima em um terminal ele funciona, mas quando executo o iosalias ele não funciona mais.
E sim, eu reinicio meu shell todas as vezes.
Respostas
Em vez disso, use uma função; a citação é mais simples:
ios () {
iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')
}
alias ios='iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')'
você não pode usar aspas entre aspas. Alternar entre aspas e aspas duplas é o método mais fácil. Então isso funciona:
$ alias ios="iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')" $
Da edição:
Observe que embora funcione neste caso (porque
~não vai mudar para um dispositivo de bloco diferente nesse meio tempo), as aspas externas "suaves" fazem com que a substituição do comando seja avaliada no momento da definição, em vez de dinamicamente na invocação do alias
Se precisar de aspas simples, você pode colá-las usando '"'"':
$ alias ios='iostat -xk 2 $(findmnt -T ~ | awk '"'"'END {print $2}'"'"')' $
Aspas aninhadas são sempre um problema.
Você pode fazer assim:
echo 'Hello '\'~\'' world'