Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
acces a VI par script
Envoyé par: oliv

Salut

Lorsque je lance le script suivant
vi 01CF13 << !
:1,$ s/NAME/01CF13\ \NAME/
:wq
!

j'obtiens le message d'erreur suivant
Vim: Warning: Input is not from a terminal

que signifit ce message et comment l'eviter

Merci

Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Tuesday 12 June 2007 21:28:08
Répondre     Citer    
Re: acces a VI par script
Envoyé par: Fanch

essaye avec vi -c

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Wednesday 13 June 2007 08:59:03
Répondre     Citer    
Re: acces a VI par script
Envoyé par: oudoubah

C'est plus simple avec sed.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 13 June 2007 16:58:31
Répondre     Citer    
Re: acces a VI par script
Envoyé par: Fanch

certes oui ! mais bon, s'il veut utiliser vi pour faire ça, c'est possible. :-)

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Wednesday 13 June 2007 17:19:02
Répondre     Citer    
Re: acces a VI par script
Envoyé par: oliv

je ne connais pas sed. Puis-je avoir une explication?

MERCI

Poste le Wednesday 13 June 2007 21:45:16
Répondre     Citer    
Re: acces a VI par script
Envoyé par: oudoubah

sed est un "éditeur en mode flux" (Stream EDitor).

Pour faire ce que tu veux, il suffit de le faire par la commande :
sed 's/NAME/01CF13\ \NAME/ ' >> 01CF13

Il prend l'entrée standard comme entrée (donc attention de ne pas écrire dans le fichier qu'il est en train de lire, sinon il faut passer par une astuce ou un fichier temporaire).

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Wednesday 13 June 2007 21:52:53
Répondre     Citer    
Re: acces a VI par script

Et il y a ed aussi qui répond mieux au besoin initial

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Thursday 14 June 2007 16:54:05
Répondre     Citer    
Re: acces a VI par script
Envoyé par: oliv

plus d'info sur sur ed!

Merci

Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Thursday 14 June 2007 20:28:36
Répondre     Citer    
Re: acces a VI par script
Envoyé par: Fanch

plus d'infos sur ed : man ed !!

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Friday 15 June 2007 08:16:53
Répondre     Citer    
Re: acces a VI par script
Envoyé par: francoisp

vi-c "s/NAME/01CF13\ NAME/|:wq" fichier

l'interet et de ne pas avoir a rediriger dans un fichier de sortir contrairement a sed. on enregistre directement le fichier d'entree.

Poste le Saturday 23 June 2007 20:56:44
Répondre     Citer    
Re: acces a VI par script
Envoyé par: Sve@r

Citation
oliv
Salut

Lorsque je lance le script suivant
vi 01CF13 << !
:1,$ s/NAME/01CF13\ \NAME/
:wq
!

j'obtiens le message d'erreur suivant
Vim: Warning: Input is not from a terminal

que signifit ce message et comment l'eviter
Il signifie "mesage de vim: attention, l'entrée du traitement n'est pas fait à partir d'un terminal" (sous-entendu "d'un clavier")

Comment l'éviter ? vi 01CF13 << ! 2>/dev/null

Il est d'ailleurs très probable que quand tu lances ton script, l'écran affiche une succession de texte. il s'agit simplement des actions de vi qui travaille normallement à l'écran comme d'hab. Si ces affichages te gènent, tu peux aussi rediriger le flux n° 1 vers /dev/null => vi 01CF13 << ! 1>/dev/null 2>/dev/null

Autre remarque => arrêter le flux entrant par un simple point d'exclamation est dangereux car le flux entrant peut lui-même contenir un point d'exclamation. Vaut mieux y mettre une string qui a moins de chance d'y être "par hasard". Moi, je mets "_EOT_" (End Of Text) => vi 01CF13 <<_EOT_ 1>/dev/null 2>/dev/null

Bien entendu, les remarques des autres intervenants sont très valables. Vaut mieux essayer d'éviter "vi" (très lourd) autant que possible en lui préférant des modules plus légers mais plus adaptés aux traitements automatisés (sed, tr, awk)...


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Thursday 28 June 2007 18:52:00
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
acces a VI par script
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons