Uma opção mais simples na minha opinião é :
echo -e "task goes here\n$(cat todo.txt)" > todo.txt
Isto funciona porque o comando dentro de $(...)
é executado antes de todo.txt
ser substituído por > todo.txt
Enquanto as outras respostas funcionam bem, eu acho isto muito mais fácil de lembrar porque eu uso echo e cat todos os dias.
EDIT: Esta solução é uma péssima ideia se houver alguma barra invertida em todo.txt
, porque graças ao -e
flag echo irá interpretá-las. Outra forma, muito mais fácil de introduzir novas linhas no prefácio é…
echo "task goes here
$(cat todo.txt)" > todo.txt
…simplesmente para usar novas linhas. Claro, já não é uma linha única, mas também já não era, realisticamente, uma linha única. Se está a fazer isto dentro de um script, e está preocupado com a indentação (por exemplo, está a executar isto dentro de uma função), existem algumas soluções para fazer com que isto ainda se ajuste bem, incluindo mas não se limitando a:
(echo 'task goes here' && cat todo.txt) > todo.txt
echo 'task goes here'$'\n'"$(cat todo.txt)" > todo.txt
Também, se se preocupa se uma nova linha é adicionada ao final do todo.txt
, não a utilize. Bem, excepto a penúltima. Isso não mexe com o final.