Você não precisa escrever a linha cat
"da maneira errada", isso funciona muito bem (embora, é claro, as setas na sequência aqui ainda apontem para uma direção ímpar):
$ cat <<< "some text" >> testfile
$ cat testfile
some text
Como mencionado nos comentários, a string here adiciona uma nova linha no final, enquanto que com printf
e echo
você usou \n
na frente da string.
echo
normalmente adicionaria a nova linha final, assim como a string here, então se você precisa apenas disso, echo
deve estar bem (mais é um embutido na maioria das camadas.)
Todos os seus comandos funcionam de forma ligeiramente diferente com as novas linhas
cat >> file <<< "string" # newline at end
printf "\nstring" >> file # newline at beginning
echo -e "\nstring" >> file # newline at beginning and at the end
Francamente, acho que é melhor se acostumar com a notação \n
, mas se você não gostar, sempre haverá aqui-docs (tanto as linhas iniciais quanto as seguintes:
cat >> file <<EOF
some text
EOF