Réponse finale
cat <<< "prepended text
$(cat test.txt)" > test.txt
Contexte
Je n'étais pas très satisfaite des réponses, car j'avais l'impression qu'il fallait trop taper. J'ai aimé la réponse de John Alberts, mais je ne pouvais pas supporter de taper. -e
. Malheureusement, j'ai accidentellement lu sur John Alberts son echo
2 liner également (ce qui réduit considérablement la valeur de cette réponse et de mes 30 minutes de jeu, mais bon, ça arrive).
Quoi qu'il en soit, je m'efforçais de trouver quelque chose qui vous permette de n'avoir qu'à taper le nom du fichier et le texte à ajouter au début.
De plus, je cherchais quelque chose qui soit esthétiquement intuitif. Je veux dire par là que le préambule doit être physiquement visible, même si ce n'est qu'une illusion, il doit avoir l'effet d'un moyen mnémotechnique.
J'ai donc tenté une approche avec les phrases d'encouragement, car dans le bon contexte, elles réduisent la charge cognitive (c'est-à-dire la saisie). <
3 fois ne demande pas trop de puissance de réflexion).
J'ai créé un fichier test.txt
avec le mot "monkeys"
.
Et j'ai tapé :
cat <<< "prepend
> $(< test.txt)"
出力します。
prepend
monkeys
Une petite clarification :
Vous devez appuyer manuellement sur enter
vous-même.
Sur la deuxième ligne, le >
provient du Shell lui-même, vous n'avez pas besoin de le taper.
Notes :
(1) Ce que je n'ai pas réussi à faire, c'est un "one liner". Il semble qu'il n'y ait pas de combinaison de phrases dans lesquelles je pourrais utiliser $()
y \n
. C'est pourquoi vous devez appuyer vous-même sur le saut de ligne manuellement.
(2) $(< test.txt)
a le même effet que $(cat test.txt)
. Le site Manuel de référence Bash États :
La substitution de commande $(cat file)
peut être remplacé par l'équivalent mais plus rapide $(< file)
.
Donc vous pouvez aussi le faire :
cat <<< "prepend
> $(cat test.txt)"
Plus de frappe, mais j'admets qu'il y a un peu moins d'effort cognitif puisque cat
est tapé deux fois et est plus connu que l'astuce du manuel de référence de Bash.
2 votes
Il n'y a pas de moyen efficace de le faire pour les gros fichiers : unix.stackexchange.com/questions/87772/
0 votes
Pourriez-vous jeter un coup d'œil à cette méthode superuser.com/a/1352628/11116