Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 30-11-2018 15:52:00

joeCool
Membre
Inscription : 08-12-2016

Utilisation de vi avec des commandes externes et en script

Salut à tous,

Je me souviens avoir fait cela il y a bien longtemps et c'était d'une puissance fabuleuse. J'utilisais vi pour modifier des fichiers de configuration en effectuant des recherche et des modifications de chaînes dans ces fichiers en "programmant" vi avec des chaînes de caractères permettant d'effectuer ces modifs et tout cela dans des scripts of course.

Pour être encore plus clair, j'envoyais (sur une seule ligne de commande et dans un script) à vi le nom du fichier à modifier puis les instructions que j'aurais effectuer à la main sous vi pour faire ces modifs. par exemple, si je devais changer la chaîne "reporig" en "/home/jeanmichel/monprog", concrètement, je lance vi prog.conf puis sous vi:
/reporig[Enter]cw/home/jeanmichel/monprog[ESC]:x[Enter]

L'une des difficultés était d'inclure [Enter] et surtout [ESC] dans cette chaîne à passer à vi. peut-être ai-je le souvenir que pour ESC, il fallait utiliser les caractères "^["... Mais pas sûr.
Peut-être est-ce grâce à l'entrée standard.

J'ai trouvé que si je fais cela echo "rV:x" | vi toto.txt, cela modifie le première carcatère du fichier et sort en sauvegardant mais impossible de retrouver (pour l'instant) comment envoyer [Enter] et [ESC] dans cet exemple-là...

Du coup, j'ai essayé echo "atoto^[:x" | vi toto.txt mais j'obtiens une erreur "Vim: Error reading input, exiting...".

Désolé d'avoir été très (trop) précis mais cela me manque de ne plus me souvenir de cela.

J'ai vu qu'il existait la possibilité de passer des commande avec ex (ex -sc ...) )mais pour l'instant, avant de basculer comme ça, je voudrais retrouver mes folies d'antan ^^ !!

Merci de vos lumières.
Joël.

Dernière modification par joeCool (30-11-2018 15:58:24)

Hors ligne

#2 30-11-2018 16:33:42

joeCool
Membre
Inscription : 08-12-2016

Re : Utilisation de vi avec des commandes externes et en script

Les amis, j'ai trouvé !!! Bon, je n'utilise plus "^[" et c'est sans doute un peu différent mais voilà un truc qui marche:

echo -e '/toto\n\ecwTUTU\e:x' | vi toto.txt

Cela cherche la chaîne toto dans le fichier toto.txt et remplace toto par TUTU.

Remarquez le -e pour la commande echo et les \n et \e pour respectivement [Enter] et [ESC]. Avec cela, on doit pouvoir tout faire...

Dernière modification par joeCool (30-11-2018 17:57:52)

Hors ligne

#3 30-11-2018 17:55:09

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 9 (stretch) 64 bits + backports
Noyau : 4.9.65-3+deb9u2
(G)UI : gnome
Inscription : 21-10-2008

Re : Utilisation de vi avec des commandes externes et en script

@joeCool l'utilisation de la ligne de commande est décrite dans un tout du wiki :
https://debian-facile.org/doc:systeme:c … :gnu_linux

Perso, j'utilise vim : https://debian-facile.org/doc:editeurs:vim:vim smile

"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#4 30-11-2018 17:59:29

joeCool
Membre
Inscription : 08-12-2016

Re : Utilisation de vi avec des commandes externes et en script

smolski a écrit :



Moi aussi smile, si je tape vi seul, j'obtiens VIM - Vi IMproved.

Je vais regarder ton lien wiki, merci.

Hors ligne

Pied de page des forums