Un'opzione più semplice secondo me è :
echo -e "task goes here\n$(cat todo.txt)" > todo.txt
Questo funziona perché il comando all'interno di $(...)
viene eseguito prima che todo.txt
venga sovrascritto con > todo.txt
Mentre le altre risposte funzionano bene, trovo questo molto più facile da ricordare perché uso echo e cat tutti i giorni.
EDIT: Questa soluzione è una pessima idea se ci sono dei backshlash in todo.txt
, perché grazie alla bandiera -e
echo li interpreterà. Un altro modo molto più semplice per inserire le nuove linee nella stringa di prefazione è…
echo "task goes here
$(cat todo.txt)" > todo.txt
``` ```
(echo 'task goes here' && cat todo.txt) > todo.txt
echo 'task goes here'$'\n'"$(cat todo.txt)" > todo.txt
…semplicemente per usare le nuove linee. Certo, non è più una sola riga, ma realisticamente non lo era neanche prima. Se state facendo questo all'interno di uno script, e siete preoccupati di rientrare (ad esempio, lo state eseguendo all'interno di una funzione) ci sono alcune soluzioni per far sì che questo si adatti ancora bene, tra cui, ma non solo:
&001
Inoltre, se vi interessa se una nuova linea viene aggiunta alla fine di todo.txt
, non usate queste. Beh, tranne la penultima. Questo non incasina la fine.