Gostaria de editar um arquivo no local anexando uma linha, apenas se ainda não existir, para tornar meu script à prova de balas.
Normalmente eu faria algo como:
cat >> ~/.bashrc <<EOF
export PATH=~/.composer/vendor/bin:\$PATH
EOF
Também é possível fazer isso via ansible ( line
+ insertafter=EOF
+ regexp
), mas é outra história.
No vi / ex, eu poderia fazer algo como:
ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc
mas como verificar se a linha já está lá (e, portanto, não faço nada) idealmente sem repetir a mesma linha?
Ou talvez haja alguma maneira mais fácil de fazer isso no editor Ex?
ex ~/.bashrc -c "if search('export PATH=\~\/.composer\/vendor\/bin:\$PATH')>0 | norm quit | endif | norm Aexport PATH=~/.composer/vendor/bin:$PATH"
export
é um comando , portanto, o restante da linha é uma palavra shell, NÃO uma atribuição. Portanto, diferentemente de uma atribuição de variável (que não usa export
), você precisa de aspas duplas ou ela será quebrada no espaço em branco . Consulte também Como adicionar corretamente um caminho ao PATH .
grep -Fq 'export PATH=~/.composer/vendor/bin:$PATH' ~/.bashrc || ex ...
(oucat
, nesse caso)?