Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/08/2008, à 17:40

\\Ouranos//

[Tuto]Utiliser ed

Bonjour smile

Aujourd'hui, je vais vous parler de ed. Ed est un éditeur de texte très simple (ne pas confondre avec un traitement de texte, qui permet de mettre en page, en gras, etc...). On ne l'utilise presque plus, mais il est très simple.

Ed est modal, tout comme Vim (en fait, ed est la base de Vim), mais il n'a que 2 modes : le mode de commandes (celui qui est activé quand vous entrez dans l'application, et le mode d'insertion. Il n'y a ni mode visuel, ni mode d'insertion, car ed n'utilise pas un affichage plein écran.

Avant de commencer, sachez que toutes les commandes utilisés ici sont utilisables sous Vim.

Commençons ! big_smile

Pour ouvrir ed, c'est très simple :

ed

Un des gros avantages de ed est que vous pouvez protéger vos fichiers par un mot de passe en utilisant l'option -x :

ed -x fichier_a_editer

Au premier lancement, il vous demandera un mot de passe, et aux lancements suivants, il vous demandera de l'entrer.
Vous aurez une invite de commandes qui va s'ouvrir.

Obtenir de l'aide avec ed

Ed, tout comme Vim, a une commande permettant d'afficher de l'aide. Si vous faites une faute dans une commande, ed vous répondra '?'. Il suffit alors de taper 'h' pour avoir de l'aide...

Ajouter du texte

Il y a deux commandes pour ajouter du texte :

i -- ajoute du texte avant la ligne actuelle
a -- ajoute du texte après la ligne actuelle

Ces deux commandes vont faire passer ed en mode d'insertion. Vous pouvez ajouter autant de texte que vous voulez, du moment que chaque ligne ne fasse pas plus de 512 caractères (enfin ça devrait suffire hein tongue).

Pour sortir du mode d'insertion :

.

Vous revenez alors au mode de commande.

Se déplacer dans le texte ajouté

Pour se déplacer dans le texte, c'est très simple : il suffit d'entrer un numéro de ligne.
Par exemple :

3

Vous déplacera à la ligne 3. Si elle n'existe pas, il va vous en informer par un "?".
Il y a également des raccourcis :
$ correspond à la dernière ligne.
. correspond à la ligne actuelle.
Pour séléctionner un groupe de lignes, il faut les séparer par une virgule. Par exemple :

1,5

séléctionnera les lignes 1 à 5.
C'est particulièrement utile si vous voulez utiliser des commandes de substituton sur plusieurs lignes (ne vous inquiétez pas, on verra ça plus tard).
Vous pouvez aussi utiliser des opérations : par exemple :

.-3,$-2

séléctionne un groupe partant de la 3ème ligne avant la ligne actuelle à la deuxième ligne avant la dernière ligne. (ici le point est facultatif)

Afficher du texte

Il existe deux commandes pour afficher du texte :

p
l

ces deux commandes sont strictement identiques, donc choisissez celle que vous voulez tongue

Je vous laisse deviner ce que fait :

1,$ p
-4,+5 p

Effacer du texte

Pour effacer du texte, c'est encore très facile : c'est la commande d; un exemple :

1,5 d

efface les lignes de 1 à 5.
Je vous laisse deviner ce que produisent les commandes :

3,$-1 d
. d
1d

Remplacer du texte

La commande s permet de remplacer du texte. Un exemple :

s/texte/remplacement

permet de remplacer texte par remplacement sur la ligne actuelle.
Si vous voulez remplacer du texte sur une ligne qui n'est pas la ligne actuelle ou un groupe de lignes, vous pouvez en le spécifiant avant :

1,6 s/texte/remplacement

remplacera texte par remplacement sur les lignes 1 à 6.
Ces commandes ne remplacent que la première occurence du mot à remplacer. Autrement dit, si vous avez plusieurs fois le mot "texte" sur votre ligne,seul le premier sera remplacé. Pour le remplacer partout, on ajoute /g :

1,6 s/texte/remplacement/g

Vous pouvez toujours utiliser les ., les $ et tout ce qu'on a vu dans la partie "Se déplacer dans le texte".

Interagir avec le shell

ed peut interagir avec notre bonne vieille console, grâce à la commande !. Par exemple :

!ls

aura l'effet d'un ls dans un terminal. Vous pouvez aussi utiliser des commandes interactives (comme sudo par exemple).

Rechercher un texte

Il y a deux commandes pour rechercher un texte : / et ?. La commande / cherche à partir de la ligne actuelle, alors que le commande ? recherche avant la ligne actuelle...

Par exemple :
/texte recherche texte entre . et $
1 /texte recherche texte dans tout le fichier : la première occurence trouvée devient la ligne actuelle dans tous les cas.
A l'inverse, $ ?texte recherche dans tout le texte, mais à l'envers. Donc la dernière ligne où on trouvera texte deviendra la ligne actuelle.

Pour poursuivre une recherche en avant :
//
et en arrière :
??

Mais vous pouvez faire mieux ! wink
Par exemple, je vous laisse deviner ce que fait cette ligne :

/texte/,/autre chose/

*

Parlons des wildcards

les wildcards sont des touches spéciales : par exemple le * signifie tout, ?signifie un caractère, [1-9] signifie : tous les nombres de 1 à 9, [arc] signifie : seulement les lettres à, r et c...

Vous pouvez aussi les utiliser dans ed smile

Dans une recherche, ces options s'avèrent très utiles. Exemples (je vous donne pas la solution, vous savez faire maintenant tongue :

1,$ /truc*
1,$ /macin[-\/]
1,$ ?truc\?machin?

Sauvegarder

Pour sauvegarder son texte, on utilise la commande w.
Si vous avez ouvert ed sans argument et que vous taper simplement :

w

l'éditeur vous signalera que le fichier ne porte pas de nom en affichant "?" et dans ce cas-là, il faudra spécifier un nom de fichier, comme ceci :

w tested

Quitter

Quand vous avez fini de travailler sous ed, vous pouvez le quitter avec la commande q, comme ceci :

q

Si vous n'avez pas sauvegardé, l'éditeur vous le signalera par "?". Si vous ne voulez pas sauvegarder, retapez q et vous sortirez d'ed.

Autres commandes :
Si vous faites une utilisation basique de ed, vous ne les utiliserez peut-être pas, et pourtant elles sont utiles !
-g : permet d'exécuter une commande de ed sur toutes les lignes contenant un texte.
Utilisation : g/texte/p affichera toutes les lignes contenant le motif texte.
-v : le contraire de g : il exécute une commande sur les lignes qui ne contiennent pas le texte passé en argument. Donc la commande v/texte/p affichera toutes les lignes qui ne contiennent pas "texte".
-f : affiche le nom de fichier sur lequel vous travaillez.
-j : fusionne des lignes. Si vous avez comme lignes 1 à 3 :

Salut les gens ! 
Je teste ed. 
Un deux...un deux...

la commande 1,3 j transformera ces lignes en :

Salut les gens ! Je teste ed. Un deux...un deux...

(là, j'ai mis des espaces à la fin des lignes, c'est d'ailleurs un réflèxe qui ne coûte presque rien et qui peut être utile...)
-r : charge un fichier dans la mémoire tampon. Par exemple si vous voulez grouper deux musiques musique1.ogg et musique2.ogg l'une dèrrière l'autre, procédez comme suit :

ed musique1.ogg
$
r musique2.ogg
w musique3.ogg
q

Ceci va éditer musique1.ogg, rajouter le contenu de musique2.ogg à la fin, puis sauvegarder dans musique3.ogg.
-u : équivalent du Crtl Z sur les éditeurs en mode graphique, avec une particularité : il annule la dernière commande efféctuée sur la ligne actuelle, et non pas la dernière commande tout court. Donc :

3
s/machin/truc
7s/bidule/machin
3u

la dernière commande annulera le s/machin/truc de la ligne 2, et non pas la commande de la ligne 3.
-m : Déplace du texte dèrrière la ligne indiquée. /!\ L'original est perdu, c'est un peu comme le couper-coller en fait tongue
Concrètement :

m$ déplacera la ligne courante à la fin du texte
1,6m 15 déplacera les lignes de 1 à 6 derrière la ligne 15.

-t : Il fait presque la même chose que m, sauf que cette fois l'original est conservé.
-U : Annule TOUS les changements depuis la dernière sauvegarde sur la ligne courante.

-H : Annule définitivement (ou rétablit, si c'est déjà annulé) l'aide (commande h).

-c : Une commande utile : elle permet de changer la ligne entière smile ! NOTE : On peut utiliser s à la place, mais c'est plus lent.

C'est tout pour aujourd'hui, n'hésitez pas à poster vos suggestions où vos commandes...

*solution : elle séléctionne un groupe de lignes entre la première occurence où on trouve "texte" et la première occurence où on trouve "autre chose", à partir de la ligne actuelle (ajoutez un 1 devnt le premier / pour rechercher à partir de la première ligne).

Dernière modification par Ouranos999 (Le 03/01/2010, à 22:42)


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#2 Le 22/08/2008, à 18:27

Shrat

Re : [Tuto]Utiliser ed

Pour toi qui en a l'expérience, c'est utile?

J'utilise Vim mais ed semble avoir quelques différences sympa...

Hors ligne

#3 Le 22/08/2008, à 18:43

\\Ouranos//

Re : [Tuto]Utiliser ed

Shrat a écrit :

Pour toi qui en a l'expérience, c'est utile?

J'utilise Vim mais ed semble avoir quelques différences sympa...

En fait, ed est utilisable sous Vim (sauf les commandes p et l, puisque Vim affiche le texte en plein écran)...

Par contre, j'utilise toujours Vim pour mes gros fichiers (> 200 lignes) et ma prog...parce que ça colore le texte...par contre, pour des petits fichiers comme mes fichiers de conf -> ed.

Dernière modification par Ouranos999 (Le 22/08/2008, à 19:04)


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#4 Le 23/08/2008, à 10:35

\\Ouranos//

Re : [Tuto]Utiliser ed

D'ailleurs, ce tuto est plutôt destiné :
- Aux utilisateurs de nano qui veulent migrer vers vim "en douceur"
- Aux vimeux qui veulent découvrir pas mal de raccourcis utiles.
- A ceux qui ne savent pas quel éditeur choisir big_smile

Dernière modification par Ouranos999 (Le 23/08/2008, à 14:11)


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#5 Le 26/08/2008, à 17:18

\\Ouranos//

Re : [Tuto]Utiliser ed

up roll


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#6 Le 27/08/2008, à 00:25

\\Ouranos//

Re : [Tuto]Utiliser ed

Ouranos999 a écrit :

up roll


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#7 Le 27/08/2008, à 07:30

Yannick_LM

Re : [Tuto]Utiliser ed

Ah, là, là, pauvre Ouranos ...

Je me suis servi de ed deux trois fois, mais le «gain» par rapport à Vim est assez négligeable, amha. (Trop de fonctionnalités manquantes, et vi reste suffisamment léger pour être employable même dans des cas extrêmes)

Ed reste sympa pour apprendre à maîtriser sed.
(En gros, vous mettez une ligne du genre sed -e 'Des commandes ed' 'un fichier', et ça vous fait les commandes ed ligne par ligne)

On peut aussi utiliser ed pour automatiser des modifications de texte (c'est d'ailleurs plus pour ça qu'il est fait)

(Bien que personnellement, je préfère utiliser un script directement en Vim, question d'habitude)


Voilà, voilà.

Fin bon, ça peut toujours servir tongue

http://forum.ubuntu-fr.org/viewtopic.php?pid=1137630#p1137630

(j'avais pas eu beaucoup de succès non plus, à l'époque)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#8 Le 27/08/2008, à 17:21

\\Ouranos//

Re : [Tuto]Utiliser ed

@Yannick_lm :
Oui, certes, le gain par rapport à Vim est faible. Mais j'aime bien bosser sans avoir mon texte en permanance affiché roll (enfin je suppose que c'est une question de point de vue), et je l'affiche si je veux avec un 1,$ p...
Et apparement, toi qui est un utilisateur de ed, tu pourrais écrire tes suggestions pour améliorer le tuto ? smile


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#9 Le 28/08/2008, à 23:02

Yannick_LM

Re : [Tuto]Utiliser ed

Et apparement, toi qui est un utilisateur de ed, tu pourrais écrire tes suggestions pour améliorer le tuto ?

Faut pas croire tout ce que je raconte, hein wink Je me suis servi de ed deux trois fois, juste pour le fun.

Sinon, je rajouterais juste un petit truc utile:
Quand vous faites une erreur de syntaxe, ed vous affichera un magnifique message d'erreur

?

Vous pouvez essayer d'en savoir plus en tapant la commande h.


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#10 Le 28/08/2008, à 23:56

\\Ouranos//

Re : [Tuto]Utiliser ed

Yannick_LM a écrit :

Quand vous faites une erreur de syntaxe, ed vous affichera un magnifique message d'erreur

?

Vous pouvez essayer d'en savoir plus en tapant la commande h.

Je rajoute wink


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#11 Le 29/08/2008, à 15:01

\\Ouranos//

Re : [Tuto]Utiliser ed

D'ailleurs, j'ai trouvé sur la doc de Debian que ed était un des trois éditeurs "de secours" (dans /bin) pour quand on pouvait pas monter /usr...


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#12 Le 01/09/2008, à 15:01

\\Ouranos//

Re : [Tuto]Utiliser ed

o-O Comment ça se fait que mon post soit doublé ? hmm


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#13 Le 21/09/2008, à 11:19

\\Ouranos//

Re : [Tuto]Utiliser ed

up roll


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#14 Le 19/10/2008, à 16:29

MattX

Re : [Tuto]Utiliser ed

Salut,

Merci pour ce très beau tutoriel smile
Je crois pas que tu aies parlé de la commande c (pour remplacer des lignes), dont je me sers beaucoup.

Yannick_LM a écrit :

Et apparement, toi qui est un utilisateur de ed, tu pourrais écrire tes suggestions pour améliorer le tuto ?

Faut pas croire tout ce que je raconte, hein wink Je me suis servi de ed deux trois fois, juste pour le fun.

Sinon, je rajouterais juste un petit truc utile:
Quand vous faites une erreur de syntaxe, ed vous affichera un magnifique message d'erreur

?

Vous pouvez essayer d'en savoir plus en tapant la commande h.

Et y'a aussi la commande H (majuscule) pour activer/désactiver définitivement les messages d'erreur.


Marvin: “I am at a rough estimate thirty billion times more intelligent than you. Let me give you an example. Think of a number, any number.” — Zem: “Er, five.” — Marvin: “Wrong. You see?”
Accélération nominale d'un iPad pour fonctionnement optimal : 9.81 m/s² sur 10 mètres, puis arrêt.
GMT-5

Hors ligne

#15 Le 20/10/2008, à 21:28

\\Ouranos//

Re : [Tuto]Utiliser ed

MattX a écrit :

Salut,

Merci pour ce très beau tutoriel smile
Je crois pas que tu aies parlé de la commande c (pour remplacer des lignes), dont je me sers beaucoup.

Yannick_LM a écrit :

Et apparement, toi qui est un utilisateur de ed, tu pourrais écrire tes suggestions pour améliorer le tuto ?

Faut pas croire tout ce que je raconte, hein wink Je me suis servi de ed deux trois fois, juste pour le fun.

Sinon, je rajouterais juste un petit truc utile:
Quand vous faites une erreur de syntaxe, ed vous affichera un magnifique message d'erreur

?

Vous pouvez essayer d'en savoir plus en tapant la commande h.

Et y'a aussi la commande H (majuscule) pour activer/désactiver définitivement les messages d'erreur.

Merci MattX, je rajoute smile


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#16 Le 21/10/2008, à 01:47

n3o51

Re : [Tuto]Utiliser ed

Bonsoir

Vissiblement l'option -x ne fonctionne pas

 
ed -x monfichier

ed: invalid option -- x

Welcome to the real world
________________________________

Hors ligne

#17 Le 21/10/2008, à 20:18

MattX

Re : [Tuto]Utiliser ed

n3o51 a écrit :

Bonsoir

Vissiblement l'option -x ne fonctionne pas

 
ed -x monfichier

ed: invalid option -- x

Ouais, cette option n'est pas dans toutes les implémentations, malheureusement (et l'implémentation GNU ne fait pas partie de celles qui l'intègrent). Par contre l'implémentation BSD la supporte (cf. le manuel en ligne).

Dernière modification par MattX (Le 02/03/2011, à 15:07)


Marvin: “I am at a rough estimate thirty billion times more intelligent than you. Let me give you an example. Think of a number, any number.” — Zem: “Er, five.” — Marvin: “Wrong. You see?”
Accélération nominale d'un iPad pour fonctionnement optimal : 9.81 m/s² sur 10 mètres, puis arrêt.
GMT-5

Hors ligne

#18 Le 21/10/2008, à 20:46

n3o51

Re : [Tuto]Utiliser ed

Bonsoir , Merci pour l'info quel dommage big_smile


Welcome to the real world
________________________________

Hors ligne

#19 Le 22/10/2008, à 00:10

Yannick_LM

Re : [Tuto]Utiliser ed

<mode fan de vim>
vim -x marche très bien chez moi
</mode fan de vim>

EDIT:
histoire de pas troller idiot, une page wikipedia sur l'algorithme utilisé par ed (et vraisemblablement vim) pour le cryptage:
http://en.wikipedia.org/wiki/Data_Encryption_Standard

À noter qu'Emacs propose l'encryptage en GPG, lui wink


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#20 Le 09/02/2009, à 20:44

n3o51

Re : [Tuto]Utiliser ed

while :;do read x;echo \?;done

lol


Welcome to the real world
________________________________

Hors ligne

#21 Le 17/11/2009, à 12:01

Zappan

Re : [Tuto]Utiliser ed

p et l ne sont pas tout à fait identiques, p affiche les caractères spéciaux utf-8 et l les affiche en octal échappés wink

Dernière modification par Zappan (Le 17/11/2009, à 12:02)

Hors ligne