Flyounet : (Digital|Real)? life

Une sorte de journal quotidien, mais en vachement plus espacé dans le temps

Comment ajouter un fichier au début d'un autre en Shell

Rédigé le . Édité le .

Ce message a originellement été posté sur un des mes anciens sites : Flyou.net [Dev] : Développements.
Les Tags d'origine (bash, ksh, Linux, Shell, Unix) n'ont pas été conservés.

Voilà le topo, vous faites du Shell (si si, y en a) et vous devez pour d'obscures raisons ajouter le contenu d'un fichier (appelons le aCopier.txt) au début d'un autre (appelons le destination.txt).
Par exemple :

fly@dtc:~$ cat aCopier.txt
# Ho la belle ligne que je me dois de copier au début d'un autre fichier
# Entete,id,securities,ftt(French_Tax_Tobin)
fly@dtc:~$ cat destination.txt
bnp,7553,37426,130054874
cmcic,425,1271,99412364
ca,1103,17345,94577741
sg,211,914,4113647

Souvent les gens prennent le fichier destination, le copient à la fin du fichier à copier et remplace le fichier destination, ce qui se traduit souvent par un :

fly@dtc:~$ cat destination.txt >> aCopier.txt && mv aCopier.txt destination.txt
fly@dtc:~$ cat destination.txt
# Ho la belle ligne que je me dois de copier au début d'un autre fichier
# Entete,id,securities,ftt(French_Tax_Tobin)
bnp,7553,37426,130054874
cmcic,425,1271,99412364
ca,1103,17345,94577741
sg,211,914,4113647

J'y vois personnellement deux inconvénients :

  • L'opération n'est pas atomique[1]
  • On perd le fichier aCopier.txt dans l'opération.

Donc pour moi, la solution est plutôt : echo "$(<aCopier.txt)" "$(<destination.txt)" > destination.txt
Non seulement, cela a l'avantage d'être du Shell only (Bash ou KSH), mais il me reste le fichier à copier...


Notes
[1] Par atomique, j'entends qu'il y a plusieurs étapes successives et donc que pour un retour arrière, c'est plus embettant. D'autant plus à cause du point suviant...