Je veux insérer du texte en haut d'un fichier déjà existant. Comment puis-je atteindre cet objectif. J'ai essayé echo
et tee
mais n'a pas réussi.
J'essayais d'insérer une ligne de sources.list
dépôt en haut du fichier du terminal.
Remarque
J'ai besoin d'une solution rapide sur une seule ligne, car une autre méthode de réponse était déjà connue de moi
apt
command-line
bash
Anwar
la source
la source
echo "deb http://extras.ubuntu.com/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
- vous devez également sudo avant tee pour obtenir les privilèges d'administrateur. Mais pourquoi diable voudriez-vous ajouter quelque chose tout en haut de sources.list?Réponses:
C'est en fait assez simple avec
sed
:sed -i -e '1iHere is my new top line\' filename
1i
indique à sed d'insérer le texte qui suit à la ligne 1 du fichier; n'oubliez pas la\
nouvelle ligne à la fin pour que la ligne 1 existante soit déplacée vers la ligne 2.la source
s
au lieu de i dans1i
.echo "Text Here" >> Filename
Dans l' édition générale en place avec un script est difficile, mais vous pouvez utiliser
echo
etcat
puismv
Cependant, si vous jouez avec sources.list, vous devez ajouter une validation et une protection contre les balles pour détecter les erreurs, etc., car vous ne voulez vraiment pas perdre cela. Mais c'est une question distincte :-)
la source
sait que
prepend
c'est mon shell personnalisé :Utilisez également un chemin relatif ou un chemin absolu, cela devrait fonctionner correctement:
Mise à jour :
si vous voulez un script permanent pour cela, ouvrez
nano /etc/bash.bashrc
puis ajoutez cette fonction à la fin du fichier:Rouvrez votre terminal et profitez:
la source
Et pourquoi ne pas utiliser un véritable éditeur de texte pour cela? ed est l'éditeur de texte standard.
Ou, si vous souhaitez que les commandes soient plus lisibles:
1
: aller en première lignei
: mode d'insertion.
: arrêter l'insertion, revenir en mode normalwq
: écrire et quitter, merci, au revoir.la source
FIRST LINE
) avec ça?first_line
alors:ed -s filename < <(printf '%s\n' 1i "$first_line" . wq)
. Assurez-vous que la variable ne se développe pas en un seul point et ne contient aucun caractère de nouvelle ligne (alors désinfectez-la si elle provient d'une entrée utilisateur).Il y a toujours l'
awk
option. Remplacez lastring
variable par votre contenu. Ce n'est cependant pas un changement sur place. Personnellement, j'ai tendance à ne pas apporter de changements sur place. C'est définitivement une préférence personnelle. Deux choses,-v
signifie une variable dans awk et variablen
est utilisée ici pour faire correspondre un numéro de ligne, efficacementNR == 1
. Vous pouvez utiliser cela de différentes manières en changeant simplement la valeur den
ets
.Exemple:
la source
Vous pouvez utiliser Vim en mode Ex:
1
sélectionnez la 1ère lignei
insérer une nouvelle ligne de textex
sauver et fermerla source