J'essaie d'ajouter le contenu d'un fichier sur un autre fichier existant. C'est trivial avec un shell. J'essaie de le faire en une seule commande sans shell. Est-ce possible?

Je veux essentiellement exécuter:

cat file2 >> file1

Malheureusement, l'environnement dans lequel je m'exécute n'est pas un shell et ne prend donc pas en charge l'opérateur >>.

Existe-t-il un outil Linux relativement standard qui ferait cela, en plus d'utiliser simplement un shell comme :

sh -c "cat file2 >> file1"

EDIT : je recherche une ligne que je peux mettre dans une directive de service systemd ExecStart=. Oui, la variante que j'ai postée ci-dessus fonctionne, je pense juste que c'est bidon.

Je suis surpris qu'il n'y ait pas d'outil pour faire cela exactement.

Je pourrais également créer un fichier my-script.sh que j'appelle depuis systemd et qui fait ce que je veux. Mais c'est un fichier supplémentaire et cela semble encore plus "hacky" que la première solution possible.

S'il n'y a pas d'outil standard qui fait cela, alors je suppose que la "réponse" à ma question serait "non".

-2
Cameron Tacklind 25 oct. 2019 à 23:09

1 réponse

Meilleure réponse

Cela ressemble à un XYPproblem, mais vous pouvez utiliser dd :

dd if=file2 of=file1 conv=notrunc oflag=append

Si vous n'utilisez pas GNU dd qui prend en charge oflag=append, vous pouvez spécifier un décalage d'octet manuellement :

dd if=file2 of=file1 bs=1 seek=insert_size_of_file1_in_bytes_here
2
that other guy 25 oct. 2019 à 20:41