Documentation Edbrowse, guide de l'utilisateur

Table des matières

Chapitre 1, préface

Chapitre 2, guide de référence rapide

Chapitre 3, l'éditeur

Chapitre 4, navigateur web

Chapitre 5, Javascript

Chapitre 6, scripts d'Edbrowse et le fichier de configuration

Chapitre 7, client de courrier

Chapitre 8, Accéder aux bases de données


Chapitre 1, Préface

Mainteneur

Le site de Edbrowse est Edbrowse.org Chris Brannon est l'actuel mainteneur du projet et le webmaster.

Auteur

Karl Dahlke a écrit la première version de Edbrowse en perl, en 2001, et reste le principal développeur du projet. Consultez SVP l'article wikipedia pour l'historique de Edbrowse, et un aperçu de ses possibilités.

Copyright

Ce programme est copyright (c) (c) Karl Dahlke (et d'autres auteurs et contributeurs), 2000-2015. Il est mis à disposition par les auteurs sous la licence publique générale GNU (GPL), définie par la Free Software Fondation. Il peut être utilisé dans n'importe quel but, et redistribué, à condition d'y adjoindre le présent copyright.

Avertissement

Edbrowse est fourni tel quel, sans garantie de fonctionnement dans tous les cas.  Il peut effacer vos précieux fichiers.  Il peut envoyer des données erronées sur l'Internet, provoquant l'achat d'un éléphant à 37000 dollars au lieu de fournitures d'impression à 37 dollars.  Il peut effacer toutes les lignes de votre table mysql clients.  C'est un projet développé par des bénévoles sur leur temps libre, qui (en principe) ne peut atteindre la qualité et la rigueur des logiciels institutionnels ou gouvernementaux. En utilisant ce programme, vous l'acceptez en l'état.

Remerciements

Chris Brannon a écrit ou modifié au moins 20% du code, et a fourni de bonnes idées pour l'architecture générale. Adam Thompson a porté l'interface javascript de C à C++, portage requis par les versions 2 de Mozilla JS, et il continue à superviser l'architecture générale du projet. Kevin Carhart a déchiffré les mystères de jquery, et mis à jour le DOM pour l'implémenter. Jeremy O'Brien a porté le programme sur Mac OS X. et Geoff McLane a fourni le portage Windows, une configuration cmake et un système de compilation généraux. Plusieurs personnes ont traduit les sorties et messages d'erreur en d'autres langues, et elles sont créditées de leur travail dans la section "Langages" ci-dessous.

Vue d'ensemble

Ce programme est, à première vue, un ré-implémentation de /bin/ed.  En fait vous pourriez utiliser quelques commandes d'Ed sans vous rendre compte que vous exécutez réellement mon programme. Mais à mesure que vous l'utiliserez, vous découvrirez quelques différences, secteurs où mon programme diffère de Ed. (Ceux-ci sont discutés ci-dessous.)

Réinventer ed semble être une perte de temps, jusqu'à ce que vous vous rendiez compte que ce programme fonctionne également comme un navigateur - un navigateur inclus dans ed.  Vous pouvez éditer une URL aussi facilement qu'un fichier local, et activer le mode navigation pour afficher le HTML d'une façon appropriée pour un programme en ligne de commande.  En d'autres termes, nous ignorons la majeure partie des informations de formatage, maintenons les liens et remplissons les formulaires.  Ceci permet aux utilisateurs aveugles d'accéder à l'Internet par l'intermédiaire d'une application qui est entièrement compatible avec la nature linéaire de la parole ou du braille. 

Si Edbrowse n'est pas fourni par votre distribution, il existe une version en Perl, avec des fonctionnalités moindres, que vous pouvez utiliser sur n'importe quel ordinateur : Linux, Unix, Mac, Windows, etc.   Essayez Edbrowse.pl, et si vous l'appréciez, vous pourrez récupérer le package git et compiler les sources pour construire la version C complète.

Si vous êtes un utilisateur de Linux, et que votre distribution de fournisse pas Edbrowse, vous pouvez - bien sûr - utiliser la version Perl mentionnée ci-dessus, mais vous pouvez égalemnt utiliser la version complète en C, en évitant les tracas de la compilation.  Des versions liées statiquement pour les architectures 32 bits et 64 bits sont maintenues sur la home page d'Edbrowse.

Cette documentation suppose que vous connaissez ed.  En fait, elle aide si vous êtes à l'aise dans ed.  Une expérience des navigateurs d'Internet et de la terminologie associée est également utile. 

Autres langues

D'abord, quelques mots sur les jeux de caractères. L'anglais est facilement géré par un flot d'octets, une lettre par octet.  En fait, chaque lettre tient sur 7 bits; le huitième bit, non utilisé, est mis à 0.  Ce système est appelé ASCII et, comme vous pouvez le voir, il est spécifique à l'anglais.

Les langues indo-européens comportent plus de caractères, comme ñ (espagnol), è (français), et ö (allemand). Ceux-ci peuvent tenir sur un octet, en mettant le 8ème bit à 1, selon le standard iso8859-1. D'autres langues, comme le tchèque et le hongrois, se conforment au standard iso8859-2, qui assigne d'autres caractères aux octets supérieurs à 127. Et ensuite il y a l'iso8859-3, et ainsi de suite.  Sélectionnez votre page de codes, et toutes les lettres de vore langue tiennent sur un octet. C'est le standard iso8859, rétro-compatible avec l'ASCII.  En d'autres termes, z est 122 en ASCII et dans toutes les pages de codes iso8859-x, mais les codes plus élevés, au-dessus de 127, peuvent représenter des lettres différentes dans des langues différentes.

Ceci a fonctionné pendant longtemps, mais que se passe-t-il si vous désirez écrire un paragraphe en français et un autre en tchèque ? Vous pouvez passer de l'iso8859-1 à l'iso8859-2 au milieu du document, ou bien utiliser un nouveau standard qui représente toutes les lettres dans toutes les langues simultanément. Ce jeu de caractères, qui ne code plus les caractères sur un seul octet, est connu sous le terme utf8, lequel est devenu le nouveau standard dans l'industrie informatique.  Les logiciels n'ont plus à sélectionner une page iso8859 et assigner des nombres aux lettres dans un synthétiseur vocal.  Ainsi, dans votre ordinateur, ñ est représenté par deux octets, et non un seul.  C'est transparent pour vous; vous voyez la même lettre sur l'écran, et vous entendez le même son (si votre lecteur d'écran envoie ces lettres à votre synthétiseur). Une façon simple de savoir sur quel système vous êtes est de faire "echo $LANG". Si la réponse contient la chaîne utf8, ou utf-8, en minuscules ou majuscules, votre console utilise utf8, et attend des séquences de 2 octets. Vos fichiers contiendront ces séquences, sans que vous en soyez (probablement) informé. Des systèmes plus anciens (pré utf-8) codent chaque caractère sur un seul octet, et utilisent une page de codes iso8859 pour les traduire.

Il y aurait beaucoup plus à dire sur les jeux de caractères : ceci est juste une brève introduction au sujet. Je n'ai pas besoin d'aller plus loin, parce que Edbrowse ne supporte actuellement que iso8859 ⇔ utf8 . Le chinois, par exemple, requiert des séquences de 3 ou 4 octets, intégrées dans unicode. Edbrowse, pour l'heure, ne peut gérer ce niveau de complexité.

Les sorties et messages d'erreur ont été "internationalisés", comme "chaîne recherchée non trouvée".  Positionnez la variable d'environnement LANG pour interagir avec Edbrowse dans votre langue.  Les langues acceptées sont listées ci-dessous.  Si vous pouvez traduire Edbrowse dans d'autres langues, prière de me le faire savoir.

Anglais: LANG=en (c'est la langue par défaut)

Français: LANG=fr par Erwin Bliesenick avec la documentation

Portuguais brésilien: LANG=pt_br par Cleverson Casarin Uliana

Polonais: LANG=pl_pl par Wojciech Gac

Allemand: LANG=de par Sebastian Humenda

Lorsqu'un message d'erreur est affiché, les lettres accentuées sont affichées sur un octet, c'est-à-dire en iso8859, à moins que la chaîne utf8 ou utf-8 soit présente dans $LANG, auquel cas les caractères non-ascii sont générés en utf8. LANG=fr_FR.UTF-8 est un réglage usuel en France. De même, le contenu d'un tampon, qu'il soit un fichier local ou un site internet, est affiché en séquences de 8 bits ou en séquences de 2 octets, conformément à $LANG.  Gardez à l'esprit que utf8 est devenu le standard, et Edbrowse ne pourra plus afficher de texte ou des messages d'erreur en iso8859 dans quelque temps.   En d'autres termes, iso8859 est obsolète.

Si Edbrowse lit un ancien fichier, c'est-à-dire qu'il le charge dans un tampon vide, et qu'il soit codé en iso8859, alors que votre ordinateur est configuré en UTF-8, ce fichier est alors converti à la volée, bien avant que vous vous en aperceviez. Ainsi, il aura l'air normal. Si j'ai tout fait correctement, vous ne verrez aucune différence. (Utilisez la commande iu pour désactiver cette fonctionnalité.)

Quand vous sauvegardez vos données dans le même fichier, c'est-à-dire si vous avez fait quelques ajouts ou modifications, je reconvertis le fichier dans son jeu de caractères original iso8859. Ainsi, vous pouvez renvoyer le fichier modifié à votre correspondant, et ce fichier sera dans son jeu de caractères, comme il l'escompte. Cependant, si vous sauvegardez vos données, ou une partie de vos données, sous un nouveau nom de fichier, il restera dans le jeu de caractères utilisé par votre ordinateur.

Ces conversions ne devraient jamais intervenir sur des fichiers zip, ou des exécutables, ou d'autres types de données binaires. Si vous voyez les mots "conversion en iso8859" ou "conversion en utf8", alors que le fichier n'est pas du texte internationalisé, il y a un problème. N'essayez pas de lancer l'exécutable converti; cela ne marchera pas.

Si votre environnement est en utf8, la fonction de recherche peut amener à quelques confusions. Considérons le mot espagnol niño (petit garçon). Si vous recherchez ni.o, vous ne trouverez pas la ligne contenant ce texte. Le point remplace un caractère, et devrait correspondre à ñ, mais cette lettre accentuée tient sur deux octets. Ironiquement, vous devrez chercher ni..o, et vous trouverez ce que vous cherchez. Nul besoin de dire que ceci est vraiment déroutant.

La recherche/remplacement est effectuée par la librairie pcre et, heureusement pour nous, la dernière version supporte l'utf8. En d'autres termes, je peux passer à pcre l'option qui lui dira de rechercher certaine séquence sur deux octets comme un caractère unique, et pcre se comportera comme attendu.   La recherche de ni.o fonctionnera de nouveau.  Pour désactiver temporairement l'utf8 dans la recherche/remplacement, utilisez la commande su8.

Quelques pages internet peuvent s'afficher en plusieurs langues. Par exemple, twitter.com a une version anglaise, une version française, et ainsi de suite. Il est possible de sélectionner la langue à l'appel d'une page. Edbrowse l'implémente via le mot-clé localizeweb dans son fichier de configuration. Par exemple, la ligne qui suit dans .ebrc indique que vous désirez la version française, si elle est disponible.

localizeweb = fr


Chapitre 2, Guide de référence rapide

Guide de référence rapide

Liste de toutes les commandes d'ed et d'Edbrowse, toutes regroupées.  C'est un guide de référence rapide.  La plupart de ces commandes n'auront pas de sens si vous ne lisez pas le reste de la documentation. 

Quitter le programme

q : quitte la session courante
qt : quitte le programme complètement, que vous ayez sauvegardé vos fichiers ou non
bw : tampon sauvegardé; vous pouvez quitter n'importe quand
!commande : commande shell
! : shell interactif
cd : change de répertoire

Entrées

rl : utilise readline() en entrée (bascule)

Affichage des lignes dans le tampon

p : affiche la ligne courante
4,7p : affiche les lignes 4 à 7
+3p : avance de 3 lignes et affiche
3 : idem +3p, print est la commande par défaut
- : ligne précédente
--- : recule de 3 lignes
'a,'bp : affiche les lignes repérées par les étiquettes a et b
kb : marque la ligne courante avec l'étiquette b
l : liste la ligne courante, affichant les caractères invisibles et les marqueurs de fin de ligne
eo : marqueurs de fin désactivés
el : affiche les marqueurs de fin ^$ quand une ligne est listée
ep : affiche les marqueurs de fin quand une ligne est listée ou affichée
lna : affiche les caractères nonascii en hexadécimal uand une ligne est listée (bascule)
n : affiche la ligne courante avec son numéro de ligne
z22 : affiche les 22 prochaines lignes
z : affiche encore 22 lignes
= : affiche le nombre de lignes du fichier en cours
.= : affiche le numéro de ligne courante
B : trouve la ligne contenant le crochet correspondant
B( : trouve la ligne contenant la parenthèse correspondante

Messages d'aide

h : aide, explique le dernier point d'interrogation H : affiche tous les messages d'erreur (bascule)

Recherche et remplacement

s/x/y/ : remplace x par y dans la ligne courante
s/x/y : remplace x par y dans la ligne courante et affiche le résultat
s//y/ : utilise la dernière chaîne de substitution, dans ce cas x
s/x/%/ : utilise la dernière chaîne de substitution
s : répète la dernière opération de substitution
s/x/y/2 : remplace la deuxième occurrence de x par y dans la ligne courante
4,7s/x/y/g : remplace toutes les occurrences de x par y, dans la ligne courante
s, : remplace virgule espace par un retour-chariot, divise la ligne en deux
s. : replace point espace par un retour-chariot, divise la ligne en deux
s?2 : divise la ligne à l'emplacement du 2ème point d'interrogation
bl : découpe une très longue ligne en phrases
/x/ : recherche la ligne contenant x
/x: idem que /x/
/x/i: cherche la ligne contenant x ou X
?x? : recherche x en arrière
ci : les recherches et les substitutions sont insensibles à la casse
cs : les recherches et les substitutions sont sensibles à la casse
sg : les chaînes de substitution sont globales pour toutes les sessions
sl : les chaînes de substitution sont locales à leurs sessions
su8: Utiliser utf-8 dans recherche et remplacement (bascule)
g/x/ p : affiche toutes les lignes contenant x x
v/x/ p : affiche toutes les lignes ne contenant pas x
v/x/i l : liste toutes les lignes ne contenant ni x ni X
lc : conversion de la ligne courante en minuscules
mc : majuscules en début de mot dans la ligne courante
uc : conversion de la ligne courante en majuscules
s/foo/uc: conversion de foo en FOO dans la ligne courante
s/\bfoo\b/mc/g : convertit foo en Foo, mas pas foobar

Fichiers et sessions

f : affiche le nom du fichier courant
f foo : renomme le fichier courant en 'foo'
f/ : ne conserve que la dernière partie du nom de fichier courant
e : affiche le numéro de la session courante
e3 : va à la session numéro 3
e foo : édite le fichier 'foo'
r foo : lit le contenu du fichier 'foo' dans le tampon courant
w foo: sauvegarde le tampon courant sous le nom 'foo'
w+ foo : ajoute au fichier 'foo' le contenu du tampon courant
w/ : sauvegarde sous le nom de la dernière partie du nom de fichier courant
e ~/projets/edbrowse/src/buf*.c : expanse les méta-caractères s'il y a correspondance exacte
e $EBSRC/buf*.c : expansion de variable
bd : bascule entre détection/non détection des fichiers binaires du répertoire
iu : convertit automatiquement entre iso8859 et utf8 (bascule)

Edition de texte, très semblable à ed

u : annuler la dernière commande
d : supprimer la ligne courante
1, $d : supprimer toutes les lignes, de 1 à la fin du fichier
D : supprimer la ligne courante et afficher la prochaine ligne
i : insérer le texte, suivi d'une virgule, avant la ligne courante
c : remplacer la ligne courante par un nouveau bloc du texte, terminé par une virgule
a : ajouter le texte après la ligne courante, terminé par une virgule
a+ : inclure la ligne que vous vous venez de taper, si vous pensiez être en mode ajout
4,7m11 : déplacer les lignes 4 à 7 à la ligne 11
4,7t11 : copier les lignes 4 à 7 à la ligne 11
3,4j : fusionner les lignes 3 et 4
3,4J : fusionner les lignes 3 et 4, séparées par un espace

Parcours de répertoire

dr : le répertoire est en lecture seule
dw : on peut écrire dans le répertoire, et d déplace les fichiers dans la corbeille
dx : on peut écrire dans le répertoire, et d supprime le fichier
hf : basculer entre montrer/cacher les fichiers cachés du répertoire
lsl : affiche la taille du fichier sur la ligne courante, en mode répertoire uniquement
lss : affiche la taille approximative du fichier, en ko, mo etc..
lst : affiche la date de modification du fichiers binaires
lsp : affiche le propriétaire, le groupe et les les permissions
lsi : affiche l'inode
lsk : affiche le nombre de liens en dur
lsm : affiche les nombres majeur et mineur
lsy : affiche le chemin d'un lien symbolique
ls : idem à lsst
ls=lt : affiche la longueur et la date de tous les fichiers du répertoire parcouru
ls= : affiche uniquement la liste des fichiers du répertoire parcouru

Parcourir un fichier html ou une page web

b : navigue dans le fichier courant, considéré comme étant du HTML
b foo.html : éditr et navigue dans le fichier foo.html
b URL : se connecte à URL et naviguer
ub : quitte le mode navigation du fichier courant
ft : affiche le titre de la page Web courante
fd : affiche la description de la page Web courante
fk : affiche les mots-clés de la page Web courante
rf : rafraîchit la page WEB ou la liste des fichiers
et : édite cette page Web en mode texte pur
hr : redirection HTTP (bascule)
vs : vérifie les connexions SSL (sécurisées)
sr : envoie le référent (bascule)
ua3 : se présente comme le troisième agent utilisateur dans votre fichier de configuration
can : active ou désactive l'authentification curl en négotiation SPNEGO, nécessaire pour kerberos (krb5/gss)

Téléchargements FTP ou HTTP

pdd : indicateur d'avancement du téléchargement indiqué par des points
pdc : indicateur d'avancement du téléchargement indiqué par un nombre
pdq : pas d'indicateur d'avancement du téléchargement
fma : mode FTP actif
fmp : mode FTP passif
bg : télécharge les fichiers en tâche de fond (bascule)
bglist : liste les téléchargements en tâche de fond, terminés ou en cours

Interagir avec une page Web

g : suit le lien sur la ligne courante
g2 : suit le deuxième lien sur la ligne courante
g$ : suit le dernier lien sur la ligne courante
^ : retourne à la page à la page Web précédente
i=xyz : remplit le formulaire sur ligne courante avec 'xyz'
i2=xyz : place le deuxième formulaire de la ligne courante avec 'xyz'
i2* : appuie sur le 2ème bouton de la ligne courante, habituellement envoyer ou remettre à zéro
i$* : appuie sur le dernier bouton de la ligne courante
i3 ? : affiche la description du troisième formulaire de la ligne courante
ipass2 : invite a rentrer le texte du deuxième formulaire sans afficher d'écho
M4 : déplace cette page web en session 4 et revient à la page précédente
js : activation javascript (bascule)
xhr : permet le XHR (bascule)
rr : rafraîchit l'écran, afin de refléter les modifications javascript asynchrones

Client Mail

sm : envoie le courrier [le numéro de compte]
re : répond à un courriel
rea : répond à tous

Plugins

pb : joue le tampon (typiquement de l'audio)
pb.mp3 : joue le tampon courant comme un fichier mp3
pg : plugins activés (bascule)

Accès aux bases de données

ds=source,login,password : définit la source de données
sht : montrer les tables
shc : montrer les colonnes (et la clé primaire) de la table courante
shf : montrer clés de la table courante
fbc : chercher colonnes blob

Fonctions Edbrowse

<foo arg1 arg2 ... appel de la fonction foo, définie dans votre fichier .ebrc
X : fait de cette ligne la ligne courante, souvent employé dans un script

Deboguage

db3 : niveau de déboguage (de 0 à 7)
jdb : débugger javascript : point pour le quitter

Trucs pour éviter les numéros de ligne

Si vous découvrez ed, vous pouvez trouver ce programme malcommode.  Il semble vous obliger à utiliser des numéros de ligne, lesquels se modifient toujours en cours d'édition de texte. Cependant, les numéros de lignes sont rarement nécessaires en pratique. Voici quelques astuces pour s'en passer.

Pour lire le document entier, tapez ',p'.  Evidemment, un long document débordera de l'écran, cependant, il y a une manière facile de sauter d'écran en écran.  Commencer par 0z24 pour obtenir les 24 premières lignes.  Ensuite, la commande 'z' donnera les 24 prochaines, et les 24 prochaines, et ainsi de suite.  Vous pouvez employer 22, ou 23, ou ce qui semble approprié à votre écran. 
Une autre approche est de simplement taper la touche entrée, à plusieurs reprises, pour aller de ligne en ligne. 

Une fois habitué aux expressions régulières, vous pouvez sauter à n'importe quelle partie du document, même un grand document, dans un temps record, simplement en recherchant un fragment unique de texte.  Ceci vient avec la pratique.  Parfois je devine mal, et ma chaîne de recherche ne donne pas un résultat unique.  Je reviens quelque part au début du document et je dois recommencer la recherche.  Ceci ne se produit pas très souvent.  J'arrive habituellement au bon endroit en un ou deux essais. 

Pour marquer certaines lignes de texte, n'essayez pas de vous rappeler les numéros de ligne.  Employez la commande 'k' pour les marquer.  Par exemple, utilisez 'ka' et 'kb' pour marquer le début et la fin d'un bloc de texte, alors que 'kc' marque cette zone.  La commande pour aller à cette zone est alors 'a,'bm'c – sans numéro de ligne.  C'est le standard de ed.

Pour rechercher des liens sur une page Web, rechercher l'accolade droite.  Certes, vous pouvez tomber sur une accolade littérale dans le texte, mais ceci ne se produit pas très souvent.  Vous pouvez accéder à un lien particulier en tapant « /{Next}/g ».  De même, vous pouvez rechercher des champs de saisie en recherchant le signe plus grand que (« > ».  Ceci s'explique si vous connaissez le codage particulier des pages web. Et naturellement, des opérations multiples peuvent être codées dans un script, une importante fonctionnalité de Edbrowse. 

Liste de discussion

Il existe une liste de diffusion pour les utilisateurs d'Edbrowse et d'autres utilitaires en ligne de commande.  Vous pouvez vous y abonner en envoyant un courrier à commandline-subscribe@yahoogroups.com.

Wiki Edbrowse

Il existe un wiki dévolu à Edbrowse, incluant des trucs et astuces, et des exemples de fichiers de configuration. Voyez edbrowse.org pour plus d'informations.


Chapitre 3, l'Editeur

Différences importantes par rapport à /bin/ed

Certaines recherches/commandes de remplacement se comportent différemment sous cet éditeur.  C'est parce que les expressions régulières sont interprétées par la bibliothèque compatible avec Perl (pcre), plutôt que par la bibliothèque traditionnelle de regexp.  Par conséquent les expressions régulières ont plus de possibilités, et plus de puissance, que les expressions régulières utilisées par /bin/ed.  La syntaxe est également quelque peu différente.  Par exemple, Perl emploie des parenthèses nues là où Ed emploie des accolades échappées - pour délimiter les sections de texte satisfaisant aux conditions.  Et Perl utilise $1… $9 pour référencer les sous-chaînes trouvées, tandis que Ed utilise \1… \9.  En outre, le Perl emploie le suffixe « i » pour la recherche insensible à la casse, avec le suffixe traditionnel « g » pour indiquer le remplacement global sur tout le texte.  Il n'y a aucune raison de décrire toutes les nuances ici.  Veuillez lire la page de manuel de perlre « man perlre  » pour une description complète des expressions régulières sous Perl.  Une fois accoutumés à leur puissance et flexibilité, vous ne reviendrez jamais à Ed. 

Super ! Vous avez lu la page de man de perlre, et vous voilà de retour.  Voici quelques changements par rapport aux expressions régulières de Perl.  J'ai constaté que « (and) » est presque toujours considéré comme un littéral, comme en recherchant maFunction (), aussi j'ai inversé la signification des parenthèses échappées dans Perl.  C'est-à-dire, « (and) » maintenant matche les caractères littéraux, et « \ (and \) marque les sous-chaînes correspondant à l'expression.  Ces sous-chaînes sont alors référencées, dans le texte de remplacement, de $1 à $9.  De même, « | signifie le littéral |, » alors que « \| » signifie l'alternative.  Je change également la signification de « & » du côté droit, pour reprendre ce qu'il signifie dans Ed.  Je garde ^ $ .[] + * ? et {m, n} comme interprété par Perl, suivant la description de la page du manuel de perlre.  Cependant, si * est le premier caractère, il est traité comme le caractère étoile.  Ceci s'explique, par le fait qu'il n'y a aucun caractère précédent à modifier.  Certaines versions de ed font ainsi, mais pas toutes.  Mais je le trouve commode ; quand je veux remplacer * + ou ? , je n'ai pas besoin de les échapper, juste parce que ce sont des modificateurs.  De même, une parenthèse ouvrante est traitée comme un littéral.  Ces changements à regexp, pour ressembler à ed, peuvent vous gêner si vous êtes expert de Perl.  Désolé pour cela, mais je pense que ces changements facilitent l'utilisation de l'éditeur, surtout pour les utilisateurs de ed expérimentés.  Ci-dessous quelques différences supplémentaires entre ce programme et /bin/ed. 

Les sections suivantes décrivent de nouveaux dispositifs, totalement étrangers à ed.  Ceux-ci incluent l'édition simultanée de fichiers comme dans emacs et vi, la navigation dans un document HTML et « l'édition» des formulaires de saisie. 

Equilibrage des parenthèses

La commande B majuscule intéresse les programmeurs, et ne sera pas probablement pas employée par les autres utilisateurs.  Elle localise la ligne avec une parenthèse, une accolade, ou un crochet.  Exemple:
  
if(x == 3 &&
  y == 7) {
    printf("bonjour\n");
  } else {
      printf("monde\n");
      exit(1);
  }

La commande B majuscule, sur la deuxième ou dernière ligne, se déplace à la ligne du milieu « } else { », laquelle équilibre l'accolade ouvrante.  Sur la première ligne, B se déplace à la deuxième ligne, qui équilibre la parenthèse ouverte.  La deuxième ligne équilibre {, plutôt que ), parce que les accolades ont la priorité sur les parenthèses, qui ont la priorité sur les crochets.  Vous pouvez forcer un match de parenthèses par « B) », laquelle revient de la ligne 2 à la ligne 1. 

La commande B sur la ligne du "else" est ambiguë - je ne sais pas s'il faut regarder en arrière ou vers l'avant.  Tapez plutôt « B{« ou « B} ». 

Vous pouvez explicitement équilibrer le <>, pour les tags multilignes de HTML, ou «`», utilisé dans des certains préprocesseurs tels que m4. 

Des commentaires ou des chaînes littérales contenant des ponctuations ouvrantes/fermantes vont faire sortir Edbrowse de ses gonds. si vous êtes l'auteur du source, essayez d'éviter des parenthèses dans les commentaires, ou bien équilibrez les parenthèses dans un commentaire.

static char openstring[] = "{block"; /* parenthèse } fermante ici dans le commentaire */

Changement de contexte

Ce programme permet l'édition simultanée de fichiers multiples, et autorise le transfert de texte entre eux. C'est semblable aux terminaux virtuels (Linux), où vous changez de session par l'intermédiaire d'alt-f1, alt-f2, jusqu'à alt-f6.  Ici, vous basculez sur une session d'édition différente par l'intermédiaire des commandes « e1 », « e2 », jusqu'à « e6 ».  Notez que « e 2 » (avec un espace entre e et 2) édite le fichier dont le nom est « 2 », tandis que « e2 » (sans espace) bascule sur la session 2.  De même, vous pouvez lire le contenu de la session 3 dans le tampon courant en tapant « r3 », et vous pouvez sauvegarder le tampon courant dans la session 5 par l'intermédiaire de « w5 ».  La dernière commande vous avertira si la session 5 existe déjà, et vous avez modifié son contenu sans l'avoir sauvegardé.  En d'autres termes, vous êtes sur le point de perdre votre travail en session 5.  Taper « h » vous expliquera : « 'w' attendu sur la session 5 ». 

Si vous quittez une session, vous allez à la prochaine session d'édition valide, revenant à la session 1 si besoin.  La sortie du programme s'effectue lorsqu'on quitte la dernière session. 

Attention, le programme contient un bogue concernant la commande « undo » (annuler).  Si vous changez de session, puis revenez en arrière, vous ne pourrez pas annuler vos derniers changements.  On peut penser qu'il est facile de corriger cette bogue, mais c'est plus subtil qu'il n'y paraît, je n'y ai donc pas touché.  J'ai simplement voulu vous en avertir.  Assurez-vous que tout est correct avant de changer de session. 

Voyons un exemple de copier/coller.  Vous éditez le fichier « essai » en session 1, et vous vous rendez compte qu'un paragraphe du fichier « toto » s'adapterait parfaitement bien ici.  Voici comment cela pourrait se présenter.  Les lignes commençant par « < » sont l'entrée de l'utilisateur, et des lignes commençant par « > » sont les réponses du programme.  Le signe « # » représente mes commentaires, qui normalement n'apparaîtront pas au milieu d'une ligne. 

< e2 # bascule sur la session 2
> new session # nouvelle session
# contrairement à ed, la commande « r » ne crée pas un nouveau fichier, 
# même si le tampon est vide. 
# ainsi, « r toto» est plus sûr que « e toto ». 
# après tout, nous ne voulons pas modifier toto, 
# nous voulons juste y voler quelque chose. 
< r toto
> 28719 
< /start/ 
> ceci est le début du joli paragraphe que vous voulez copier. 
< 1,-d # on n'a pas besoin de ce qu'il y a avant 
< /end/ 
> ceci est la fin du joli paragraphe que vous voulez copier. 
< +,$d # on n'a pas besoin de ce qu'il y a après 
< e1 
> essai 
< r2 
> 3279 # taille du texte lu de la session 2 
< q2 #, on fait le ménage, en se débarrassant de la session 2 
< W # sauvegarde de essai, avec le nouveau paragraphe inclus 
> 62121 

Ci-dessous, comment transférer une portion de texte d'un fichier à un autre

< e2 
> new session # nouvelle session
< e toto # cette fois je vais modifier le fichier
> 28719 
< /start/ 
> c'est le début du joli paragraphe frais que vous voulez déplacer. 
< ka # marque le paragraphe 
< /end/ > ceci est la fin du joli paragraphe que vous voulez déplacer 
< kb 
< 'a,'bw3 
> 3279 
< 'a, 'bd 
< w # sauvegarde toto sans le joli paragraphe
> 25440 
< q 
> no file # aucun fichier, on est maintenant en session 3 
< e1 
> essai # de retour en session 1 
< r3 
> 3279 
< q3 on arrête la session 3, bien qu'étant toujours en session 1 
< w # sauvegarde de essai, avec le nouveau paragraphe inclus 
> 62121 

La commande « e », indique la session courante, au cas où vous l'oublieriez.  Elle ressemble à la commande « f », qui indique le fichier courant. 

Utilisation

Tapez « Edbrowse -h » pour lire les conseils d'utilisation.  Vous verrez les options « -f », « -fm », et « -m »,utilisées de différentes manières.  Ignorez-les pour l'instant.  Ces trois options lancent Edbrowse en tant que client interactif de courrier.  Nous y reviendrons. 

L'option « -dx » place le niveau de déboguage à x, où x est entre 0 et 9.  Le défaut est « -d1 », qui affiche les tailles des fichiers lorsqu'ils sont lus ou sauvegardés.  Certains préfèrent « -d2 », qui affiche l'URL lorsque vous allez à de nouvelles pages Web ou remplissez des formulaires en ligne.  À moins que vous soyez un développeur, vous n'irez probablement pas plus haut que « -d3 ».  Rappelez-vous, le niveau de déboguage peut être modifié en cours en employant la commande « dbx » (x entre 0 et 9). 

L'option « -e » force Edbrowse à quitter en cas d'erreur.  Ceci est habituellement employé par des scripts de traitements par lots.  S'il y a un problème, vous ne voudriez pas continuer ainsi en exécutant le reste des commandes de Edbrowse. 

Utilisez « -c » pour désactiver et éditer le fichier de configuration « .ebrc ».  (Ce fichier de config sera décrit plus tard).  Vous devrez le faire si votre fichier de configuration comporte des erreurs des erreurs de syntaxe, lesquelles sont affichées au démarrage de Edbrowse. Utilisez l'option -c pour modifier le fichier de configuration directement. Il est automatiquement chargé dans le tampon 1.  Noter que « -c » doit être la première option.  Faites les modifications, sauvegardez, et tapez "config" pour recharger le fichier. S'il y une autre erreur, vous devrez refaire un changement, sauvegarder, et réappliquer. Poursuivez jusqu'à ce qu'il n'y ait plus d'erreurs. La lecture du fichier de configuration s'arrête à la première erreur, ainsi vous aurez un un système propre.

Pour Edbrowse, le nom de fichier -c est traité comme le fichier de configuration. Vous pouvez changer de session, afficher, éditer, sauvegarder et manipuler le fichier de configuration sans quitter Edbrowse.

Les arguments sont les fichiers à éditer.  Edbrowse lit ces fichiers dans les sessions correspondantes, et vous commencerez en session 1.  S'il n'y a aucun argument, vous commencez en session 1, mais il n'y a aucun texte et aucun fichier associé. 

Si vous aimez ce programme, et vous voulez qu'il soit votre éditeur principal, vous pouvez placer l'alias Unix suivant :

alias e= " /usr/bin/Edbrowse "

Si vous le faites, vous pouvez employer «e nom_de_fichier», pour éditer un nouveau fichier, que vous soyez dans Edbrowse ou dans le shell Unix.  Très commode. 

Caractères binaires

À tout moment, même lorsqu'on tape un nom de fichier, le programme balaye l'entrée à la recherche de codes binaires.  Employez la séquence triple « ~bd » pour écrire le caractère non-ASCII 0xbd, valeur unicode de « 1/2 ».  En utf8, vous devrez entrer ~c2~bd pour obtenir 1/2.  De même, si vous listez une ligne, avec la commande « lna », le caractère « 1/2 » est affiché ~c2~bd.  Tout ce qui non ASCCI et la plupart des caractères de contrôle sont entrés et affichés de cette manière.  La tabulation et le retour-chariot doivent être tapés directement au clavier.  Tabulation et retour arrière sont affichés respectivement « > » et « < ».  Si la ligne ci-dessous est tapée,

« Hello~07 ~x is ~bd of y »

Et ensuite listée, vous verrez ce texte, mais il y a un bip sonore et « 1/2 » à l'intérieur.  Le ~x n'est pas codé , parce que x n'est pas un caractère hexadécimal.  Si vous voulez forcer un ~, même s'il y a des caractères hexadécimaux qui suivent, employez deux tildes, « ~~ ». 

Pour des langues étrangères, il y des moyens commodes de taper des lettres accentuées, en admettant que ces lettres font partie de la langue de votre système et que votre clavier ait été correctement configuré. En d'autres termes, il y a des raccourcis clavier pour vos lettres accentuées, ainsi vous n'avez pas à vous soucier de UTF-8. Utiliser ~u pour entrer un caractère Unicode extérieur à votre langue et non disponible avec un raccourci clavier. L'unicode est en hexa. Ainsi, ~u3b3; est la lettre grecque gamma. Le point-virgule est optionnel. Il n'est nécessaire que si un autre caractère hexa suit, comme dans ~u3b3;4 pour gamma4. hello~u1f600monde met un emoji entre hello et monde, parce que m ne peut confondu avec un caractère hexa.

Quand vous tapez une expression régulière, vous avez le choix, hexadécimal ou octal.  Ce programme convertit « ~xx » en hexadécimal, et la machinerie regexp de Perl convertit « \nnn » en octal.  Ainsi, les commandes qui suivent annuleront les fins de lignes DOS d'un fichier.  La première est traduite par Edbrowse, la deuxième et troisième par les expressions régulières de Perl. 

,s/~0d$//
,s/\15$//
,s/\r$//

Les caractères échappés sont toujours affichés en hexadécimal, que la ligne soit listée ou non.  La plupart des terminaux et des émulateurs de terminal, y compris la console Linux et mon adaptateur de parole, interprètent les séquences d'échappement comme des commandes .  Ainsi une séquence d'échappement présente dans un fichier binaire peut mettre votre terminal ou votre adaptateur de la parole dans un état inattendu, rendant le rétablissement difficile.  Il semble prudent d'afficher en permanence les caractères échappés comme caractères visibles.  Si vous n'avez aucune idée d'où ce « ~1b » est venu, c'est probablement un caractère littéral échappé. 

Les retours-chariots et les caractères nuls sont également convertis en hexadécimal.  Ainsi une ligne contenant un retour-chariot n'apparaîtra pas comme deux lignes.  Vous le verrez en important un fichier texte de DOS ou de Windows.  Chaque ligne finit par « ~0d ».  Tapez une des trois commandes ci-dessus pour effacer ces fins de lignes DOS. 

fichiers binaires

Un fichier est considéré comme binaire s'il dépasse 50 octets et s'il contient une proportion significative de caractères non-ASCII ou nuls (plus de 25%).  Les fichiers texte internationaux peuvent contenir des codes binaires dispersés, pour les lettres accentuées etc., mais la plupart des caractères devraient être en ASCII.  Par conséquent les fichiers binaires ne sont pas des fichiers texte internationaux.  En fait vous ne pourrez pas probablement afficher ou éditer des données binaires efficacement, au moins par ce programme. Mais ne vous laissez pas arrêter.  A titre d'exercice, créer un programme exécutable affichant « bonjour monde», puis éditez l'exécutable en utilisant ce éditeur.  Rechercher la chaîne « bonjour » et remplacer « monde » par « tonte ».  Sauvegardez le fichier et relancez l'exécutable.  Vous devriez maintenant voir « bonjour tonte ». 

Quand des données binaires sont lues dans le tampon, vous verrez les mots « données binaires ».  Le tampon reste « binaire », même si vous supprimez toutes les données pour les remplacer par de l'ASCII.  Vous devez employer la commande « e » pour obtenir un nouveau tampon ASCII. 

Pour la plupart d'entre nous, il n'importe pas vraiment si les données sont binaires ou ASCII.  Dans l'un ou l'autre cas, vous pouvez afficher et éditer les données, et les sauvegarder dans un fichier. 

Ce programme essaie « de se comporter correctement » sous DOS/Windows.  C'est-à-dire, il convertit les crlf et retours-chariots s'il pense que le fichier est un fichier texte ; et il laisse des données binaires intactes.  Ces distinctions sont sans objet sur Unix/Linux. 

Bien que cette approche soit satisfaisante pour l'anglais et la plupart des langues européennes, elle échoue misérablement pour les langues asiatiques, très semblables aux données binaires.  Vous pouvez neutraliser la détection binaire en tapant la commande « bd ».  Si vous parlez une langue asiatique, mettez cette commande dans votre script d'init, ainsi Edbrowse est lancé de la manière que vous voulez - traiter vos fichiers internationaux comme fichiers textes. 

Si vous parlez une langue asiatique, et si vous employez Windows, et si la détection binaire est désactivée, n'employez pas ce programme pour travailler sur des fichiers binaires, car ils seront corrompus!

Listing de répertoire, gestionnaire de fichiers

Si vous parcourez un répertoire, vous verrez une liste de tous les fichiers non cachés de ce répertoire, dans l'ordre alphabétique, selon votre locale.  Ce classement est le même qu'avec /bin/ls, et il est déterminé par la variable d'environnement LC_COLLATE.  mettez LC_COLLATE=C pour un classement ascii traditionnel.  (Employer l'option «hf» si vous voulez également voir les fichiers cachés).  Tapez « g » pour aller à un de ces fichiers ou sous-répertoires.  Tapez « ^ » pour revenir au répertoire parent.  Ceci est conforme avec le navigateur, où g est la commande go et ^ la commande de retour en arrière. On en saura davantage plus tard.  Vous pouvez traverser ainsi un arbre entier de répertoire comme si vous étiez à l'intérieur d'un gestionnaire de fichiers. 

Comme le navigateur, et comme d'autres gestionnaires de fichiers, la commande go invoquera un plugin en fonction de l'extension du fichier.  Un fichier mp3 est joué, et un fichier pdf est converti en texte lisible.  Utilisez la commande à bascule « pg » pour désactiver les plugins si vous ne voulez pas de ce comportement automatique.  Nous reviendrons sur les plugins plus tard.

Comme « ls -F », un sous-répertoire est indiqué par un slash de fin.  Ce slash ne fait pas partie du nom de fichier.  De même, le caractère appelé pipe est indiqué par « | », le lien symbolique par « @ », fichier bloc par « * », le caractère spécial par « < », et un socket par « ^ ».  Si le nom d'un fichier finit par un de ces caractères, il peut vous induire en erreur, mais pas le programme.  Edbrowse sait si « | » fait partie du nom de fichier ou si c'est un indicateur de pipe.  Puisque chaque fichier est représenté par une seule ligne du texte, Edbrowse ne peut accéder à des fichiers contenant des caractères retour-chariot dans leur nom. 

Si vous lisez un répertoire dans un fichier préexistant, c'est juste du texte.  Vous ne pouvez pas visiter ces fichiers, parce que ce sont juste des mots.  Vous devez afficher un répertoire dans une session propre ou lire un répertoire dans une session vide si vous voulez accéder aux fichiers.  Noter que vous pouvez sauvegarder le tampon dans une autre session d'édition, et de ce fait, dans cette session les mots seront juste des mots.  Cette distinction est importante dès que l'on commence à éditer du texte. 

Par défaut, les répertoires sont en lecture seule.  Si vous essayez de supprimer une ligne, et par conséquent le fichier associé, on vous indiquera que vous êtes toujours en mode lecture de répertoire.  J'essaye de vous sauver de vous-même ! Tapez « dw » pour permettre l'écriture dans un répertoire, et « dr » pour rendre le répertoire à nouveau en lecture seule. 

Quand un répertoire est en lecture/écriture, on peut supprimer des fichiers en utilisant la commande « d ».  Par exemple, « g/\.o$/d » supprime tous les fichiers objets.  Puisque ces manipulations ont des effets en dehors de ce programme, il n'est pas possible de revenir en arrière.  Quand vous faites un changement, c'est fait.  Ayant cela à l'esprit, j'ai emprunté une bonne idée de Microsoft / Apple.  Le fichier supprimé n'est pas supprimé réellement ; il est déplacé dans votre corbeille, située dans « $home/.Trash ».   (Ceci est consistant avec le Mac et beaucoup de versions de Linux.)  Ainsi si vous tapez accidentellement « ,d » et enlevez tous vos fichiers, vous pourrez les récupérer dans la corbeille.  Il est possible de programmer « cron » pour supprimer tous les fichiers de la corbeille une fois par semaine.  Ce répertoire est créé avec le mode 700, ainsi personne d'autre que vous ne peut regarder ce qu'il contient.  Si vous créez ce répertoire vous-même, mettez-le en mode 700.  Après tout, certains de vos fichiers peuvent être privés. 

Puisque cette opération est un mouvement, plutôt qu'un effacement vrai, il y a quelques restrictions provenant de votre système d'exploitation.  Si votre OS peut déplacer des répertoires, ce programme pourra supprimer un sous-répertoire aussi facilement qu'un fichier.  Le sous-arbre entier est déplacé dans la corbeille.  Assurez-vous que le cron de nettoyage est capable d'enlever des répertoires, et pas seulement des fichiers. 

Si la corbeille est sur un autre système de fichiers, le fichier est copié, plutôt que déplacé. Pratiquement, c'est la même chose; ainsi, le fichier aura les mêmes permissions, et l'heure courante de création. Les répertoires ne peuvent être copiés par ce moyen. Vous devrez copier un répertoire par vous-même, puis le supprimer, en utilisant cp -r et rm - r.

Notez que la commande dx, qui supprime réellement des fichiers, est le seul moyen de faire de la place sur le disque. Les liens symboliques et les fichiers spéciaux sont toujours supprimés : il n'y a pas beaucoup de sens à déplacer un lien symbolique dans la corbeille. 

« Pourquoi tout ceci ? » pourriez-vous demander.  « Qu'est-ce qui ne va pas avec le shell? »

Rien, tant que les noms de fichier sont petits et familiers.  Mais parfois les noms de fichier sont longs et incompréhensibles, et il est presque impossible de taper ces noms dans le shell, caractère par caractère, majuscule et minuscule, sans erreurs.  Les méta-caractères tels que * peuvent aider, mais seulement quand le fichier qui vous intéresse a un nom radicalement différent des autres fichiers du répertoire.  Ce n'est pas toujours le cas.  Supposez qu'une application produit des fichiers de log comme suit :

ProgramFooBar.-04-04-1998.06:31:59.log
ProgramFooBar.-04-11-1998.11:37:14.log
ProgramFooBar.-04-18-1998.16:22:51.log

Comment supprimer les vieux fichiers pour ne garder que le plus récent, ou les renommer sous un nom plus explicite ? Le caractère « * » est un peu risqué ; vous risquez de modifier tous les fichiers sans le réaliser.  Et ne parlons pas de ces fichiers embêtants avec les espaces ou qui ont des caractères de contrôle invisibles dans leurs noms.  Notre ami voyant appelle son gestionnaire de fichiers et clique simplement sur le fichier qu'il veut regarder ou éditer ou supprimer.  Edbrowse vous offre ce genre de puissance. 

Quand la commande de remplacement modifie le contenu, elle renomme le fichier original.  Ce dernier ne sera donc pas écrasé.  Vous ne perdrez aucune donnée.  Encore une fois, je vous protège de vous-même. 

Les commandes de recherche et de remplacement ignorent le caractère « / » de fin.  Si vous voulez renommer le répertoire « mont/ » en « montagne/ », tapez « s/$/agne/ ».  « agne » sera ajouté à « mont » parce que le caractère « / » n'est pas vraiment là. 

Supposons maintenant que vous voulez exécuter un programme quelconque sur certains de ces fichiers.  Ceci pourrait être un utilitaire d'impression, un compilateur, etc.  Parfois vous voulez renommer les fichiers à votre convenance, pour travailler dans le shell.  Mais parfois vous n'êtes pas propriétaire de ces fichiers, et parfois ils doivent garder leurs noms originaux.  Par exemple, plusieurs documents HTML reliés entre par des hyperliens, en utilisant leurs noms de fichier existants.  Ici, vous ne pouvez pas renommer les fichiers, pourtant vous voulez toujours exécuter votre programme sur un ou deux d'entre eux. 

Vous pouvez exécuter n'importe quel programme sur n'importe quel fichier sans retaper ce nom de fichier en appelant un shell.  Utilisez « kx » pour affecter l'étiquette x au fichier qui vous intéresse.  (c'est la syntaxe ed standard).  Lancez ensuite « !programme 'x » pour appeler ce programme sur ce fichier.  Ceci semble compliqué, mais c'est en fait une simple macro de substitution, programmée en quelques lignes de code.  Si 'x est présent dans une commande shell, et n'est pas suivi ou précédé de chiffres ou lettres, il est remplacé par le texte présent sur la ligne étiquetée x.  Si votre nom de fichier contient les espaces, tapez '!programme « 'x », pour assurer que le nom de fichier entier est l'argument du programme appelé. 

Le token « '. » est remplacé par le contenu de la ligne courante, et le token « '_ » est remplacé par le nom de fichier courant.  Si vous essayez de sauvegarder un fichier en lecture seule, vous pouvez autoriser l'écriture en tapant « !chmod +w '_ », puis sauvegarder votre texte. 

Vous pouvez expanser des tokens multiples dans une commande shell.  Employez « kx » et « ky » pour étiqueter deux fichiers que vous voulez comparer, et lancez alors « !diff 'x 'y ». 

En mode répertoire, la commande ls affiche différents attributs du ficheirt sue la ligne courante. Tapez lsl pour la longueur, lss pour la taille approximative, lst pour la date de modification, lsp pour les permissions, lsi pour l'inode, lsk pour le nombre de liens durs, lsy por le chmein associé à ce lien symbolique, ou lsm pour les nombres majeurs et mineurs. (les 5 derniers ne s'appliquent pas à Windows). Ceux-ci peuvent être combinés : par ex. lspk affiche les permissions et le nombre de liens en dur. ls est identique à lsst, taille et date de modification.

Si vous voulez afficher la longueur et la date pour chaque fichier dans un listing de répertoire, alors tapez ls=lt. Le signe égal applique la directive ls à tous les parcours de répertoire. Tapez ls= pour désactiver ceci. Ci-dessous, voici comment le répertoire racine s'affichera avec ls=lt.

bin@/ 36864 Aug 31 2015 16:20
boot/ 4096 Dec  4 2014 07:54
cd/ 4096 Nov 30 2014 09:38
dev/ 3560 Sep  3 2015 05:00
etc/ 4096 Sep  3 2015 05:00
home/ 4096 Mar 10 2015 07:52
lib@/ 53248 Aug 31 2015 16:20
lost+found/ 16384 Dec 10 2014 15:32
opt/ 4096 Jan 12 2015 04:36
proc/ 0 Sep  3 2015 04:59
root/ 4096 Mar 10 2015 07:37
run/ 740 Sep  3 2015 05:00
sbin@/ 12288 Jul 14 2015 10:43
sys/ 0 Sep  3 2015 04:59
tmp/ 260 Sep 24 2015 11:05
usr/ 4096 Jan 12 2015 04:47
var/ 4096 Sep  3 2015 04:59

Toutes les entrées dans le répertoire racine sont des répertoires, ainsi se terminent-elles toutes par /. La première entrée est bin@/ parce que bin est un lien symbolique vers /usr/bin (la plupart des sytèmes sont ainsi configurés) et /usr/bin est un répertoire. La taille de /proc est 0, parce que /proc est un système de fichier virtuel. Idem pour sys.

Si vous recherchez l'année 2014, vous ne trouverez rien, parce que la date et l'heure sont des infos supplémentaires ne faisant pas partie du nom de fichier. Si vous voulez voir ce répertoire comme du texte, sauvegardez-le dans un fichier, ou dans une autre session.

Majuscules et minuscules

La commande « lc » convertit une ligne en minuscules, et « uc » en majuscules.  Les utilisateurs de Perl reconnaîtront ces commandes.  Par extension, « mc » convertit en casse mélangée, mettant en majuscule la première lettre de chaque mot, et le « d » de « mcdonald. 

C'est particulièrement utile dans un parcours de répertoire.  La dernière chose qui doit préoccuper une personne aveugle est de se demander si certaines des lettres dans un nom de fichier sont majuscules.  Si on peut écrire dans le répertoire, taper « lc » convertira tous les noms de fichier en minuscules. C'est tout simple. 

Si vous voulez mettre en majuscules un mot particulier, tapez « s/mot/uc/ ».  Ceci convertit le mot en majuscules.  Tous les autres suffixes de substitution s'appliquent.  Pour changer foo, Foo, FOo, FOO en FOO, partout, tapez « ,s/\ bfoo\b/uc/ig ». 

Fin de ligne

La commande « bl » découpe la ligne courante en phrases et expressions, chacune d'environ 70 caractères de long.  Elle comprime les espaces et supprime les espaces en fin de ligne.  Si la ligne contient les caractères retour-chariot, ceux-ci sont transformés en séparateurs de ligne - endroits où la ligne sera certainement définitivement coupée.  Les seuls espaces préservés sont les étiquettes ou les espaces en début de ligne, ou après chaque caractère retour-chariot.  C'est une modeste tentative pour maintenir le texte indenté, à supposer que cela ait du sens. Une fois bl exécuté, les lignes physiques contiendront des phrases ou énoncés, délimités par la ponctuation, ou par le saut de ligne/retour-chariot présent dans le texte original.

Si l'une des lignes originales, délimitée par un retour-ligne ou chariot, est longue, c'est-à-dire plus de 120 caractères, on suppose que c'est un paragraphe d'un seul tenant, et on ajoute un interligne avant et après. Ainsi un paragraphe découpé contenant 20 phrases n'est pas fusionné au prochain paragraphe contenant 18 phrases supplémentaires. Une ligne vide sépare les deux paragraphes. Ceci est seulement applicable si « bl » est appliqué à un ensemble de lignes, ou le document entier, ce qui arrive quand on rend lisible un document importé.

Ne pas appliquer la commande « bl » à une section préformatée, telle qu'une table ou de l'ASCII art. Si vous n'êtes pas sûr du résultat, c'est-à-dire si vous n'avez pas écrit le document, ne sauvegardez pas le fichier, parcourez-le, et appliquez « bl » aux seules lignes de texte. 

Vous pourriez être tenté d'utiliser bl pour rendre un document Word lisible : utilisez plutôt catdoc, il fait un meilleur travail.  Ce programme est un must pour les personnes qui veulent un environnement en ligne de commande. 

Comportement

Supposez que vous sauvegardiez un fichier, et Edbrowse tronque le fichier existant, puis l'ordinateur plante avant que Edbrowse puisse écrire les nouvelles données.  Quand vous rallumez l'ordinateur, votre fichier est vide, zéro octets, et tout votre travail est perdu. 

C'est une fenêtre étroite : l'ordinateur plante précisément à la milliseconde où il ne faut pas.  Pour se garder de cette improbable calamité, quelques éditeurs écrivent vos données dans un fichier temporaire, effacent l'original, et renomment le fichier temporaire sous son vrai nom.  De cette façon vos données ne peuvent être perdues.  Le nouveau ou l'ancien fichier survivra. 

Alors les liens sont apparus, les liens durs, et puis les liens symboliques.  Les auteurs de ed, et d'autres éditeurs, ont dû se débrouiller.  Vous ne pouvez pas enlever le lien, écrire un fichier temporaire, et remplacer le lien par le fichier temporaire.  Ce n'est plus un lien, c'est un fichier régulier, et votre système de fichiers n'est pas prévu pour cela.  Le vrai fichier, pointé par le lien (symbolique), n'a pas été modifié du tout.  Ce n'est pas ce ce que vous vouliez ! Ainsi on a récrit ces éditeurs pour neutraliser ce dispositif si le fichier appelé est un lien vers un autre fichier.  Ils ont dû retourner de nouveau au vieux paradigme troncature/réécriture, espérant que rien de mauvais ne se produira dans l'intervalle.  Et ça marche, le mauvais n'arrive jamais.  La fenêtre est trop étroite, tout simplement. 

Dans cette optique, Edbrowse ne s'encombre pas avec des fichiers temporaires.  Il tronque le fichier et écrit les données, et espère que rien ne tournera mal pendant la milliseconde critique. 

Un autre comportement est plus subtil.  Supposez que vous éditez un fichier et votre ami, ou un programme système, édite le même fichier. Vous avez réellement modifié votre fichier.  Quand vous allez sauvegarder vos changements, ils écraseront tous les changements faits par votre ami, ou l'utilitaire système.  La plupart des éditeurs de texte se gardent de ceci en observant l'heure. Quand vous commencez à éditer le fichier « foo », l'éditeur mémorise l'heure.  puis, quand vous êtes prêt à sauvegarder vos changements, il vérifie l'heure, et si « foo » a été mis à jour dans l'intervalle, il vous avertit.  Le « fichier a été mis à jour par quelqu'un d'autre – voulez-vous l'enregistrer ? » C'est un bon dispositif, mais Edbrowse ne l'a pas, simplement parce que je n'ai pas jugé bon de l'implémenter.  Ce dispositif n'est pas très demandé. 


Chapitre 4, Navigateur Web

Accès à une URL

Au lieu de lancer « e nom de fichier », vous pouvez lancer « e http://this.that.com/file.html », et l'éditeur recherchera le fichier appelé en utilisant le protocole HTTP.  Le source (c'est-à-dire l'HTML brut) est disponible pour édition.  Vous pouvez le modifier et le sauver sur votre machine locale.  Puisque le texte est importé d'une autre machine, il ne peut pas être sauvegardé sur cette machine, par conséquent la commande « w » ne fonctionnera pas.  Vous devrez indiquer un fichier local « w monfichier.html », ou une session d'édition différente « w3 ». 

Noter que ceci n'est pas de la navigation Internet, nous recherchons simplement le texte sur une autre machine et l'éditons localement.  Le texte n'est pas obligatoirement du HTML, il pourrait être (par exemple) un document ASCII.  Beaucoup de gens ont mis divers types de fichiers, même des exécutables, sur leurs sites Web pour téléchargement.  Naturellement vous ne pourrez pas éditer un fichier binaire, mais vous pouvez encore employer Edbrowse pour rechercher le fichier et le sauvegarder localement, mettant en application un téléchargement HTTP. 

A l'intérieur de l'éditeur, vous pouvez taper « e URL», abandonner le tampon courant et rechercher le texte d'une machine distante.  Ou vous pouvez taper « r URL » pour rechercher le texte à distance et l'ajouter au tampon courant.  Il n'y a aucune commande « w URL », parce que le protocole de HTTP ne vous permet pas d'écrire du source HTML sur une machine distante. 

Pour simplifier, n'importe quel nom de fichier avec deux ou plusieurs points incorporés et un suffixe standard (tel que .com ou .net) est traité comme une URL.  Vous pouvez habituellement omettre le préfixe http://.  Par exemple, essayez d'appeler « e www.space.com ».  Mais encore une fois, vous regardez le source HTML, ce qui n'est probablement pas ce que vous voulez. La navigation sera examinée plus loin. 

Chaque fois que vous récupérez des données d'une URL, l'éditeur, contrôlé par le protocole HTTP, peut changer le nom du fichier appelé.  C'est parce que la ressource s'est déplacée, et l'ordinateur original était assez aimable pour donner la nouvelle adresse.  Si le niveau de déboguage est placé à 2 ou plus, vous pourriez voir une série de trois ou de quatre URLs différentes pendant que l'éditeur est redirigé à travers l'Internet.  Enfin il récupère votre document, et le nom de fichier courant contient l'URL correct (le dernier). Vous pouvez mettre à jour votre fichier de signets en conséquence.  D'un autre côté, vous ne devriez pas.  Parfois l'URL initial est l'endroit « public » de la page Web, et les redirections suivantes se produisent à l'intérieur de la compagnie.  Dans ce cas, il faudra garder l'URL public original, qui fonctionnera toujours, même si la compagnie déplace son serveur Internet. Jugez-en par vous-même. 

Mode navigation

Si l'éditeur contient du HTML, de n'importe quelle origine, vous pouvez taper « b » pour activer le mode navigation.  La commande sera refusée s'il n'y a pas dans le tampon les tags communs HTML, ou si l'éditeur est déjà dans le mode navigation.  Vous pouvez forcer la navigation en ajoutant <html> au début du tampon, ou n'importe quelle autre tag identifiable – Edbrowse essayera toujours de convertir un tel fichier.  Maintenant le texte transformé est lisible, sans tags HTML.  En d'autres termes, le <P> a été transformé en coupure de paragraphe, <OL> est devenu une liste numérotée, et ainsi de suite.  Le nom de fichier est également modifié ; le suffixe « .browse » a été ajouté.  Si vous sauvegardez les données transformées, délibérément ou accidentellement, le texte restructuré sera archivé dans un nouveau fichier, quelquechose.html.browse, sans toucher au fichier HTML original.  Ceci vous protège si vous développez vos propres pages Web. 

Durant la conversion vers le mode navigation, le système vérifie les erreurs communes de syntaxe, telles qu'une liste numérotée non fermée.  Si le nom de fichier est une URL, ces erreurs de syntaxe ne sont pas affichées.  Après tout, ce n'est pas votre page Web, et vous n'y pouvez rien.  Cependant, si la page Web est à vous, comme indiqué par un nom de fichier local, la première erreur de syntaxe est affichée, d'où vous pouvez retourner au source HTML et la corriger.  Tapez « ub » pour désactiver le mode navigation.  Vous revenez au texte brut HTML sous son nom de fichier original.  Maintenant vous pouvez corriger l'erreur et de nouveau essayer la commande « b ». Pour vous faciliter la tâche, l'étiquette « 'e » est placée à la ligne contenant l'erreur.  Répétez ce processus jusqu'à ce que « b » fonctionne sans erreurs. 

Si vous essayez de quitter, et que l'éditeur vous dit « w attendu », rappelez-vous que vous devez revenir dans l'éditeur HTML brut avant de lancer la commande de sauvegarde.  Vous pourriez modifier le texte dans lequel vous naviguez sous le nom fichier.browse, pour satisfaire au critère de sauvegarde, mais ce n'est pas vraiment ce que vous voulez.  Vous avez corrigé des erreurs dans le source HTML, et c'est ce source que vous devez sauver, aussi souvenez-vous de sortir du mode navigation avant de sauvegarder le fichier. 

Notez que vous pouvez sortir du mode navigation même s'il n'y a pas d'erreur.  Si, par exemple, vous consultez une page correctement construite sur un autre site Web, et voulez lire ou sauvegarder le HTML brut, tapez simplement « ub ».  A titre d'exercice, appelez « e www.space.com », et employez les commandes « b » et « ub » pour commuter entre le HTML brut et la page navigable. 

La mise en page dans le mode navigation est relativement simple. La plupart des tags est ignorée, à l'exception des en-têtes, paragraphes, et listes.  Les sous-sections et les items de liste ne sont pas indentés.  L'effet visuel n'est pas important, et parfois les espaces supplémentaires disparaissent. 

Puisque la ligne physique est, pour nous, l'unité de base, c'est-à-dire la construction atomique modifiable, déplaçable ou copiable, les lignes sont tronquées à environ 80 caractères, habituellement en fin de phrase ou d'expression.  Ainsi la lecture ligne par ligne se fait souvent selon l'ordre des phrases.  Pour moi, c'est la manière optimale de regarder ou éditer un document -- tout document.  Si vous lisez la version brute de ce manuel, sans naviguer dans le fichier, vous verrez ce que je veux dire.  Revoyez la commande de coupure de ligne ci-dessus. 

La disposition d'une section préformatée, <pre>, est conservée, bien que des ordres des interlignes soient comprimés vers le bas à un interligne, et l'espace à la fin des lignes est enlevé.  Ceci préserve la structure des adresses de rue, et d'autres blocs préformatés. 

Les tables sont formatées comme une exportation ASCII d'un tableur ou d'une base de données SQL.  Le caractère « pipe » (barre verticale) sépare les champs sur chaque ligne.  Il n'y a pas d'espaces autour des pipes, et les champs d'une ligne donnée ne seront probablement pas alignés avec les champs de la ligne suivante.  Ce n'est pas joli, mais un utilisateur aveugle ne peut pas vraiment parcourir en une colonne de bas en haut de toute façon, particulièrement en utilisant un éditeur ligne de ce type.  Il vaut mieux sauvegarder la table dans un fichier local et utiliser les instructions d'extraction, de tri, de fusion etc.  Voici un exemple de table. 

numéro de pièce|quantité|prix
2635|2|34.80
1398|1|67.50
8118|5|125.00

Les champs vides en fin de ligne sont ignorés.  Ce sont presque toujours des images -- parfois une ligne entière d'images -- parfois une table entière d'images.  L'utilisateur aveugle n'a pas besoin de lire les champs vides. 

Notez que le fichier navigable est en lecture seule.  Après tout, ce n'est pas le « source » -- pourquoi devriez-vous l'éditer ? Il y a des moyens de remplir et éditer les zones de saisie d'un formulaire, qui seront vus plus tard.  En attendant, considérez le texte comme non modifiable.  Le lancement d'une commande de copie, d'insertion ou de remplacement, g énérera une erreur. 

Si vous voulez éditer le texte, comme texte brut, tapez « et » (éditer comme texte).  Vous ne pourrez plus revenir à la page HTML d'origine.  Ni suivre un lien hypertexte ou remplir un formulaire.  Le texte navigable est devenu un texte plat, sans la sémantique d'Internet. 

La commande « b fichier.html » est un raccourci pour « e fichier.html », suivi de « b ».  Se rappeler que la commande « ub » sort du mode navigation, et revient au texte original HTML, comme si vous seul aviez tapé « e file.html ». 

Si une URL est appelée à partir de la ligne de commande, comme dans « e www.google.com », on passe automatiquement en mode navigation.  Tapez « ub » pour revenir au code HTML brut. 

Technique, maths

La plupart des personnes ne lisent jamais sur l'Internet les pages techniques, mais si cela vous arrive…

Un indice inférieur, repéré par un tag HTML, est mis entre crochets.  Ainsi x<span class=sub>n</span> devient x[n].  (span.sub devrait traduire la propriété subscript correctement dans votre fichier css - en fonte basse et réduite).  Cette transformation n'est pas effectuée si l'indice est un nombre à un ou deux chiffres.  Ainsi x indice 1 est affiché x1, comme votre professeur le dirait.  Ce n'est pas ambigu, comme vous pourriez d'abord penser ; seuls les programmeurs emploient x1 comme nom de variable, pas les mathématiciens.  Si vous voyez x1 dans une formule, elle signifie l'indice 1 de x.  Même 17a3b3 n'est pas ambigu ; c'est une traduction de 17 fois a[3] fois b[3]. 

Les indices supérieurs, indiqués par <span class=sup> sont mis entre parenthèses, précédés d'une flèche.  Les parenthèses sont ignorées si l'indice supérieur est un nombre.  Ainsi x au cube donne x^3, alors que x à la puissance n-1 donne x^(n-1).  Ici encore, votre fichier css devrait définir span.sup.

Edbrowse supporte la traduction de certains &mots; clés en html, comme &lt; pour le signe inférieur, Il y a, c'est triste à dire, trois manières différentes de coder des symboles mathématiques en HTML.  les &#code: ou &#xcode pour inclusion directe d'unicodes en html.  La lettre grecque thêta peut être codée comme &theta; ou &#952;, ou &#x3b8;.  Dans chaque cas c'est traduit en séquence utf8 pour theta.  Votre lecteur d'écran devrait être capable de le restituer dans le terme theta, peut-être selon les directives d'un fichier de configuration.  Ce type de traductions est laissé à l'adaptateur, Edbrowe le traduit simplement le html dans les bonnes séquences utf8. 

Ces traductions sont conçues pour fonctionner avec les pages du Math Reference Project, des archives de mathématiques avancées qui essaient simultanément d'être accessibles aux aveugles et voyants. 

Titre, description, mots-clés

En mode navigation, les commandes « ft », « fd » et « fk » affichent respectivement le titre, la description, et les mots-clés de la page Web courante.  Normalement, ces données sont cachées à l'utilisateur.  Le titre décrit la page Web en 80 caractères ou moins.  La description est une explication plus complète, affichée par un moteur de recherche tel que yahoo ou altavista.  L'utilisateur lit la description affichée par le moteur de recherche et décide alors de lire cette page Web.  Les mots-clés sont employés par des moteurs de recherche pour faciliter des recherches par mot-clé.  Comme le reste de la page, ces trois attributs sont non modifiables.  Si c'est votre page Web, vous pouvez les modifier en revenant au mode HTML brut.  Les concepteurs Web devraient prêter une attention particulière à la description et les mots-clés, sans quoi leurs pages pourraient être inaccessibles via les moteurs de recherche standards. 

Notez que « ft » affiche le titre de la page Web, tandis que « f t » (avec un espace) renomme le fichier courant en « t », ce qui n'est probablement pas ce que vous souhaitez. 

La commande de réaffichage

Tapez « rf » pour réafficher la page courante.  Ceci relit le fichier ou l'URL dans le tampon courant.  Il ne provoque pas de nouvelle session d'édition sur la pile.  C'est analogue au bouton de réaffichage de Netscape et Internet Explorer. 

Si une page Web est mise à jour chaque minute, par exemple avec les derniers cours des actions de vos compagnies préférées, vous pouvez taper « rf » pour récupérer la dernière version de cette page Web.  Ceci suppose que les serveurs Internet ne mettent pas en cache la page Web et ne vous redonnent pas la même copie démodée à plusieurs reprises. 

Sur votre machine locale, vous pouvez employer ce dispositif pour lire la dernière version d'un fichier dynamique, tel qu'un fichier de log.  Ou vous pouvez relire un répertoire, pour lister les nouveaux fichiers qui ont été placés dans ce répertoire.  Par exemple, vous pourriez lancer un shell pour exécuter « cat x y >z », z n'apparaîtra pas dans votre listing du répertoire tant que vous n'aurez pas tapé « rf ». 

Hyperliens

Un lien vers une autre page Web est mis entre accolades, comme ceci :

{Des rapports récents} suggèrent un lien entre la santé et les bactéries intestinales. 

En coulisses, « Des rapports récents » est lié à http://www.sciam.com/article.cfm?id=jeremy-nicholsons-gut-instincts, mais vous ne le voyez pas, à moins d'activer le lien ou d'afficher le code HTML. 

Naturellement le texte navigable pourrait également contenir des mots entre accolades, particulièrement si la page Web est de nature technique.  Par conséquent, il y a une certaine ambiguïté.  Cependant, je crois que le contexte lève l'ambiguïté.  {Plus d'information} est probablement un lien, tandis que ${HOME}/.profile ne l'est probablement pas. 

Certaines pages Web présentent une série d'icônes qui sont des liens vers d'autres pages.  C'est-à-dire, vous cliquez sur une icône, plutôt que sur une expression, pour aller ailleurs.  Ces icônes sont supposées être intuitives.  Parfois elles le sont -- parfois non.  Parfois le concepteur Web est assez aimable pour fournir un texte décrivant l'image.  Dans ce cas, l'expression est employée comme lien.  S'il n'y a pas d'expression alternative, on utilise le nom de la cible de l'hyperlien.  Ce nom peut être étonnamment utile, ou tout à fait inutile, comme dans « index.html ».  Si on ne peut déterminer un nom, le lien générique {image} est employé.  Dans ce cas, vous devrez aller à la page Web pour découvrir ce qu'il contient. 

Notez qu'une image ne faisant pas partie d'un hyperlien voit sa composante texte "alt" affichée entre crochets comme dans [fille avec une longue tresse rouge]

Pour suivre un lien, tapez la commande « g » (go).  Oui, « g » lance également une commande globale, telle qu'une recherche/remplacement globale, mais seulement s'il est suivi d'une expression régulière.  De lui-même, « g » suit le lien sur la ligne courante, « g2 » suit le deuxième lien sur la ligne courante, et « 4g » suit le lien sur la ligne 4.  Si un lien s'affiche sur plusieurs lignes, vous devez être sur la première ligne, celle qui contient l'accolade gauche. 

La commande g peut également agir sur un lien affiché en mode texte brut, s'il « semble » être une URL valide.  Si un ami vous envoie une URL intéressante par mail, et que vous ayez sauvegardé ce mail, vous pouvez « aller » à ce lien, même si le fichier n'est pas en HTML, et même si vous n'avez pas activé le mode navigation. 

Liens internes

Bien que la plupart des liens mènent à d'autres pages Web, quelques liens pointent sur d'autres sections dans le document courant.  Cette fois encore, le contexte peut vous aider.  Les liens dans une table des matières sont habituellement des renvois aux chapitres dans le document courant.  Même chose pour les liens qui ressemblent à : « voir {annexe I} », ou « voir la section {configuration de matériel} ». 

La commande « g » suit un lien interne ou un lien externe.  Dans l'un et l'autre cas, vous vous trouverez dans un endroit différent.  Cependant, si le lien est interne, vous êtes toujours dans le même fichier.  En fait, la seule chose qui a changé est la ligne courante.  La nouvelle ligne est affichée, et devrait correspondre au lien que vous avez activé.  Souvent les mots sont identiques.  « Activer {appendice I} », et vous verrez probablement le titre « appendice I » de la section.  Tapez z10 pour lire les premières lignes de l'appendice. 

La touche retour arrière

Si vous éditez un nouveau fichier par l'intermédiaire des commandes « e », « b », ou « g », et que vous avez déjà du texte dans le tampon, ce texte est empilé sur une pile interne.  Vous pouvez « dépiler » le texte par la commande « ^ ».  C'est supposé être intuitif -- la flèche haute se dirigeant à la page précédemment affichée à l'écran. 

Ce dispositif semble plutôt idiot lorsqu'on est en mode édition, mais il se comprend en surfant sur l'internet.  Souvent nous descendons en suivant deux ou trois liens, pour finir par nous trouver dans un cul-de-sac.  « Je n'ai pas voulu aller ici.» En tapant la touche retour arrière à plusieurs reprises, nous reviendrons en territoire familier.  Nous pouvons maintenant partir dans une nouvelle direction.  La commande « ^3 » ou le « ^^^ » revient trois pages en arrière.  N'employez pas ce dispositif itératif à moins que vous sachiez exactement où vous voulez revenir. 

Notez que l'état entier d'une session d'édition est mémorisé et reproduit, y compris le nom de fichier, la dernière recherche/remplacement, les chaînes de substitution, les hyperliens et des formulaires, le javascript compilé, tout !

La pile ne doit pas être confondue avec l'édition simultanée de plusieurs fichiers, décrite dans la première section.  En fait chaque session d'édition, e1 e2 e3…, a sa propre pile interne.  Les sessions simultanées sont appropriées quand vous devez se déplacer dans les deux sens entre deux fichiers, ou copier/coller entre eux.  Cependant, une session, avec sa pile interne, est habituellement suffisante pour surfer sur l'internet. 

Si une commande de navigation échoue, vous donnant un tampon vide sans intérêt, on dépile automatiquement, en réaffichant la page Web précédente.  Maintenant vous pouvez réessayer le lien par « g », ou suivre un lien différent .  Noter qu'une commande de navigation peut échouer, et donner la cause de l'échec, si le serveur à distance est bien conçu.  Dans ce cas, vous pouvez avoir le message d'erreur « fichier non trouvé » et vous trouver sur une nouvelle page Web, laquelle explique le problème.  Après avoir lu l'explication, suivre ses indications, ou tapez « ^ » pour revenir et essayer de nouveau. 

Si un nombre est affiché, même égal à 0, le texte précédent a été mis sur la pile, et vous êtes dans un nouveau fichier.  Le nombre affiché est la taille du nouveau fichier.  Employer la commande « ^ » pour revenir en arrière.  S'il n'y a pas de nombre, simplement un message d'erreur, alors Edbrowse n'a pas créé de nouveau tampon.  Il n'a pas obtenu le texte recherché.  Taper «.» réaffichera la ligne affichée auparavant. 

Suivre un lien interne à une autre section dans le document courant ne pousse rien sur la pile.  En d'autres termes, « ^ » ne vous renverra pas où vous étiez.  En fait, il vous renverra à la page Web précédente, ce qui n'est pas ce que vous vouliez.  Si vous voulez jeter un coup d'oeil à l'annexe I, puis revenir, marquer la position actuelle avec « kr ».  Après avoir visité l'annexe, employer l'étiquette « 'r » pour revenir où vous étiez dans le fichier. 

La commande M

Si vous voulez lire et/ou agir simultanément sur plusieurs pages Web en parallèle, lesquelles sont normalement placées sur la pile, vous pouvez les déplacer une à une dans une autre session en utilisant la commande « M » majuscule.  Les étiquettes et les liens sont transférés également.  Une fois que la page Web a été transférée sur une autre session, Edbrowse lance automatiquement la commande « ^ ».  Vous êtes de nouveau à la page précédente. 

Il est généralement peu sûr de faire une copie d'une page Web courante, avec ses objets Javascript etc. , aussi la commande M déplace la page et la met à l'écart, puis vous renvoie la page précédente.  Notez, cette commande fonctionne aussi bien avec des fichiers. 

Supposons qu'une page Web affiche

{avions}
{trains}
{automobiles}

Si les trois rubriques vous intéressent, tapez ces commandes dans l'ordre :

1g
M2
2g
M3
3g
M4

Maintenant les sessions 2 3 et 4 sont les sous-pages traitant respectivement des avions, trains et automobiles.  Vous pouvez remplir des formulaires ou suivre des hyperliens dans n'importe laquelle d'entre elles, ou rester en session 1 et faire autre chose. 

Musique de fond

Si vous essayez d'écouter un synthétiseur de parole, la dernière chose dont vous avez besoin est une musique de fond.  Au lieu de jouer la chanson, je la rends disponible par un hyperlien. 

{Background Music}

Ce lien apparaît toujours en début de page ou près du début.  Cliquez sur ce lien pour entendre la musique.  Elle devrait être jouée automatiquement si vous avez le bon plugin configuré.  S'il n'existe pas de plugin pour ce type particulier de fichier, ou si les plugins sont désactivés, alors Edbrowse téléchargera le fichier audio dans le tampon courant.  Vous pouvez l'enregistrer dans un fichier, ou le faire jouer d'une autre façon.  Essayez la commande « pb ».  Normalement, « pb » prend le nom du fichier pour reconnaître le format audio.  Si le nom de fichier finit par .wav, c'est un fichier son, et on continue.  Si cela échoue, Edbrowse cherche à inférer le type de fichier par l'attribut "Content-Type" de l'en-tête http.  Si le nom de fichier n'est pas particulièrement parlant, et que vous connaissez son format audio, vous pouvez le spécifier en tapant « pb.wav » pour un fichier de wav, « pb.mp3 » pour un fichier mp3, et ainsi de suite.  Le fichier de configuration (décrit plus loin) inclut le type des descripteurs de fichiers, qui indique à Edbrowse comment jouer les fichiers wav, mp3, etc.  Ceux-ci doivent être configurés, sans quoi la commande « pb » ne fonctionnera pas.  Elle affichera quelque chose comme « je ne sais pas traiter un fichier mp3 ».  C'est conforme à d'autres navigateurs, qui emploient des extensions pour jouer les fichiers multimedia en provenace de l'internet. 

Zones de saisie

Les zones de saisie d'un formulaire en ligne sont indiqués par les signes « < » et « > ».  Par exemple, un moteur de recherche pourrait présenter le formulaire suivant :
Mots-clés : <>
Recherche avançée : <->
Langue : <en>
Rechercher maintenant : <GO>
Effacer : <RESET>

La première ligne de cet exemple de formulaire est une zone de texte, initialement vide.  Vous y entrez les mots-clés recherchés.  Écrire et éditer des zones de saisie sera discuté plus tard.

La deuxième ligne est une boîte à cocher.  Ce champ indique au moteur de recherche qu'il faut employer des dispositifs booléens avancés, comme ce mot-clé et ceci, ou cela, mais pas ceci, etc.  Le bouton est inactif, indiqué par -.  (La plupart des personnes ne savent pas employer la recherche avancée de toute façon).  Un + signifie que le bouton est activé. 

La troisième ligne détermine la langue des mots-clés, ici anglaise par défaut.  Ce n'est pas une zone de texte à remplir, vous ne pouvez y entrer n'importe quoi.  C'est une liste déroulante de langues.  Nous décrirons comment regarder les options plus tard. 

La quatrième ligne est le bouton de soumission, qui envoie le formulaire au moteur de recherche et renvoie les résultats.  Ce « champ » ne peut pas être édité ; c'est simplement un bouton à pousser. 

La cinquième ligne est également un bouton à pousser.  Il efface toutes les données que vous avez saisies, pour recommencer une recherche.  Les valeurs par défaut seront reconstituées.  Ainsi la troisième ligne va de nouveau à <en>, plutôt qu'à <>. 

Saisie de données

Compléter un formulaire est relativement facile, une fois que vous connaissez la commande (surchargée) « i ».  Oui, « i » par lui-même est la commande d'insertion de texte, mais dans le mode navigation, « i » se rapporte aux zones de saisie. 

S'il y a une seule zone de saisie sur la ligne courante, « i? » donne des informations sur cette zone de saisie.  Si la ligne contient plusieurs zones de saisie, vous devrez employer un nombre, comme « i3? » pour le troisième champ.  Le type de zone de saisie est affiché, puis sa taille, puis le nom de la zone.  Si la zone de saisie est un choix multiple, la liste des choix possibles est affichée, avec leur numéro d'ordre au début.  Pour choisir une option, vous pouvez soit taper les premières lettres comme « mich » pour le Michigan, soit taper son numéro.  Inutile de le dire, la deuxième solution est souvent plus facile.  Rappelez-vous le formulaire exemple dans la section précédente.  Si vous tapez « i? » au troisième champ, vous pourriez voir ce qui suit

choisir[7] la langue
1: anglais
2: français
3: allemand
4: italien
5: espagnol

Si une liste contient des centaines d'options, tapez « i?chaîne » pour voir les options qui contiennent la chaîne indiquée.  Tapez « i?ma » dans une zone de saisie des départements et vous obtiendrez la Marne, la Manche, la Mayenne etc.  Alors vous pourrez choisir l'option que vous voulez par son nom ou son numéro. 

Maintenant un peu de saisie de données.  Tapez « i=xyz » pour entrer « xyz » dans la zone de saisie.  Rappelez-vous, vous devez taper « i3=xyz » pour mettre l'information dans la troisième zone de saisie sur la ligne courante.  Si vous obtenez une erreur, c'est probablement parce que le champ a un ensemble fixe d'options, et vous n'avez pas sélectionné une de ces options.  Vous pouvez saisir une des options ou son numéro.  Vous pouvez également saisir un fragment du texte de l'option désirée, et Edbrowse complétera le reste.  C'est possible à chaque fois qu'une et seulement une option contient une copie (insensible à la casse) de la chaîne que vous avez tapée.  Ainsi vous pourriez dans l'exemple ci-dessus taper « tali » et obtenir l'italien, puisque c'est la seule option contenant ces quatre lettres.  C'est utile quand on vous demande votre adresse, et votre pays.  Saisir suffisamment de lettres de votre pays, et vous tomberez probablement sur l'option correcte dans la liste.  Noter le paradigme ici : les personnes aveugles ne veulent pas patauger dans un menu à moins d'y être absolument obligées !

Il y a une certaine ambiguïté quand l'option est elle-même un nombre.  Dans ce cas-ci j'exécute trois comparaisons.  Si vous saisissez le nombre exact, cette option est choisie.  Si le nombre que vous avez tapé n'est pas une des options, il est traité comme numéro d'une entrée de menu.  Si ce n'est pas un numéro valide du menu (par exemple hors de la gamme), je fais une comparaison partielle avec les options, recherchant ces chiffres comme sous-chaîne.  Ceci peut sembler confus, mais c'est habituellement ce que vous voulez obtenir. 

Si vous ne souhaitez pas voir votre mot de passe affiché lors de la saisie, vous pouvez utiliser « ipass » (ou par exemple « ipass2 » s'il s'agit du deuxième champ) pour être invité à saisir le contenu du champ de manière cachée. Le texte renseigné avec ipass ou pour les formulaire de type mot de passe est restitué sous forme d'asterisques, et ne sera jamais affiché par la suite.

Vous pouvez employer i<7 pour amener le contenu de la session 7 dans la zone de saisie courante.  La session 7 doit avoir une ligne de texte.  De même, « i<nom de fichier » lit le contenu du fichier dans la zone de saisie courante.  Ici aussi, le fichier doit contenir une ligne de texte.  Le nom de fichier est expansé de la manière habituelle.  Ceci inclut l'expansion de caractères « joker », tant que l'expansion mène à un et seulement à un fichier.  Mettre suffisamment de caractères autour du « * » pour indiquer un fichier unique. 

Supposez maintenant que vous tapiez votre numéro de carte bancaire, chacun des 16 chiffres, dans la zone de saisie de texte.  Si vous avez fait une erreur, vous ne voulez pas retaper la chaîne entière.  Aucun problème -- employez la commande remplacement.  Vous pouvez le faire en tapant « i/x/y/ » ou « s/x/y/ » -- comme vous préférez.  Rappelez-vous, il vous faudra peut-être indiquer la zone de saisie, comme « s3/x/y/ ».  La syntaxe habituelle de substitution fonctionne.  Ne croyez pas à une excessive généralisation du suffixe « g » .  « s3/x/y/g » remplace chaque « x » par « y » dans la troisième zone de saisie, mais n'affecte pas les autres champs de la ligne courante. 

Si le bouton de soumission est le troisième champ sur la ligne courante, vous pouvez l'activer par « i3* ».  Cependant, « i* » est suffisant lorsqu'il y a un seul bouton sur la ligne.  De même, vous pouvez remplir une zone de texte en tapant « i=kangourou », plutôt que « i1=kangourou », si le deuxième champ sur la ligne courante est un bouton de soumission.  Vous devez seulement indiquer un numéro de zone de saisie ou de champ quand il y a plusieurs zones de saisie de texte, ou plusieurs boutons, sur la ligne courante. 

Zones de texte

Quelques formulaires Internet vous permettent de taper quelque chose librement, du genre « écrivez svp vos commentaires ici ».  Ceci se fait dans une fenêtre à l'écran, ayant un nombre fixe de lignes et de colonnes, bien que ce soit habituellement une contrainte artificielle.  L'utilisateur voyant peut généralement taper plus de lignes que la fenêtre peut contenir, et le texte défilera dans la fenêtre. Par chance, l'utilisateur aveugle peut ignorer cette fenêtre artificielle et taper en toute liberté.  Comme d'habitude, la commande « i? » indique la taille qu'aurait cette fenêtre dans un navigateur visuel.  Vous verrez quelque chose comme « area [7x40] », qui indique une fenêtre de 7 lignes par 40 colonnes. 

L'implémentation dans lynx des zones de texte est particulièrement restrictive.  Ce qui n'est pas étonnant, puisque lynx n'est pas un éditeur.  Vous pouvez corriger les fautes de frappe, mais vous ne pouvez pas réellement « éditer » le texte en cours.  Une fois tapée la touche entrée, cette ligne est terminée, et vous êtes sur la prochaine zone.  Vous ne pouvez pas déplacer des lignes ou insérer les lignes etc.  Vous ne pouvez pas non plus préparer vos commentaires à l'avance et les insérer dans la zone de texte à partir d'un fichier. 

Dans Edbrowse, la zone de texte est contrôlée à partir d'une autre session d'édition.  Ceci permet d'utiliser toutes les ressources de l'éditeur.  Vous pouvez déplacer du texte, faire des substitutions globales, ou insérer des commentaires à partir d'un fichier.  La session d'édition est choisie pour vous, et apparaît dans la zone de saisie.  Considérez le formulaire suivant :

Donnez votre adresse email: <>
Tapez vos commentaires: <buffer 2>

Dans cet exemple, la session 2 n'était pas active quand la navigation a commencé.  Le navigateur a assigné la session 2 spécifiquement pour ce champ d'entrée.  Tapez « e2 » pour aller à la session 2, préparer vos commentaires, et tapez « e1 » pour revenir au formulaire.  Sur la plupart des pages Web, les zones de texte sont initialement vides, donc le tampon 2 sera vide, mais ce n'est pas toujours le cas.  Vérifiez la présence d'un texte pré-existant avant de commencer à taper.  Un site web particulièrement arrogant pourrait pré-remplir la zone de texte avec : « J'aime votre site Web parce que :  ». 

Quand vous enverrez le formulaire, comme on va le voir dans la prochaine section, le tampon 2 de texte, dans la deuxième session d'édition, remplacera les mots « buffer 2 » dans la zone de saisie.  Ainsi vos commentaires soigneusement travaillés seront envoyés.  (Ceci ne signifie pas que quelqu'un vous écoutera).

Pousser le bouton

Si la troisième zone de saisie sur la ligne courante est un bouton de validation ou d'annulation, vous pouvez l'enfoncer en tapant « i3* ».  Le bouton d'annulation réinitialise toutes les zones du formulaire, telles qu'elles étaient au premier chargement de la page web. 

Le bouton de soumission envoie le formulaire au serveur à distance et attend une réponse.  C'est comme suivre un lien Internet, mais ici vous envoyez quelques données avec la demande.  Tapez « kangourou » dans un moteur de recherche et vous lirez bientôt une page Web au sujet des kangourous.  Comme avec n'importe quel autre lien, vous pouvez employer la touche retour arrière « ^ » pour revenir.  Dans ce cas, vous reviendrez au formulaire en ligne.  Vous pouvez modifier les données et soumettre de nouveau le formulaire, avec des questions sur un autre animal. 

Edbrowse supporte les méthodes «GET» et «POST», protocoles HTTP les plus communs, et elles semblent fonctionner pour la plupart des sites web. 

Une fois que vous avez soumis votre formulaire, et vous regardez les résultats, vous pouvez remarquer quelques caractères étranges à la fin du nom de fichier.  Si vous avez recherché l'information sur des kangourous, le nom de fichier pourrait ressembler à : www.recherche.com?keywords=kangourou.  Le texte qui suit le point d'interrogation est une version codée des données du formulaire.  Qui devient une partie de l'URL virtuelle.  C'est réellement une bonne chose, comme nous le verrons dans la prochaine section. 

Adresses Web et Email

La commande « A » majuscule montre les adresses Web sous les liens sur la ligne courante.  Chaque adresse sera entourée par les tags <a> et </a>, prête à être collée dans un fichier de signets, si c'est ce que vous souhaitez.  Ces adresses existent dans une nouvelle session ; la session précédente a été empilée.  Ajoutez ces dernières à votre fichier de signets par « w+ $bookmarks », si vous avez renseigné la variable d'environnement $bookmarks.  Ils seront placés à la fin ; vous pouvez les déplacer dans le fichier plus tard, une fois « hors ligne ».  Pour les connectés en RTC, le temps de connexion est précieux, et ne devrait pas être perdu à réarranger des fichiers de signets.  En conclusion, employer la commande ^ pour retourner à la page Web que vous regardiez.  Voici à quoi elle pourrait ressembler :
< b this.that.com/whatever # navigation dans une page Web
> 16834 # taille du code HTML brut
> 7855 # taille du texte navigable
< /kangourou/i # recherche de kangourou dans la page
> cliquez ici pour {plus d'informations sur des kangourous}, ou {nous écrire}. 
< A # capture des URLs
> 144 # taille des URLs
< ,p # affichons-les
> <A HREF=www.kangaroo-info.com>
> plus d'informations sur des kangourous
> </A>
> nous écrire:info@kangaroo.org
< 4d # nous n'avons pas besoin de l'adresse mail
< w+ $bookmarks # ajoute cette URL au fichier de signets
> 336
< ^ # retour à la navigation
> cliquer ici pour {plus d'informations sur des kangourous}, ou {nous écrire}. 

Je suppose que je pourrais interroger la variable d'environnement $bookmarks moi-même, et ajouter l'URL à ce fichier automatiquement, mais comme cet exemple le montre, vous pourriez ne pas vouloir ajouter tous les liens.  En fait l'adresse électronique n'a rien à faire dans un fichier de signets.  En outre, vous pouvez vouloir changer la description du lien, bien que dans cet exemple la description soit assez raisonnable. 

Alternativement, vous pourriez ignorer l'URL et conserver l'adresse électronique, pour l'ajouter à votre carnet d'adresses.  Là encore, vous voudrez changer l'expression générique « nous écrire » pour quelque chose de plus parlant, comme adresse-kangourou.  C'est un surnom, qu'il est possible d'utiliser pour envoyer du courrier à ce destinataire.  (Les sections suivantes décrivent l'utilisation de Edbrowse en tant que client de courrier). 

S'il n'y a aucun lien sur la ligne courante, ou si vous n'êtes pas dans le mode navigation, le nom de fichier courant est employé.  C'est utile quand vous voulez ajouter à votre fichier de signets l'adresse URL de la page courante, plutôt qu'un autre page pointée par un lien. 

Si la page courante est le résultat d'un envoi de formulaire, le nom de fichier peut inclure vos zones de saisie après le point d'interrogation.  S'il le fait, c'est une fonctionnalité, pas une bogue.  Cette URL exacte, avec les données à la fin, peut être stockée comme signet et être activée à plusieurs reprises, comme si vous aviez complété le formulaire à chaque fois.  Chaque semaine, vous pouvez appeler cette URL virtuelle pour voir s'il y a de nouvelles informations sur des kangourous.  Un exemple plus pratique pourrait être un formulaire qui consulte la météo pour une certaine ville ou le cours des actions d'actions de compagnies.  Vous pouvez également écrire des scripts concis qui « rempliront » le formulaire virtuel, simplement en modifiant les données après le point d'interrogation.  Ceci fournit une commande simple pour consulter la météo de n'importe quelle ville ou le cours actuel de n'importe quelle action. 

Si le formulaire emploie le POST, plutôt que la méthode GET, les mêmes données apparaîtront, mais le point d'interrogation est remplacé avec le caractère « contrôle a ».  Malheureusement ce caractère est invisible, et ceci est source de confusion.  Dans le doute, lister la ligne. 

Avec la commande A, le texte du nouveau lien hypertexte créé est le titre de la page courante.  S'il n'y a aps de titre, le texte du lien est repris de l'URL, lequel est vraiment suboptimal.  Dans ce cas, vous pourriez changer le texte du lien.  Heureusement, la majorité des pages internet ont un titre.

Un dernier avertissement au sujet des ajouts à votre fichier de signets.  Disons que vous avez lancé votre commande « A », et avez modifié un peu la description.  Maintenant le lien est correctement écrit, et vous voulez le sauvegarder.  Vous tapez accidentellement «w $bookmarks », oubliant le signe plus.  Au lieu d'ajouter le lien en fin de fichier, vous avez enregistré à la place de votre fichier de signets.  Des années des liens accumulés sont parties en fumée.  Pour éviter cet accident désastreux, créez une macro pour l'ajout à votre fichier de signets.  Je sais, nous n'avons pas encore parlé des macros définies par l'utilisateur, mais nous le ferons.  Et quand nous le ferons, vous écrirez une macro « ajout signet » semblable à ceci :.

function+bma {
  w+ $bookmarks
}

Maintenant vous pouvez tapez <bma pour ajouter un lien à vos favoris, sans vous soucier des fautes de frappe.  C'est plus court que « w+ $bookmarks » de toute façon. 

Cookies

La plupart des sites Web envoient des «cookies», qu'on s'attend à ce que votre navigateur sauvegarde et récupère ensuite pour des échanges futurs.  En fait beaucoup de sites Web simplement ne fonctionnent pas sans support des cookies.  Par conséquent Edbrowse accepte toujours les cookies. 

Les cookies persistants sont stockés dans un fichier, ainsi défini dans .ebrc : "jar = fichier", et sont ainsi disponibles pour des sessions suivantes d'Edbrowse.  Ces cookies sont employés pour stocker des informations à long terme sur vous, tel que votre nom d'utilisateur et mot de passe dans amazon.com.  Par conséquent votre fichier de cookies devrait être en mode 0600.  En fait le fichier est créé en mode 0600 s'il n'existe pas. 

Vous n'aurez pas probablement jamais besoin de regarder votre fichier de cookies, mais si c'est le cas, c'est du texte directement éditable. Ne le modifiez pas si vous avez des pages web actives : vous risquez d'imprévisibles emballements.

Pour parler d'emballements, ne surfez dans des instances différentes de Edbrowse dans différentes consoles virtuelles. Au lieu de cela, ne lancez qu'une seule instance de Edbrowse avec des pages différentes dans des tampons différents. Des instances parallèles de Edbrowse peuvent chacune écrire dans le fichier des cookies, indépendamment, et donc une instance peut détruire des cookies enregistrés par une autre. Ce n'est qu'une nuisance mineure, que vous vous pouvez ignorer. Mais une prochaine version de Edbrowse pourrait utiliser un serveur http global pour contourner ce peroblème.

Connexions sécurisées

Edbrowse emploie la méthode la plus commune de chiffrement du trafic Web, HTTP SSL/TLS, familièrement connue sous le nom de HTTP sécurisé.  Les sites Web sous HTTP sécurisé ont une URL de la forme : https://secure.server.com.  Noter que le protocole est https:// plutôt que http://.  Le « s » supplémentaire représente «sécurisé».  Le trafic est chiffré, c'est-à-dire mathématiquement brouillé, et ne peut pas être intercepté par un tiers scélérat. 

Edbrowse vérifiera les connexions SSL, si vous fournissez un fichier de certificats SSL.  C'est une mesure antispoofing (anti usurpation d'identité), de s'assurer qu'un intrus ne se fait pas passer pour votre banque, essayant de voler vos numéros et mots de passe de compte.  Sur quelques distributions de Linux, vous pouvez lancer la commande `cd /etc/ssl/certs ; cat * >../Edbrowse-certs' pour capturer les certificats SSL déjà enregistrés dans votre système linux.  Si vous n'avez pas ce fichier, ou si vous ne l'avez pas créé, ou si vous n'indiquez pas son emplacement dans votre fichier de configuration, vous ne pourrez pas vérifier les connexions sécurisées, et vous serez avertis en conséquence.  Quelques navigateurs n'ont pas ce dispositif, ce n'est donc pas la fin du monde, mais en général c'est une bonne idée de vérifier vos connexions sécurisées, à moins que le vérificateur vous empêche d'accéder à un site Web dont l'authenticité vous paraît certaine.  Dans ce cas vous pouvez taper « vs » pour stopper le dispositif.  C'est une commande à bascule ; tapez « vs » encore pour redémarrer le dispositif.  Pour une autre méthode de désactivation de la vérification, voyez plus loin la directive "novs" dans le fichier de configuration.

Ne jamais envoyer d'information sensible, telle que le numéro de sécurité sociale ou des numéros de carte bancaire, sur un canal peu sûr.  S'assurer que le formulaire utilise SSL.  Comment le savoir ? Le bouton de soumission aura le mot «secure» ajouté à son intitulé. 

<envoyez votre commande secure>

C'est semblable au cadenas qu'Internet Explorer emploie pour dire que votre connexion est sécurisée, bien que mon système ne soit pas totalement infaillible.  Un site Web peut vous abuser en mettant le mot « secure » dans le texte de soumission. 

Noter que les boutons génériques (sans compter le bouton de soumission) peuvent également soumettre votre formulaire, par Javascript.  Je ne sais pas si ce bouton envoie le formulaire ou non, et je ne veux donc pas mettre le mot «secure» sur chaque bouton de la page.  Je l'ajoute seulement au bouton de soumission, mais si ce bouton est sécurisé, ils le sont tous.  Tous emploient la même formulaire, et ont la même URL. 

Si vous avez des comptes sur des serveurs sécurisés, tels que PayPal.com, vous devez avoir un mot de passe absolument sûr.  Ne jamais envoyer ce mot de passe sur une connexion non sécurisée.  Il a la même valeur que vos numéros de cartes bancaires.  J'ai un mot de passe spécial que j'emploie pour mes connexions sécurisées, et seulement pour ces connexions.  Et des mots de passe jetables quand la connexion n'est pas sécurisée. 

S'il vous plaît, ne tombez pas dans le piège du « phishing » d'emails qui vous indiquent que votre compte a expiré, mais qui vous ouvre pour cette fois encore une session en utilisant ce formulaire commode.  Le courrier semble légitime, et le formulaire envoie réellement votre mot de passe secret à un voleur, qui aura accès à votre compte.  Une compagnie réputée ne demandera jamais de vous connecter par un formulaire email.  Elle vous indiquera toujours de revenir à son site Web et de vous y connecter. 

La sécurité d'Internet est complexe, c'est le moins qu'on puisse dire, et dépasse la portée de ce document.  Si vous avez des questions à son sujet, svp me les envoyer directement.  En règle générale, le HTTP sécurisé est vraiment tout à fait sûr, et vous pouvez l'utiliser pour envoyer des informations sensibles à travers l'internet.  Il est probablement plus sûr que de donner votre numéro de carte bancaire par téléphone, pratique courante avant l'e-commerce.  Ainsi il faut rester un peu paranoïnaque, en fait c'est probablement une bonne idée, mais que cela ne vous empêche pas d'effectuer vos achats en ligne. 

Téléchargements FTP

Ce navigateur supporte la récupération des fichiers et des répertoires en ftp.  Vous pouvez fournir un URL ftp comme : ftp://ftp.random.com/tarball.tar.gz et le fichier sera récupéré.  Que vous saisissiez l'URL vous-même, ou par un hyperlien sur une page Web, n'a pas d'importance.  Le fichier est récupéré, et placé dans un nouveau tampon. Tapez w/ pour le sauvegarder sur votre machine, ce qu'un client ftp traditionnel fait normalement. Bien sûr, le téléchargement peut échouer, auquel cas vous recevrez un message d'erreur. C'est une simple interruption, due à une quelconque erreur sur l'internet, vous pourrez toujours retaper la commande et espérer avoir plus de chance.

Par défaut, Edbrowse emploie le nom d'utilisateur « anonymous » et le mot de passe « ftp@example.com » pour les connexions ftp.  Cependant, vous pouvez modifier ceci dans l'URL, et quelques pages Web tirent profit de ce dispositif.  Par exemple, disons que vous voulez accéder au fichier /opt/foobar sur une machine appelée quelque.part. Ce fichier n'est pas lisible par les utilisateurs anonymes.  Vous devez ouvrir une session en tant qu'utilisateur reconnu par la machine quelque.part.  Dans Edbrowse, utilisez la commande :

e ftp://chris:xxx@quelque.part/opt/foobar

La connexion ftp sera établie sous le nom d'utilisateur « Chris », avec le mot de passe « XXX ». 

Certaines URLs ftp pointent sur des répertoires, pas sur des fichiers.  Si vous visitez une de ces URLs, et si c'est un serveur type Unix, vous recevrez la liste des fichiers du répertoire sous forme de page HTML avec des hyperliens.  Vous pourrez visiter les membres de ce répertoire comme si vous exploriez un site Web.  Si le serveur n'est pas de type Unix, vous recevrez le listing de répertoire en texte plat. 

Le mode ftp, c'est-à-dire le modèle de connexion, peut être actif ou passif.  L'un fonctionne bien quand le client est derrière un routeur, et l'autre quand le serveur est derrière un routeur.  Vous pouvez indiquer le mode de ftp actif par la commande « fma », ou passif par « fmp ». 

Serveurs proxy

Un serveur proxy est un serveur web intercalé entre votre navigateur et les sites Web distants.  Il intercepte vos demandes de pages Web et les transmet au système distant.  Des serveurs proxy sont utilisés pour beaucoup de raisons.  Voici justes quelques-unes d'entre elles :

  1. Efficacité.  Le serveur proxy peut pouvoir stocker des pages Web précédemment appelées (système connu sous le nom de cache).  Si votre connexion au proxy est plus rapide que votre connexion au reste du réseau, le cache vous envoie alors les pages Web précédemment appelées plus rapidement. 
  2. Politiques.  Quelques administrateurs de pare-feu exigent d'employer un serveur proxy . 
  3. Anonymat.  Il existe des serveurs appelés serveurs proxy d'anonymat qui cachent votre adresse IP aux sites Web que vous passez en revue. 

Si vous souhaitez employer un serveur proxy pour le trafic HTTP, activez simplement l'option proxy dans votre fichier de configuration.  Fournir le nom d'hôte et le port, séparés par des deux points. Par exemple :

proxy = http * proxy.campus.edu:3128

Tout le trafic HTTP, pour tout domaine (défini par *) transite à travers proxy.campus.edu sur le port 3128.  Notez que les proxy écoutent souvent sur des ports autres que le port 80.  « Squid » est un serveur proxy fourni avec quelques distributions Linux, et il emploie le port 3128 par défaut. 

Le protole et le domaine peuvent être spécifiés, ou bien chacun peut être remplacé par * pour tout protocole et pour tout domaine. L'absence de domaine est considérée comme * (tout domaine) et l'absence de protocole et de domaine est considérée valide pour tout.  Une telle directive doit être la dernière dans la liste des proxies dans votre fichier de configuration, parce que des proxies définis ensuite sont sans signification.

Le mot "DIRECT" en troisième position est une connexion directe, sans serveur proxy.  Cette directive est habituellement placée en début de liste, pour accéder à certains domaines internes; alotrs que le serveur proxy est spécifié pour tous les autres.

proxy = http|https hr.mycompany.com DIRECT
proxy = http|https|ftp * proxy.mycompany.com

Comme dans cet exemple, les protocoles différents peuvent être séparés par des "pipes".  Attention, mettre une * dans le champ protocole inclut tous les protocoles, ftp, pop3 et smtp inclus.  Le courrier électronique passera par ce proxy, comme du trafic web.

Cadres

Les cadres sont un mécanisme par lequel une page Web puisse récupérer et afficher plusieurs autres pages Web sur l'écran simultanément.  Chaque sous-page s'appelle un cadre, et vit dans son propre espace sur l'écran.  Parfois les cadres sont en haut, au milieu et en bas ; parfois ils sont à gauche, au milieu et à droite.  Edbrowse présente ces cadres comme des hyperliens, que vous pouvez appeler alternativement, ou sauter directement à un cadre spécifique si vous connaissez le site Web.  Habituellement le cadre supérieur est un cadre de navigation, et le cadre inférieur contient des informations légales de déni/copyright : vous pouvez ainsi sauter ces derniers et poursuivre.  A de rares occasions, je l'ai vu une seule fois, vous devez ouvrir le cadre supérieur, que vous soyez intéressé ou pas, parce que le code HTML de cette page particulière place quelques cookies indispensables à la visite du site Web. 

Une page de cadres pourrait ressembler à ceci.  Je pense que vous pouvez deviner sur lequel cliquer. 

Frame {navigation}
Frame {principal}
Frame {pied}

J'ai pensé à un dispositif de récupération de cadres qui chercherait tous les cadres et les présenterait en seul jet, tout comme elles sont affichées simultanément sur l'écran pour un utilisateur voyant, mais il est très difficile d'implémenter ce dispositif, et jusqu'ici, personne ne semble le vouloir.  Comme vous pouvez l'imaginer, il est tout en bas de la liste des choses à faire. 


Chapitre 5, Javascript

Introduction à Javascript

Javascript est un logiciel, inclus dans la page Web, qui fonctionne sur votre ordinateur.  Ces fonctions ne sont pas lancées sur le serveur web, elles tournent sur votre ordinateur.  Par conséquent on l'appelle parfois Javascript côté client.  Et Javascript peut faire presque n'importe quoi.  Vous pourriez, par exemple, télécharger une page Web qui inclut une fonction de Javascript pour calculer les décimales de pi, directement sur votre ordinateur, bien que ce soit plutôt idiot.  La majeure partie de Javascript est employée pour valider et/ou modifier des formulaires, ou créer des effets visuels de fantaisie. 

La première version de Edbrowse, écrite en Perl, ignorait Javascript complètement, et cela a fonctionné un temps, mais de plus en plus sites internet emploient Javascript, et ces sites Web étaient simplement inaccessibles.  La plupart des emplacements d'e-commerce entrent dans cette catégorie.  Si vous voulez faire des achats, ou contrôler votre compte bancaire en ligne, vous aurez besoin d'un navigateur autorisant Javascript. 

La deuxième version de Edbrowse, écrite en C, et portant un numéro de version commençant par 2, incluait un compilateur et un moteur Javascript écrits par moi-même.  Cela fonctionnait plutôt bien, pour un projet réalisé pendant mon temps libre, mais Javascript évolue, comme n'importe quelle autre langue ou standard, et je ne pouvais plus suivre. 

La troisième version, la « plus récente et la plus grande », utilise un moteur Javascript de Mozilla.com, qui est Open Source sous la Licence Publique de Mozilla.  Ceci me permet de m'appuyer, plutôt que de réinventer, sur environ 70.000 lignes de code - et quelqu'un d'autre maintient ce code à mesure que Javascript évolue.  Ceci illustre la puissance de la communauté open source. 

Edbrowse n'offre pas toutes les fonctionnalités de Javascript côté client (DOM), et ne les offrira jamais.  Par exemple, beaucoup de sites Web utilisent Javascript pour changer des images à la volée au passage de la souris sur l'écran.  Ceci n'a aucune signification dans Edbrowse.  D'autres sites Web affichent de multiples fenêtres multiples, et vous laissent agir sur ces sous-fenêtres en utilisant des icônes dans la fenêtre principale.  Il serait très difficile simuler ce comportement dans un environnement.

Une partie de Javascript est implémentée, d'autres parties non.  C'est encore un travail en cours.  Si vous soumettez un formulaire, ou suivez un hyperlien, et que rien n'arrive, absolument rien, alors la page web essaie probablement d'utiliser des fonctionnalités Javascript non encore implémentées.  Montez le niveau de débogage à 3 ou plus haut et poussez de nouveau le bouton pour voir les erreurs Javascript.  Ensuite, si vous le souhaitez, désactivez Javascript avec la commande js et réessayez.  Cependant, le site web poeut ne pas fonctionner corectement ou comme attendu avec Javascript désactivé.  Consultez l'avertissement au début du présent guide.

Vous pouvez également désactiver Javascript pour des sites internet spécifiques.  Ceci sera discuté plus tard, quand nous décrirons le fichier de configuration d'Edbrowse. 

Valider des formulaires

Quand une page Web demande des données à l'utilisateur, elle inclut souvent une fonction de « valider&soumettre ».  Cette fonction contrôle vos entrées : vous avez complété tous les champs obligatoires - il y a le signe @ dans votre adresse électronique – il y a 5 chiffres dans votre code postal - et ainsi de suite.  S'il n'y a aucune erreur, il envoie le formulaire.  Ces fonctions se comportent habituellement bien sous Edbrowse.  Quand vous poussez le bouton, vous verrez le message d'erreur, ou bien le formulaire sera envoyé, et une page de confirmation apparaîtra sous peu. 

Dans certains cas la fonction de Javascript restructure vos données.  Elle peut compléter certains des champs « cachés » pour vous, ou elle peut calculer la TVA et le prix d'achat en conséquence.  C'est plus que la validation de formulaire, c'est du Javascript actif, et les données ne seront pas exactes si Javascript ne fonctionne pas correctement sur votre ordinateur.  De plus en plus de sites emploient du Javascript actif, ainsi un navigateur supportant Javascript est un must. 

Quelques fonctions de Javascript contrôlent des menus dynamiques.  On fait un premier choix, et Javascript crée un deuxième menu avec des options correspondant à votre premier choix.  Vous pouvez maintenant faire un deuxième choix, qui affine votre recherche.  Si le premier menu présente des « viandes », des « légumes », des « fruits », et des «céréales», et vous choisissez des fruits, le deuxième menu pourrait contenir des « pommes », des « oranges », des « citrons » etc.  Javascript rend tout ceci possible.  Ces menus dynamiques sont supportés par Edbrowse.  Vous verrez un message du genre "La ligne 352 a été modifiée", où 352 contient le sous-menu.  Tapez 352I? pour consulter les options du menu nouvellement créé.

Fenêtres Popups et Popunders

Un popup est une fenêtre qui apparaît soudainement devant la fenêtre affichée à l'écran.  Elle annonce habituellement quelque chose, et c'est souvent agaçant, bien que dans de rares cas, ce soit un aspect nécessaire du site Web. 

Vous avez un avantage certain sur tous les autres surfeurs avec leurs navigateurs graphiques.  La fenêtre popup ne s'ouvre pas automatiquement.  Au lieu de cela, le popup apparaît comme hyperlien au début ou près du début de la page, et vous pouvez cliquer dessus si vous aimez, ou l'ignorer.  C'est semblable à la musique de fond, décrite dans une section précédente.  Le lien automatique pourrait ressembler à ceci. 

{Popup: specials()}

Les fenêtres Popunders ne sont pas si fréquentes.  Elles apparaissent après que vous ayez fermé la fenêtre.  Dans un certain sens elles sont cachées « sous » votre page Web, et quand vous fermez la page elles remontent à la surface.  Dans Edbrowse, cela ne se produit pas automatiquement.  Quand vous tapez « q », vous quittez, et tout est terminé.  Comme vous pouvez le prévoir, la fonction popunder apparaît comme hyperlien.  Elle pourrait ressembler à ceci. 

{On Close: foo()}

Rappelez-vous, le lien popup est un simple lien HTML vers une autre page Web, alors que le lien « Close » appelle une fonction de Javascript de la page courante.  Cependant, cette fonction Javascript renvoie habituellement à une autre page Web, ainsi ne soyez pas étonné si vous vous trouvez quelque part ailleurs sur l'Internet.  Dans les deux cas, popup ou popunder, vous pouvez employer la touche de retour arrière pour retourner à la page que vous consultiez.  Si vous avez besoin de l'accès à une fenêtre popup et à la page principale en parallèle, employez la commande M.

Javascript inclut également les fonctions de temporisation, qui se déclenchent après un nombre spécifié de secondes.  Celles-ci sont implémentées comme hyperliens au début de la page.  Elles contrôlent habituellement des effets visuels, et sont plutôt inutiles.  Le temporisateur suivant pourrait dessiner une étoile explosant à l'écran au bout de 16 secondes. 

{Timer 16: starburst()}

Onchange et annuler

Quand vous entrez ou modifiez la valeur d'une zone de saisie, le formulaire peut parfois appeler une routine Javascript.  Ce n'est pas habituel, mais cela arrive.  Dans un exemple précédent, j'ai décrit un menu primaire et secondaire.  Quand le premier choix est fait, par exemple les fruits, Javascript crée le deuxième menu correspondant à votre choix primaire, en utilisant la fonctionnalité « onchange ».  C'est bel et bon, mais Edbrowse a quelque chose que votre navigateur graphique n'a pas, à savoir la commande annuler (undo).  Et dans ce contexte, cela ne fonctionne vraiment pas.  Changez les fruits en légumes, et le deuxième menu présentera des carottes, petits pois etc.  Tapez maintenant « u » pour annuler : le premier menu revient aux fruits, mais le deuxième menu contient toujours des légumes.  C'est parce que la fonction annuler a été écrite à l'origine pour l'éditeur de texte.  Il remet simplement le texte comme il était, et n'a aucune capacité « de défaire » les effets secondaires du code Javascript.  A cette fin, la commande undo est désactivée dans les champs de saisie.

Debugger Javascript

En mode navigation, la commande "jdb" redirige tous les entrées suivantes vers le moteur javascript, contenant les objets associés à page web courante. Tapez document.body.childNodes pour voir une liste de tous les noeuds de la page web. Une commande ok prédéfinie liste tous les membres d'un objet. Tapez un point pour revenir à Edbrowse. Il est préférable d'entre la commande jdb avec un niveau de débogage à 3, pour voir ainsi toutes les erreurs javascript de syntaxe ou de référence. Cette fonctionnalité est destinée aux développeurs, et n'est pas très utile à l'utilisateur final..


Chapitre 6, Scripts d'Edbrowse et le fichier de configuration

Fichier de configuration

Au démarrage, Edbrowse lit et analyse un fichier de configuration.  Cela fonctionne si ce fichier est absent, mais s'il est présent, il doit être syntaxiquement correct.  S'il y a une erreur, éditez le fichier de configuration, corrigez l'erreur, et tapez "config" pour l'appliquer à nouveau. Recommencez jusqu'à ce qu'il n'y ait plus d'erreurs, ainsi vous aurez un fonctionnement impeccable. Souvenez-vous que "edbrowse -c" vous permet d'éditer le fichier de configuration directement. Egalement, pour Edbrowse, un fichier nommé -c est traité comme le fichier de configuration. Vous pouvez changer de session, modifier, afficher, éditer, sauvegarder et réappliquer le fichier de configuration sans quitter Edbrowse.

Le fichier de configuration est dans $HOME/.ebrc.  Le « eb » est un raccourci pour Edbrowse.  Vous ne pouvez pas renommer le fichier de configuration ; il est ce qu'il est.  L'emplacement sous Windows est différent, mais toujours basé sur la variable HOME. 

Ce fichier est orienté « lignes ».  Les lignes commençant par # sont des commentaires, et donc ignorées.  Les interlignes sont également ignorés.  Les autres lignes tombent dans une de ces 5 catégories. 

  1. Définition d'une option, en utilisant la syntaxe « mot-clé=valeur». 
  2. Définition d'un script Edbrowse qui peut être appelé de la ligne de commande, ou par un autre script. 
  3. Une commande d'Edbrowse, qui devient une partie d'un script d'Edbrowse. 
  4. Définir un compte de courrier électronique.  Ceci sera décrit plus tard, quand nous parlerons du client de courrier électronique
  5. Une règle de filtrage de courrier.  
  6. Description de table ou d'une vue dans une base de données SQL

Mot-clé = valeur

La meilleure documentation étant un exemple, alors on s'y plonge. .

Rappelez-vous la section sur les cookies.  Vous aurez besoin d'un fichier, souvent appelé un récipient de cookies, pour stocker vos cookies.  La ligne qui définit ce récipient de cookies pourrait ressembler à ceci :

jar = /home/monlogin/.ebsys/cookie-jar

C'est une syntaxe simple : mot-clé = valeur.  Pas de problèmes si le nom de fichier contient des espaces, ou même le signe égal.  Pas besoin de le mettre entre parenthèses. 

Quand Edbrowse voit cette ligne dans son fichier de configuration, il repère l'emplacement du fichier « « cookie-jar », et vérifie la validité de ce fichier.  Si le fichier est un répertoire (ou quelque chose de bizarre), ou bien est inaccessible, Edbrowse affiche un message d'erreur et quitte.  Si cela se produit, utilisez l'option « -c » pour éditer votre fichier de configuration, et modifiez le fichier des cookies. 

Voici quelques directives additionnelles de type nom=valeur.  Certaines sont employées pour définir un compte de courrier électronique.  Ceci deviendra plus clair quand nous parlerons du client de courrier. 

certfile = /etc/pki/tls/cert.pem

Indique le fichier qui sauvegarde les certificats pour les connexions sécurisées.  Ceci a été expliqué dans la section sur les connexions sécurisées..

maildir = /home/monlogin/mbox

Allez dans ce répertoire lorsque vous récupérez votre courrier.  Ainsi, si vous sauvegardez un message,, vous saurez toujours où il est. 

webtimer = 30
mailtimer = 180

Attendre 30 secondes une réponse d'un serveur web, et 3 minutes pour une réponse du serveur mail.  Une valeur 0 attend indéfiniment.  Désolé, il ne semble y avoir aucune manière d'interrompre une connexion, autre que contrôle anti-slash, qui tue le programme.  C'est pourquoi ces temporisateurs sont ici - ainsi vous n'attendrez pas indéfiniment.  Les valeurs par défaut sont respectivement de 20 et 0. 

downdir = /home/monlogin/downloads

Lorsque vous accédez à un fichier binaire sur un site web, vous avez le choix entre le télécharger directement au lieu de le charger en mémoire.  Si vous le faites, le fichier est enregistré dans le répertoire de téléchargement par défaut.  Si le nom de fichier téléchargé comporte un slash, ou bien s'il n'existe pas de répertoire de téléchargement, le chemin est construit relativement au répertoire courant (on assume qu'il n'est pas absolu).  Dans ce cas, l'expansion des métacaractères est effectuée.  Par exemple, vous pouvez envoyer un fichier mp3 sur ~/musique/country/une-chanson.mp3.  Les téléchargements s'effectuent en avant-plan, avec une échelle de progression, bloquant Edbrowse jusqu'à l'achèvement du téléchargement.  Si vous préférez, vous pouvez télécharger un fichier en arrière-plan en invoquant la commande bg (background).  C'est pratique surtout pour de gros fichiers.  Vous êtes prévenu à la fin du téléchargement.  Pendant de temps, vous pouvez continuer à utiliser Edbrowse.  Aucune échelle de progression ne sera affichée, car elle pourrait interférer avec ce que vous êtes en train de faire.

Quand on vous demande un nom de fichier, tapez entrée pour garder le nom de fichier par défaut, tel que proposé par le site web, tapez x pour abandonner, tapez espace pour charger les données en mémoire, ou entrez un nom de fichier différend si vous le souhaitez.  Si le fichier existe déjà, il est écrasé.

Tapez bglist pour lister vos téléchargements en arrière-plan, incluant les téléchargements terminés.  A la sortie, Edbrowse listera tous les téléchargements en arrière-plan en cours.  Ces téléchargements se poursuivront, même après avoir quitté Edbrowse, et afficheront "téléchargement terminé" à leur achèvement.

Des téléchargements au premioer plan, ou n'imp orte quel tâche internet de ce type, affichent une échelle de progression sous forme de points, mais vous pouvez supprimer cette é&chelle par la commande pdq ("progress of download quiet"). Une autre option est pdc ("progress of download by count" : progression par comptage). Ceci affiche des MO décimaux, et non des MO binaires (0x100000)- ce n'est qu'une légère différence.

linelength = 1000.

Modifie la longueur d'une ligne affichée. La valeur par défaut est de 500, la valeur minimum est de 80. Une ligne plus longue sera complètement représentée en interne, mais sera tronquée à l'affichage, comme l'indiquent les points de suspension terminaux...

nojs = space.com

Indique les domaines qui n'ont pas besoin de Javascript.  Vous pouvez éliminer les messages d'erreur agaçants et accélérer l'accès en désactivant Javascript pour certains sites Web.  Javascript ne sera pas lancé dans les pages de ces sites, ni même recherché sur ces sites. 

La directive ci-dessus désactivera également le Javascript des sous-domaines tels que www.space.com.

Vous pouvez inclure un chemin ou un chemin partiel après le nom de domaine, comme dans space.com/popups.  Ceci bloquera les popups ajoutés que vous ne voulez pas voir, et qui produit souvent des erreurs d'Edbrowse.  Les sous-domaines ne sont pas pris en compte quand un chemin est précisé ; le domaine doit correspondre exactement. 

novs = insite.com

Indique les sites pour lesquels aucune vérification des certificats SSL n'est à effectuer.  Cette directive est utile pour les sites utlisant des certificats auto-signés, qui ne peuvent donc être vérifiés..  Ceci ce devrait pas être utilisé pour quelque chose de sérieux, comme un site demandant votre numéro de carte bancaire.

inserver = pop3.un-domaine.com
inport = 110
outserver = smtp.un-domaine.com
outport = 25

Indique les machines et les ports que vous employez pour récupérer (pop) et envoyer (smtp) le courrier.  Vous pouvez employer les noms complets de domaine, ou des alias, s'ils sont définis dans le fichier « /etc/hosts ».  Les ports indiqués ici sont standard, et fonctionnent presque toujours.  Ce sont les ports par défaut de Edbrowse, ainsi vous n'avez pas besoin de spécifier les ports d'entrée et de sortie, à moins qu'ils soient différents.  Notez, ces mots-clés sont uniquement valides dans le contexte d'un compte de courrier électronique, indiqué par mail{}. 

Une étoile devant le numéro de port, par exemple outport *465, signifie que le 'socket' doit être crypté, pour la sécurité.  Lorsque le port smtp est crypté, l'authentification 'login' est de règle.  Aucune autre méthode d'authentification n'est actuellement implémentée.

Une flèche devant le numéro de port, par exemple ^587, chiffre le socket, mais seulement après un échange en clair. C'est le protocole hotmail, aussi sûr que *465, seulement différent.

Utilisez +587 pour vous identifier sans cryptage. C'est parfois le cas lorsque vous êtes directement connecté au serveur mail, sans passer par l'internet, mais lorsque le serveur veut s'assurer qu'il s'agit bien de vous.

secure

Les connextions entrantes et sortantes sont sécurisées.  Ceci ajoute effectivement des étoiles avant les numéros de ports, si les ports sont précisés.  Si les ports ne sont pas précisés, les ports par défaut changent pour prendre en compte les connections sécurisées.  Le port par défaut pop3s est 995 et le port par defaut smtps est 465.

nofetch

Ne pas récupérer de mail de ce compte avec l'option -f

login = eklhad
password = secret

Indique le nom d'utilisateur (login) et le mot de passe que Edbrowse utilisera pour récupérer votre courrier. 

from = Karl Dahlke
reply = karl.dahlke@some-domain.com

Ces lignes sont ajoutées aux courriers électroniques que vous envoyez.  Elles indiquent au destinataire qui vous êtes, et comment répondre.  Il est illégal d'employer ces lignes dans un but trompeur.  S'assurer qu'elles vous identifient, et que l'adresse de réponse est en effet l'un de vos comptes de courrier électronique. 

adbook = /home/eklhad/.ebsys/carnet_adresses

En indiquant des destinataires, vous pouvez employer des surnoms au lieu des adresses électroniques complètes.  Les surnoms sont vérifiés dans votre carnet d'adresses, un fichier texte, orienté « ligne » spécifié ici (« carnet_adresses »).  Si votre carnet d'adresses contient la ligne

fred : fred.flintstone@bedrock.us : 226 rue des tanneurs : 0555382705

alors vous pouvez utiliser le surnom fred, et Edbrowse substituera l'adresse électronique de Fred quand il enverra le courrier.  Seuls les deux premiers champs dans le carnet d'adresses sont significatifs en ce qui concerne Edbrowse.  D'autres champs pourraient contenir des numéros de fax, de téléphone, l'adresse postale, etc.  C'est à vous d'en décider. 

Agent utilisateur

Chaque fois que vous rapatriez une page Web de l'Internet, votre navigateur s'identifie au centre serveur. Ceci est fait automatiquement.  Edbrowse s'identifie en tant que « Edbrowse/2.2.9 », où le nombre après le slash indique la version en cours de Edbrowse. 

Tout cela est bel et bon, mais certains sites Web n'ont aucun respect pour Edbrowse, et ne se sentent pas concernés par l'accessibilité de l'Internet.  Ils ne vous laissent pas entrer à moins que vous ressembliez à Internet Explorer ou à Netscape ou un des acteurs majeurs.  StartPage.com, un frontal de Google, en est un exemple. 

Ainsi que faisons-nous ? Nous mentons, bien sûr.

agent = Lynx/2.8.4rel.1 libwww-FM/2.14
agent = Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)

Vous pouvez indiquer différents agents dans votre fichier .ebrc, et les activer avec la commande « ua » (agent utilisateur).  Si les lignes suivantes sont présentes dans votre fichier « .ebrc », vous pouvez taper « ua1 » pour feindre être lynx, et « ua2 » pour feindre être Mozilla.  Tapez « ua0 » pour restaurer l'identification standard d'Edbrowse.  Espérons qu'il n'y a pas trop de sites Web stupides qui nous forcent à mentir. 

Ce dispositif a été écrit avant Javascript, et n'est pas 100% compatible avec l'objet "navigator".  Navigator.userAgent renvoie la chaîne correcte, selon l'agent choisi, mais d'autres aspects de l'objet navigateur ne changent pas avec l'agent, alors qu'ils devraient. 

Fonctions d'Edbrowse

Vous pouvez grouper un ensemble de commandes d'Edbrowse sous un nom, semblable à une macro.  Si ce qui suit apparaît dans votre fichier de .ebrc, vous pouvez taper « <ud » pour enlever les fins de lignes DOS dans un fichier. 

function:ud {
  ,s/\r$//
}

La nouvelle commande < est supposée vous rappeler la redirection, c'est-à-dire lire des commandes dans un fichier de macros.  Et une macro peut appeler d'autres macros, en employant la commande « < » dans le corps de la macro.  Presque toutes les commandes d'Edbrowse jouent le jeu.  Une macro peut récupérer des pages Web de l'Internet, compléter des formulaires, soumettre des requêtes, et envoyer du courrier. 

Contrairement à beaucoup de choses dans le monde Unix, les noms de macros sont insensibles à la casse. Ainsi, fairececi, faireCeci, faireCeci sont tous équivalents. Egalement, si vous définissez de multiples macros sous le même nom, c'est le premier qui l'emporte. Edbrowse ignore silencieusement les définitions suivantes.

Normalement, Edbrowse continue de fonctionner, qu'une commande réussisse ou pas.  Cependant, vous pouvez dire à une macro de s'arrêter en cas d'erreur en employant cette syntaxe :

function+hw {
  /bonjour/p
  /monde/p
}

Le signe plus après le mot « function » signifie que chaque commande de la fonction doit réussir.  S'il n'y a aucune ligne contenant le mot bonjour, la fonction s'arrête.  S'il y a une telle ligne, alors la fonction continue, et recherche une ligne contenant le mot monde. 

Excepté l'indentation, le format est fixe, et impitoyable.  Vous ne pouvez pas, par exemple, mettre l'accolade d'ouverture sur sa propre ligne, comme suggéré par K&R. 

Ces fonctions, ou macros, peuvent accepter des paramètres.  Rendons la fonction précédente un peu plus générale. .

function+hw {
  /~1/p
  /~2/p
}

Reproduisez le comportement précédent en tapant <hw bonjour monde.  Ou vous pouvez rechercher différentes lignes en appelant <hw salut ami.  La dernière commande recherche une ligne contenant le mot salut et l'affiche, et si succès recherche une ligne contenant le mot ami et l'affiche.  Établissons une fonction plus utile, un raccourci pour google.  La variable « ~0 » représente la réunion de tous les arguments.  Dans ce cas-ci « ~0 » représente les mots-clés passés à google, pour votre recherche. 

function+gg {   b http://www.google.com
  /<>/ i=~0
  +i1*
  /^1/+ }

Avec ceci vous tapez simplement `<gg kangourou habitat' pour découvrir où les kangourous vivent.  Attention : depuis mai 2015, Google a une bogue bizarre provoquant un rafraichissement sans fin de la page de recherche.  Si vous recevez sans cesse la même page, tapez contrôle C immédiatement, parce trop de requêtes de recherche vont provoquer votre déconnexion avec le serveur de Google.  La même bogue a été reproduite dans Firefox avec Javascript désactivé et l'agent utilisateur défini comme Edbrowse.  La mécanique du bogue n'est pas bien comprise, mais pouvez contourner le problème : désactiver Javascript, désactiver la redirextion http, ou bien définir l'agent utilisateur comme Lynx/2.8.4rel.1 libwww-FM/2.14.

En conclusion, une fonction d'Edbrowse peut prendre deux directions différentes, selon le succès ou l'échec de la commande précédente.  Utilisez « if(*) » pour le succès, et « if(?) » pour l'échec.  ? est supposé vous rappeler le point d'interrogation affiché quand une commande d'Edbrowse échoue.  Ce qui suit recherche une ligne contenant le mot « salut », et s'il en trouve un, il avance à la prochaine ligne, et si cette ligne contient le mot « ami », il la supprime. 

function+silly {
 /salut/
 if(*) {
  +s/ami//
  if(*) {
   d
  }
 }
}

J'ai délibérément employé « function+ » au lieu de « function: » dans l'exemple précédent.  Normalement, + fera avorter la fonction si une commande d'Edbrowse échoue.  Cependant, si le résultat de cette commande est employé dans un test, l'exécution de la fonction doit se poursuivre.  C'est identique à l'option « -e » du shell, qui fait avorter un script, à moins que le résultat de la commande soit employé dans une structure si. 

D'autres structures de contrôle incluent « while(*) » while(?) until(*) et until(?).  L'exemple qui suit efface les lignes du fichier, à partir du début, tant que ces lignes contiennent le mot salut ou ami.  Il supprime ensuite toutes les lignes vides du début. 

function+topclean {
 until(?) {
  1g/salut\|ami/d
 }
 until(?) {
  1g/^$/d
 }
}

Vous pouvez employer la boucle (100) {…} pour répéter un ensemble de commandes 100 fois.  Ce dispositif n'est que rarement employé. 

Le script d'initialisation

Le script appelé « init » est lancé au démarrage d'Edbrowse.  Il définit quelques comportements par défaut – par ex. la lecture de votre fichiers de signets, pour avoir vos « favoris » sous la main.  Voici un exemple. 
function+init {
# désactive le débogage, pour ne pas afficher les messages de ce script
db0
# supposent que des répertoires sont en lecture/écriture
dw
# pour les lignes affichées, mettre marqueurs de début et de fin 
el
# mettre les favoris dans la session 99 : on sera prêt à surfer. 
e99
b $bookmarks
# retour à la session 1, pour travailler
e1
# remet le niveau de débogage à 1 ou 2, valeurs raisonnables
db1
}

C'est juste un exemple.  Mettez quelque chose que vous aimez dans ce script, ou ignorez-le si le fonctionnement d'Edbrowse vous satisfait ainsi. 

Comptes de courrier

Le prochain chapitre décrit Edbrowse en tant que client de courrier électronique, aussi allons-nous employer le fichier de configuration pour définir vos comptes de courrier. Vous pouvez définir plusieurs comptes, si besoin.  Ils sont implicitement numérotés, dans l'ordre d'apparition dans le fichier de configuration.  Ainsi le premier compte de courrier devient #1, le second devient #2, et ainsi de suite. 

Nous avons vu les mots-clés définissant un compte de courrier.  Enfermez-les dans {mail…}, comme suit :

mail {
 default
 inserver = pop3.un-domaine.com
 outserver = smtp.un-domaine.com
 login= eklhad
 password = secret
 from = Karl Dahlke
 reply = karl.dahlke@un-domaine.com
}

La directive « default » fait de ce compte le compte par défaut.  Un et un seul compte doit être défini par défaut.  Si vous n'indiquez pas un compte pour récupérer ou envoyer le courrier, le compte par défaut est employé.  Attention : le serveur smtp par défaut est toujours utilisé pour envoyer le courrier, quelque que soit le compte spécifié.  Si le compte #1 est le compte par défaut, et vous envoyez le courrier en utilisant le compte #3, l'adresse d'expéditeur et de réponse du compte #3 seront envoyées au destinataire, et s'il répond, sa réponse sera envoyée au compte #3 de courrier.  Cependant, le serveur smtp de votre compte de défaut est toujours utilisé pour transmettre physiquement le message.  Il y a des raisons techniques à cela, qui ont à voir avec les questions de sécurité.  Cependant, si un compte a l'envoi encrypté, les questions de sécurité ne se posent plus, et nous pouvons utiliser ses paramètres pour envoyer et recevoir des courriels. Ci-dessous, une configuration typique pour le gmail de Google.

mail {
  inserver = pop.gmail.com
  outserver = smtp.gmail.com
  inport = *995
  outport = *465
#  Google accepte également outport = ^587
  login = utilisateur@gmail.com
  password = secret
  reply = utilisateur@gmail.com
  from = Karl Dahlke
}

Le filtrage du courrier, par l'expéditeur et/ou le sujet, est contrôlé par votre fichier de configuration.  Ceci sera décrit plus tard, en tant qu'élément du client « fetchmail ». 

Descripteurs des plugins

Les types mime sont déterminés par l'extension dans le nom de fichier, ou dans certains cas par le protocole.  Ils peuvent indiquer à Edbrowse d'utiliser /usr/bin/play pour jouer fichier.wav ou fichier.voc, et /usr/bin/mpg123 pour jouer fichier.mp3, et ainsi de suite.  Plutôt que de tout répéter ici, je vous suggère de jeter un oeil à la section mime{…} du fichier de configuration exemple fourni.  Les utilisateurs de Linux pourront probablement copier cette section dans leur propre fichier de configuration. Elle fait généralement ce qu'il faut.  Voici un exemple :
plugin {
#  La syntaxe mime précédente { } est toujours supportée, pour la compatibilité.
type = audio/mp3
desc = audio file in mp3 format
suffix = mp3
content = audio/mpeg
#  %i est replacé par le nom de fichier temporaire généré par Edbrowse
program = mpg123 -q -C %i
}

Si vous avez téléchargé un fichier de l'Internet terminé par .mp3, ou dont le type de contenu hhtp est Audio/Mpeg, il sera automatiquement joué, et ok sera affiché lorsque ce sera terminé.  Ce sont les instructions sonores, audio ou musicales associées à ce site web.  Cette fonctionnalité de lancement automatique peut être désactivée avec la commande pg qui active ou désactive les plugins.

Si vous avez chargé un fichier audio en mémoire sur votre ordinateur, vous pouvez taper "pb" pour jouer son contenu dans le tampon.  Les données sont placées dans le fichier temporaire /tmp/.edbrowse, et ensuite mpg123 est invoqué.  Finalement, vous pouvez jouer un fichier mp3, ou n'importe quel fichier associé à un plugin, en mode répertoire.  La commande g (go) joue le fichier sur la ligne courante.  Ceci est très efficace; nul besoin de lire le fichier en mémoire ou de créer un fichier temporaire sous /tmp.

La commande « pb » peut signifier "process buffer" ou bien "play buffer".  Par exemple, un descripteur mime pourrait ouvrir une archive zip.

plugin {
type = data/zip
desc = archive zip compressée
suffix = zip
program = unzip %i
}

Certains plugins agissent sur un fichier, comme décrit ci-dessus, mais d'autres convertissent un fichier en quelque chose de lisible.  Ceux-ci de "jouent" pas le fichier; ils font partie de la commande de navigation.  Ce type de plugin est repéré par son attribut de sortie.  Mettez-le à h si la sortie doit pêtre de l'html, ou t si la sortie doit être du texte.  Avec le plugin suivant installé, vous pouvez feuilleter la majorité des fichiets pdf et les lire, qu'ils résident sur votre ordinateur ou sur l'internet.  D'autres plugins pourraient convertir du texte enrichi, des documents Word, des documents Open Office etc. 

plugin {
type = pdf
desc = fichier pdf
suffix = pdf
content = application/pdf
#  %o est le fichier de sortie
program = pdftohtml -i -noframes %i %o >/dev/null
outtype = H
}

plugin {
type = Word doc
desc = document Microsoft Word, pas docx
suffix = doc
content = application/msword
#  sans %o, la sortie est envoyée directement dans le tampon, plus efficace.
program = catdoc %i
outtype = T
}

Notez qu'il existe des convertisseurs pdf en texte qui sautent l'étape intermédiaire html, mais j'ai voulu préserver les fonctionnalités des hyperliens qui pourraient être présents dans le pdf, et donc j'ai pensé avantageux de passer par l'html, même si c'est un peu plus compliqué.

Un exemple de fichier de configuration

La meilleure documentation étant un exemple, je vous propose un fichier de configuration exemple avec de fausses données; Il est bien commenté.  Vous pouvez le télécharger ici.


Chapitre 7, Client de courrier

Envoyer le courrier

Vous pouvez envoyer par mail le contenu de votre session d'édition courante à quelqu'un d'autre par l'intermédiaire de la commande « sm ».  Vos comptes de courrier sont décrits dans votre fichier de configuration.

La plupart des clients mail peuvent automatiquement ajouter une signature à un courriel sortant. Celui-ci ne fait pas exception. En fait, vous pouvez avoir une signature différente pour chacun de comptes mail. Ainsi, vous pouvez utiliser une signature pour vos courriels de travail, et une autre pour les courriels personnels. A l'envoi d'un courriel à partir d'un compte N, Edbrowse cherche un fichier nommé .signatureN, dans votre répertoire personnel. Par exemple, pour l'envoi à partir du compte 2, Edbrowse cherche le fichier .signature2 dans votre répertoire personnel. Si ce fichier n'est pas trouvé, Edbrowse cherche un fichier nommé .signature dans votre répertoire personnel, et ajoute son contenu s'il le trouve.

Les destinataires, les pièces jointes, et le sujet doivent apparaître au début de votre fichier.  La commande « sm » est pointilleuse, aussi regardez bien la syntaxe ci-dessous :

To: fred.flintstone@bedrock.us
CC: barney.rubble@bedrock.us
account: 1
attach: hollyrock-brochure.pdf
Subject: Vacances à Hollyrock
Venez visiter Hollyrock. 
Brochure jointe. 
Sincèrement,
Rock studios incorporated.

La ligne « account » est facultative.  Elle oblige Edbrowse à utiliser le premier compte de courrier indiqué dans votre fichier de configuration « .ebrc ».  Si vous omettez la ligne « account », Edbrowse utilisera le compte par défaut, indiqué par « default » dans votre fichier « .ebrc ». 

Taper « sm5 » indique à Edbrowse d'utiliser le compte 5 de votre fichier de configuration.  Ceci annule la ligne « account » de votre fichier à envoyer, si elle existe.  Il est souvent plus facile de taper « sm5 » que d'insérer « account: 5 ».  Notez, « sm-5 » est identique à « sm5 », mais le fichier .signature n'est pas ajouté à votre envoi.  Parfois vous voulez une fin différente sur votre mail, dans une situation particulière. 

Utilisez les lignes « attach: » pour les pièces jointes.  Chaque ligne doit indiquer le nom de fichier à joindre, et ces lignes doivent précéder la ligne « Subject ».  Si le nom de fichier attaché est simplement un nombre, c'est la session correspondante d'Edbrowse qui sera attachée.  Revenir à l'exemple ci-dessus, où nous essayons d'attacher la brochure pour Hollyrock.  Une autre manière de faire est de commuter à la session 2 et d'y enregistrer le fichier pdf.  C'est un fichier binaire, aucune importance.  Ne pas essayer de l'afficher, mettez-le juste en session 2.  Puis commutez de nouveau à la session 1 et employez la ligne « attach:2 ». 

Si vous employez « attach:2 », au lieu de « attach:hollyrock-brochure.pdf », le destinataire Fred notera une différence.  La pièce jointe n'a pas de nom.  S'il veut sauvegarder la pièce jointe, il devra donner un nom de fichier lui-même.  A part cela, le courrier est identique. 

La directive « alt: » est presque identique à la directive « attach: ».  En employant « alt: » , la pièce jointe n'est pas transférée dans un fichier à part.  Au lieu de cela, c'est une représentation alternative du même mail.  Le client de courrier du destinataire essaiera d'employer l'affichage alternatif si possible.  C'est utilisé pour envoyer un email contenant du multimédia, avec des hyperliens, des images etc.  Le mail primaire est en texte plat, mais la pièce jointe « alternative » est en HTML ou en texte formaté.  À moins que quelque chose n'aille de travers, le destinataire verra la présentation alternative, avec les images et les hyperliens.  Comme les pièces jointes, la ligne « alt: » se rapporte à un fichier ou à une session d'Edbrowse. 

Comme vous l'avez deviné, les lignes « to: » définissent les destinataires.  Veuillez ne pas indiquer plus que quelques destinataires.  Quelques serveurs, mon serveur mail inclus, limitent à 100 le nombre de destinataires.  Si vous dépassez ce nombre, les destinataires restants n'obtiennent simplement pas leur courrier.  De préférence, limiter votre « to: » lignes à une douzaine de lignes. 

Souvenez-vous que « CC » signifie copie carbone.  Ceci indique au destinataire, ici Barney Rubble, qu'il reçoit une copie du mail pour information ; il n'a pas besoin de répondre.  Employer BCC pour la copie carbone cachée, de sorte que chaque destinataire ne voie pas les autres adresses mail. 

En indiquant des destinataires, vous pouvez employer des surnoms au lieu des adresses mail complètes.  Les surnoms sont vérifiés dans votre carnet d'adresses, un fichier texte référencé dans votre fichier de configuration « .ebrc ».  Si votre carnet d'adresses contient la ligne :

fred : fred.flintstone@bedrock.us : 15 rue des tanneurs : 05555382710

alors vous pouvez simplement écrire « to: fred » en tête de votre fichier.  Seuls les deux premiers champs du carnet d'adresses sont significatifs en ce qui concerne Edbrowse.  D'autres champs peuvent contenir des numéros de fax, de téléphone l'adresse postale, etc. 

Noter que « Reply to fred » est une syntaxe alternative pour «to: fred ». 

Quelques pages Web incluent des liens « sendmail ».  Elles ressemblent à d'autres hyperliens, mais elles envoient le mail à la personne appropriée.  Si vous activez un lien « sendmail », vous serez placés en nouvelle session d'édition avec les lignes « to » et de « subject » pré-remplies.  Si l'URL n'indiquait pas de sujet, le sujet est simplement «Hello».  Vous voudrez probablement le remplacer par autre chose.  Tapez votre message puis « sm » pour l'envoyer.  Puis tapez « ^ » pour retourner à la page Web que vous consultiez.  Notez que le corps de votre mail peut également être pré-rempli avec du texte, aussi vérifiez avant d'écrire et d'envoyer. 

Vous pouvez inclure des pièces jointes avec la directive « attach:  » en tête du fichier, supposant que le destinataire peut récupérer ces pièces jointes.  C'est utile quand le lien sendmail demande un rapport de bogue - vous pouvez attacher un programme et/ou ce qu'il a produit.  C'est assez rare.  La plupart des liens de sendmail n'attendent que quelques commentaires ou réactions, et rien d'autre. 

Quelques formulaires de Web sont envoyés par mail, plutôt que par HTTP direct.  Edbrowse les manipule correctement.  Il montre l'adresse mail de destination, envoie le courrier par smtp, et vous avertit de guetter une réponse.  Cette réponse pourrait être une réponse par mail, ou même un appel téléphonique si vous avez fourni votre numéro de téléphone dans le formulaire.  Mais rappelez-vous, ce n'est immédiat. Vous êtes toujours sur la même page Web, immobile à regarder le bouton d'envoi.  Ne poussez plus le bouton ! Le courrier a été envoyé, et vous entendrez parler de la compagnie dans les jours à venir. 

Client d'envoi de courrier

Comme décrit précédemment, Edbrowse incorpore les fonctionnalités d'un client de courrier.  En plus de la commande interactive « sm », vous pouvez envoyer le courrier par lots, à partir de la ligne de commande.  Si Fred et Barney sont dans votre carnet d'adresses, et vous voulez leur envoyer le courrier à partir de la ligne de commande, avec une pièce jointe, en utilisant votre compte primaire de courrier, faites ceci.  (J'assume que e a été aliasé à l'exécutable Edbrowse)

e -m1 fred ^barney hollyrock-notice +hollyrock-brochure.pdf

Le ^ précédent « barney » indique qu'il est un destinataire cc.  Utilisez « ?barney » pour BCC. 

On assume que des fichiers suivis du signe « + » sont des pièces jointes.  S'ils sont binaires, ils seront encodés correctement, selon leur type mime.  Un signe « - » indique un format alternatif, comme ceci :

e -m1 fred ^barney hollyrock-notice -hollyrock-graphical.html

Récupération de courrier

Si Edbrowse est lancé avec l'argument -f, il va récupérer le courrier de tous les comptes, sauf ceux qui sont marqués "nofetch". Alternativement, vous pouvez spécifier un nombre après -f, afin de récupérer le courrier d'un seul compte. Par exemple, -f1 récupérera le courrier du premier compte pop3, ignorant les autres. Après avoir récupéré le courrier, le programme affiche le nombre total de messages reçus. Les messages récupérés sont stockés dans un répertoire nommé unread/, relatif au répertoire courrier spécifié dans votre fichier .ebrc. Vous pourrez les consulter, comme expliqué dans la prochaine section.

Souvenez-vous, vous pouvez indiquer plusieurs comptes de courrier dans votre fichier « .ebrc ».  Le premier compte est indiqué par l'index 1, comme ci-dessus dans « -m1 », et ainsi de suite.  Vous pouvez vous faciliter la vie beaucoup avec quelques alias dans votre fichier « .bashrc ». 

# mon courrier, compte à la maison
alias moi=" e -fm1 "
# le compte de mon épouse. 
alias elle=" e -fm2 "
# mon compte de travail. 
alias travail=" e -fm3 "
# le terme « mail » est obsolète
alias mail="echo utilisez moi, elle, ou travail 

Client interactif de lecture de courrier

Si Edbrowse est lancé avec l'option « -m », et pas autres arguments, il devient client interactif de courrier, vous permettant d'examiner les courriers dans votre répertoire de courriers non lus. Si vous désirez récupérer et lire les messages en même temps, vous pouvez combiner les options -f et -m.

D'abord il vous indique combien de messages vous avez reçu.  S'il n'y a aucun message il indique « Pas de message », et sort.  S'il y a des messages non lus, il les montre un par un. Pour chaque message, il montre l'en-tête (sujet et l'expéditeur) et la première page du texte, et puis affiche un message de sollicitation.  Un « ? » signifie que le message est complet -- Un « * » signifie qu'il reste du texte à lire.  Vous répondez en tapant une touche.  Les touches ont la signification suivante :

? 	résumé des commandes principales
q 	quitte le programme
espace	affiche plus de texte
n 	lit le prochain message
d 	efface ce message
w	sauvegarde ce message dans un fichier, puis le supprime
u 	sauvegarde ce message non formaté dans un fichier et le supprime

Les deux dernières commandes, w et u, exigent un nom de fichier, qu'il faut donner.  Le nom de fichier réservé "x" ou "X" est /dev/null, où courrier est jeté.  Vous pouvez jeter le courrier dans x mais sauvegarder les pièces jointes.  Si le fichier ne s'appelle pas x, et si le programme ne peut pas sauvegarder sous le nom de fichier indiqué, il demande un nouveau nom de fichier.  Noter que X majuscule fera la même chose. 

En pratique, vous pouvez sauvegarder un message avec w, puis réaliser plus tard qu'il vous faut quelque chose, comme un hyperlien ou une pièce attachée, uniquement accessible dans le message non formaté. Quand vous utilisez la commande w pour sauvegarder un message formaté, Edbrowse sauvegarde maintenant une copie non formatée de ce message. Ces copies sont enregistrées dans le répertoire $HOME/.Trash/rawmail, avec des noms de fichiers composées de 5 chiffres. Lorsque vous sauvegardez un message formaté, vous verrez du texte genre "Unformatted 12345" à la fin du fichier. Ceci vous indique où trouver l'original, le message non formaté : $HOME/.Trash/rawmail/12345. Comme indiqué auparavant, c'est une bonne idée de lancer un cron par semaine pour vider la corbeille; si cette tâche cron est capable d'effacer les sous-répertoires, vous êtes certain de ne pas accumuler les courriers non formatés.

Courrier formaté

A la récupération, le courriel est sauvegardé dans le répertoire des messages non lus sans aucun formatage. En d'autres termes, c'est une copie conforme du message existant sur le serveur. Lorsque vous le lisez après avoir lancé Edbrowse avec l'option -m, Edbrowse l'affiche, après avoir appliqué quelques règles de formatage. Vous pouvez sauvegarder le message, brut ou formaté. Sélectionner "w" au prompt sauvegarde le message formaté, tandis que sélectionner "u" sauvegarde le message non formaté.

Quand un mail HTML est affiché, Javascript est désactivé.  Si vous voulez « interagir » avec ce mail, vous devez le sauvegarder non formaté dans un fichier, finir votre session mail, éditer ce fichier, et taper « b » pour naviguer dedans.  A ce moment l'affichage HTML sera actif, comme si vous regardiez une page Web sur un site internet. 

Filtrage de courrier

Votre fichier de configuration supporte un filtrage modeste de courrier.  Vous pouvez réorienter le courrier entrant basé sur l'expéditeur, le récepteur, ou le sujet.  Ces paramètres sont établis dans votre fichier de configuration.  Une règle de filtrage de courrier a la forme :

chaîne de comparaison > fichier de destination

En fait > est quelque peu trompeur.  Si le fichier existe, le mail est ajouté à la fin; le fichier n'est pas tronqué.  Il aurait peut-être fallu employer >>, mais je ne veux pas m'agacer avec ce signe supérieur supplémentaire. 

Le fichier de destination est interprété relativement au répertoire de courrier, défini dans votre fichier de configuration.  Naturellement vous pouvez définir un chemin absolu si vous le souhaitez. 

Une règle de filtrage de courrier s'active toujours dans le contexte d'un bloc de filtrage.  Par exemple, si vous souhaitez réorienter le courrier de certaines personnes, faites ceci :

fromfilter {
fred flintstone > fredmail
fred.flintstone@bedrock.us > fredmail
jerk@hotmail.com > x
word@m-w.com > -wod
}

Vous pouvez indiquer le nom de l'expéditeur, ou son adresse mail.  Ce n'est pas une mauvaise idée de faire les deux, au cas où il enverrait le courrier d'un autre compte etc. 

Noter que je n'ai pas mis Fred Flintstone en majuscules.  Les comparaisons sont insensibles à la casse. 

Le nom de fichier « x » est spécial ; il met le courrier à la poubelle.  Utilisez-le pour supprimer le courrier des personnes qui vous harcèlent constamment, ou envoient des spams. 

La dernière ligne envoie le courrier à « -wod ».  L'en-tête « - » est spéciale ; elle signifie que le courrier va être sauvegardé dans le fichier « wod » non formaté.  Précisément, c'est le mot du jour de Merriam Webster.  Je le sauvegarde non formaté, ainsi je peux le parcourir et cliquer sur {audio} pour entendre le mot.  Si un mail contient des hyperliens, sauvegardez-le non formaté, ainsi vous pourrez le consulter plus tard. 

Vous pouvez également filtrer le courrier sur le champ « to: ».  C'est utile si vous avez plusieurs comptes, ou des alias qui redirigent le courrier sur votre compte primaire.  Voici un bloc témoin :

tofilter {
support@my-side-business.com > appui
sales@my-side-business.com > ventes
@my-side-business.com > affaires
me@my-regular-dayjob.com > travail
}

La troisième entrée est une adresse de capture, sauvegardant n'importe quel courrier envoyé à ce domaine.  Puisque les règles sont appliquées dans l'ordre, des demandes d'appui sont stockées dans un fichier appelé « appui », les ventes sont stockées dans un fichier appelé « ventes », et tous les autres mails envoyés au travails seront stockés dans « affaires ». 

Vous pouvez également employer des adresses de capture dans le bloc « fromfilter ».  Toute chose de ce domaine va ici, etc. 

Vous pouvez filtrer sur le sujet, en utilisant le bloc « subjfilter{…} ».  Ceci peut stopper un virus.  Si un virus utilise un sujet du genre de « viens m'embrasser », envoyez « viens m'embrasser » à x, et il a disparu. 

Vous pouvez également employer ce dispositif pour bloquer les avertissements d'autres fournisseurs d'accès internet, se plaignant que vous leur avez envoyé des mails infectés par des virus.  Vous non, naturellement, parce que vous êtes linux, avec un clirent non-standard.  Votre adresse de réponse a été récupérée, et vous recevez donc l'avertissement de virus, mais vous n'en avez vraiment rien à faire.  C'est appelé rétrodiffusion.  Les lignes comme celle-ci peuvent éliminer ces faux avertissements. 

subjfilter {
Viens m'embrasser > x
Net Integrator Virus Alert > x
}

Pour finir, l'adresse de réponse est recherchée dans votre carnet d'adresses.  Si elle est trouvée, le courrier est archivé dans un fichier dont le nom est l'alias de l'adresse.  Considérons une ligne de votre carnet d'adresses qui pourrait ressembler à ceci : « fred : Fred.Flintstone@SomeDomain.com ».  Quand vous recevez un mail de cette adresse, elle est sauvegardée dans le fichier fred.  Ainsi vous n'avez pas besoin d'écrire des entrées superflues dans le filtre.  Il n'y a aucun besoin d'inclure Fred.Flintstone@SomeDomain.com > fred. 

Si vous voulez sauver le courrier de Fred non formaté, placer un signe moins, c'est-à-dire « -fred », dans votre carnet d'adresses.  C'est la même convention que celle du filtre « from: ».  Si vous ne voulez pas que le courrier de Fred soit réorienté, mais que vous voulez toujours employer le surnom fred à l'envoi de courrier, placez un point d'exclamation au début, c'est-à-dire !fred.

Si un mail est redirigé sur un fichier, et qu'il possède des pièces jointes, Edbrowse demandera que faire avec ces pièces jointes, comme si vous aviez employé la commande « w » pour sauvegarder le courrier.  Si votre ami vous a envoyé un programme (en pièce jointe) qu'il veut que vous regardiez, tapez simplement la touche entrée pour la sauvegarder sous le nom de fichier par défaut.  Si le courrier de votre ami a un certain genre de logo, ou un fond d'image, qui ne vous intéresse pas, tapez « x » et le mail disparaîtra.  Si l'image a un suffixe reconnaissable, tel que GIF, je le jette automatiquement.  Si vous voulez vraiment ces images, vous devez sauvegarder le mail non formaté, et le consulter plus tard.  A la consultation d'un mail dans l'éditeur, Edbrowse vous permet de récupérer toutes les pièces jointes, que ce soit des images ou non. Vous pouvez ignorer une pièce jointe particulière en tapant x, et toutes les pièces jointes en tapant X majuscule.

Employez l'option « -p » pour désactiver les filtres, comme dans « e -pm1 ».  Je l'ai implémenté en regardant le courrier d'autres personnes, tel celui de mon épouse.  Je ne veux pas que son courrier parte n'importe où parce qu'il correspond à l'une des règles de mon filtre. 

Réponse au courrier

La commande "re" prépare un courriel pour la réponse. La ligne "Reply to" (Répondre à) qui doit exister est déplacée vers le haut. Celle-ci contient l'adresse e-mail à laquelle vous allez répondre, et elle est créée lorsque vous consultez votre e-mail. Si cette ligne n'est pas présente, la commande "réponse" échouera.

La ligne "Subject:" (sujet) doit également être présents. Elle aussi aussi est créée lorsque le courrier est formaté. Après que la commande "re" ait été tapée, le sujet peut être déplacé en bas de page, pour faire de la place à d'autres en-têtes de courriel, comme suit.

Si ce message vient d'être lu, et si des données non formatés existent encore dans l'actuelle session Edbrowse, ou si les mees données sont présentes dans le fichier de données maildir/.reply, alors re insère le numero d'identification du message d'origine. Celui-ci doit faire partie de la réponse. La ligne pourrait ressembler à ceci.

Reply to somebody@foo.bar.com
references: <4387A55E6AF43C4F9830C74EFECE9132022D0638@foo-bar.net>
Subject: qu'est-ce qu'il y a ?

Vous n'aurez pas à corriger, modifier ou supprimer la ligne référence. Laissez-là telle quelle. Si vous participez à une liste de discussion, cette ligne est importante. Elle indique au serveur que votre réponse est effectivement une réponse, et qu'elle devrait être liée au message référencé. En utilisant cette information, le serveur entretient les fils de discussion. Si vous supprimez cette ligne avant d'envoyer votre réponse, vous allez créer un nouveau fil de discussion, et ce qui ne fera que désorienter et perturber les autres participants. Alors - si vous devez répondre à un message sur une liste de discussion, assurez-vous que la commande re insère la ligne References:, et laissez-la telle quelle. Editez le corps du message, ajoutez vos commentaires, et envoyez.

Parfois, la ligne références aura deux identifiants séparés par un espace. Le premier est le début du fil de discussion, le message qui a débuté ce sujet, et le second est le commentaire auquel vous répondez directement. Encore une fois, cela contribue à l'organisation des messages en fils de discussion par les serveurs de listes.

La commande "rea" signifie répondre à tous, et utilise de la même façon les en-têtes du courriel original. Tous les destinataires s'affichent en haut de votre fichier. Certains seront indiquées par cc, s'ils étaient en copie carbone. Vous pouvez supprimer un de ces destinataires avant d'envoyer votre réponse. Bien sûr, vous ne voudrez probablement pas supprimer la première ligne, car c'est la réponse au premier expéditeur.

Si le mail n'était pas formaté, et si vous aviez tapé b pour naviguer dedans, la commande "re" sort du mode navigation, et transforme le fichier en un fichier texte simple. Ce qui permet l'édition de texte, de rédiger votre réponse dans le corps du message. Si vous voulez recommencer à partir de zéro, vous ne pouvez pas juste quitter le mode navigation, parce que vous n'êtes pas en mode navigation. Vous devez ré-éditer le message de courrier sauvegardé, le consulter en mode navigation, et y répondre. Comme tout le reste dans Edbrowse, vous vous habituerez à utiliser ce qui précède une fois que vous aurez pratiqué.

Client Imap

Un client pop3, tel que décrit ci-dessus, télécharge le courrier sur votre ordinateur, courrier dont vous êtes ensuite responsable. Vous devez archiver vos mails, si vous le souhaitez, les sauvegarder, etc.. Le protocole Imap vous permet de conserver vos mails sur le serveur indéfiniment, dans le nuage si vous préférez. Vous pouvez accéder à vos mails, peut-être 20 ans après, peut-être 100000 messages, depuis n'importe quel ordinateur, tablette ou smartphone. Vous pouvez télécharger les emails localement, si vous le souhaitez, mais ce n'est pas obligatoire. C'est davantage une approche orientée serveur. La configuration initiale de gmail, pour imap, ressemble à ceci :
mail {
  imap
  inserver = imap.gmail.com
  outserver = smtp.gmail.com
  secure
  login = quelqun@gmail.com
  password = secret
  reply = quelqun@gmail.com
  from = nom complet
}

Si ce qui précède est la troisième entrée Mail dans votre fichier de configutration, alors vous accédez à ce compte avec "edbrowse -f3". Ceci na rapatrie pas simplement tous les mails sur votre ordinateur local, comme c'est le cas avec un compte pop3. Edbrowse vous permet plutôt d'accéder à tous vos mails sur le serveur imap de façon interactive. Voici une capture d'écran.

 1 INBOX, 0 messages
 2 [Gmail]/Tous les mails, 7 messages
 3 [Gmail]/Brouillons, 0 messages
 4 [Gmail]/Important, 0 messages
 5 [Gmail]/Envoyés, 0 messages
 6 [Gmail]/Spam, 7 messages
 7 [Gmail]/Marqués, 0 messages
 8 [Gmail]/Corbeille, 16 messages
Select a folder by number or by substring.
Choisissez un dossier par numéro ou par sous-chaîne.
Prefixez par - uniquement les messages non lus. q pour quitter. l pour changer la limite maximale de récupération.

Tapez 6, ou Corbeille, ou simplement Cor et Edbrowse vous permet de naviquer dans le dossier Corbeille. Il affiche l'expéditeur, le sujet, la date et la taille de chaque mail, et vous demande quoi faire, comme dans l'interface du client pop3. Tapez q pour quitter, n pour le message suivant, d pour l'effacer, ou m pour le déplacer dans un autre dossier. Ici aussi, vous pouvez spécifier le dossier de destination par le numéro ou par son nom. Tapez espace pour lire le corps du mail, et continuez à taper espace, comme more ou less, pour lire la suite du mail. Tapez w pour enregistrer le mail formaté, ou W pour le sauvegarder et l'effacer ensuite. Tapez u ou U pour enregistrer le mail non formaté. Tapez a pour enregistrer les pièces attachées. Tapez l pour modifier la limite de récupération, c'est-à-dire le nombre de mails affichés simultanément. Tapez / pour rechercher dans les mails par sujet, expéditeur ou dans le corps Tapez h pour l'aide, qui ressemble à ceci :


h   affiche ce message d'aide.
q   quitte ce programme.
s   arrête la lecture dans ce dossier.
n   message suivant.
d   efface cet email.
m   dépalce ce mail dans un autre dossier.
espace   lit et traite ce mail.
/   recherche des mots dans le sujet, l'expéditeur ou le corps du message.
l   définit la limte de récupération imap.

Sur certains serveurs, comm gmail, vous ne pouvez effacer un mail dans le dossier "Tous les mails". Vous devrez déplacer ce mail dans la Corbeille et l'y effacer.

La recherche est insensible à la casse, et recherche souvent des mots, plutôt que des sous-chaînes. Ainsi, anti trouve Anti, mais antique. L'implémentation dépend de votre serveur imap. Par défaut, la recherche se fait dans le sujet. Tapez "f Smith" pour rechercher les mails de Smith, ou "b étoile noire" pour trouver tous les mails contenant étoile noire. S'il y des milliers sont trouvés, seuls les 100 derniers sont affichés. Vous pouvez modifier cette limite avec la commande l.


Chapitre 8, Accès aux bases de données

Compiler Edbrowse avec accès aux bases de données

Si vous tapez simplement « make », vous obtenez Edbrowse, sans fonctionnalités base de données.  Une cible particulière de compilation permet l'accès aux bases de données à travers odbc.  Lancer «make edbrowseodbc » pour linker Edbrowse à odbc.  Ceci suppose que vous avez installé les packages unixODBC et unixODBC-devel sur votre machine. Une autre cible, edbrowseinf, donne accès à la base de données Informix. Ceci fonctionne, mais n'est pas supporté. D'autres interfaces à des bases de données spécifiques peuvent être développées. Vous devrez mettre en application l'interface décrite dans « dbapi.h », en utilisant le kit de développement de base de données écrit en C fourni par le vendeur.  Comme odbc peut se connecter à n'importe quelle base, cela dervrait satisfaire vos besoins.

Lire les tables

Quand un nom de fichier est d'un certain format, avec http:// en tête, il est considéré être une URL.  Edbrowse ne cherche pas le fichier sur votre ordinateur ; il sort sur l'Internet.  De même, quand le nom de fichier a un certain format, on suppose que c'est une table ou une vue dans la base de données.  Si vous avez une table appelée clients, vous l'appelez avec un crochet droit. 

e clients]

Ceci permet de récupérer la table entière, ou des parties, un enregistrement par ligne, avec des champs délimités par des pipes (caractère « | »).  Si le résultat ressemble à un groupe de nombres et de pipes, et que vous avez oublié la structure de la table, tapez « shc » (show colums).  L'affichage pourrait ressembler à ceci:

Table clients 536281 rows
1 *numero int
2 prenom string
3 nom string
4 date_de_naissance date
5 sexe char
6 email string
7 image blob

La première colonne est un numéro unique qui indique ce client particulier.  Après tout, deux clients pourraient avoir les mêmes prénom, nom, et date de naissance.  Les numéros sont toujours une bonne idée, et ils constituent habituellement la clef primaire.  Ceci est indiqué par le caractère « * », juste avant le nom de colonne.  Si Edbrowse modifie ou supprime un enregistrement, la clef primaire est employée.  Je suppose que, à tout moment, la clef détermine un enregistrement unique dans la base de données, et que chaque enregistrement apparaît au plus une seule fois en session d'édition. Vous pouvez afficher deux fois le numéro 37, en ayant deux copies dans votre tampon, mais ne le faites pas !

Noter que Edbrowse peut supporter une clef primaire sur deux ou trois colonnes, telles qu'un numéro de série et un modificateur.  J'ai quelques tables au travail qui fonctionnent comme ceci.  Cependant, Edbrowse ne supporte pas plus de trois colonnes pour une clé primaire. Si la clé primaire compore plus de trois colonnes, ou si la table n'a pas de clé primaire, vous ne pourrez pas mettre à jour ou effacer des enregistrements.

La syntaxe des tables est davantage qu'un nom et un crochet droit.  Vous pouvez faire suivre le crochet droit avec la clause « where ».  C'est important si vous ne voulez pas afficher la table entière, surtout s'il y a des millions d'enregistrements.  Voici quelques commandes de table et leurs significations. 

clients]
Établit le tampon pour la table de clients, mais sans récupération d'enregistrements. 

clients]*
Récupérer tous les enregistrements de la table. 

clients]37
Chercher le client dont le numéro de série est 37.  La clef primaire est assumée ; votre table doit avoir une clef primaire si vous voulez employer cette syntaxe. 

clients]1=37
Chercher l'enregistrement dont la première colonne est 37. 

clients]37-59
Chercher les clients dont les numéros de série sont compris entre 37 et 59 inclus. 

clients]2=Joe
Chercher les clients dont le prénom est Joe. 

clients]prenom=Joe
idem : chercher les clients ont le prénom est Joe. 

clients]pre=Joe
Idem.  Si la chaîne correspond à un unique nom de colonne, cela fonctionne. 

clients]nom=arn*
Chercher les clients dont les noms commencent par « arn ». 

clients]date_de_naissance=01/01/1960-31/12/1960
Chercher les clients qui sont nés en 1960. 

Il est parfois préférable pour éditer les enregistrements de commencer avec une grille vide, c'est-à-dire sans clause « where ».  Vous pouvez lire ainsi dedans les enregistrements qui vous intéressent.  Tapez un « r » avant les commandes ci-dessus pour lire des enregistrements dans votre tampon.  Notez, vous ne pouvez pas lire des données de différentes tables dans le même tampon, mais vous pouvez commuter sur une autre session d'édition pour consulter une autre table, sans perdre les données sur lesquelles vous travaillez. 

En lisant des lignes dans le tampon, vous pouvez omettre le nom de table, puisque ce doit être des clients] à chaque fois.  Ainsi, vous pouvez récupérer le client #738 en tapant « r clients]738 » ou « r 738 ». 

Si vous voulez une grille propre, Tapez « rf » pour régénérer le tampon.  Ceci vous ramène de nouveau à une grille vide pour la table, sans les lignes.  AVERTISSEMENT – n'effacez pas votre tampon en supprimant toutes les lignes, cela supprimera les entrées correspondantes dans la base de données.  Ce dispositif fonctionne juste comme le mode répertoire – vos modifications sont traduites en actions réelles, aussi faites attention.  L'intégrité référentielle vous sauvera habituellement de ce désastre accidentel, si vous employez d'habitude ce dispositif SQL pour relier des tables entre elles, ce qui est une bonne idée à bien des égards. 

Maintenant, que dire à propos de la septième colonne de notre exemple, celui qui est appelé « image » ? C'est l'image du client, une image jpg qui est binaire, et ne peut pas être facilement placée dans une session d'édition.  Au lieu de cela, elle est stockée dans un autre tampon, par exemple le tampon 9, et ceci est indiqué par <9>.  Vous pouvez commuter à la session 9 et sauvegarder le fichier, ou le jeter. 

2139|Fred|Flintstone|08/21/1969|M|foo@bar.bar.com|<9>

Par défaut, les colonnes binaires ne sont pas lues. En principe, vous ne les voulez pas. Pour les lire, utilisez la commande fbc. Il n'est pas possible de lire plus d'une colonne à la fois, aussi soyez certain de n'en sélectionner qu'une seule.

Sources de données

Pour travailler sur la base de données, votre fichier de configuration doit indiquer le nom de la base de données, le nom d'utilisateur, et le mot de passe.  La source de données doit correspondre à l'une des entrées dans votre fichier .odbc.ini. (Nom d'utilisateur et mot de passe peuvent parfois être omis, s'ils sont inférés de votre identité sur l'ordinateur ou définis dans la source de données du fichier .odbc.ini).  Voici comment la ligne pourrait ressembler si vous vous connectez sur la base de données « ventes », qui contient la table « clients »

database = ventes, nom utilisateur, mot de passe

Ceci peut être modifié à la volée par la commande ds=. Assurez-vous de ne pas faire référence à d'anciennes lignes dans le tampon après avoir sélectionné une nouvelle source de données.

Dans certains cas, vous pouvez accéder à d'autres bases de données sans changer la source de données.  Par exemple, vous pouvez lire la table « pièces » dans la base de données « inventaire » par appel de « inventaire:pièces] ».  C'est la syntaxe standard de SQL pour accéder aux tables d'une autre base de données. 

Insertion, mise à jour, effacement

Maintenant que nous avons fait quelques requêtes, nous allons modifier quelques données.   Ce opérations sont connus sous les noms insert, update et delete dans le monde des bases de données.

Ajouter des enregistrements à une base de données est substantiellement différent de l'ajout de texte.  Puisqu'une ligne peut contenir une douzaine de champs, et que vous pouvez ne pas vous rappeler qu'est-ce qui va où, Edbrowse vous interroge pour chaque champ séparément.  Il vérifie également l'intégrité de chaque champ dès que vous en sortez, par exemple une date doit ressembler à jj/mm/aaaa etc.  Si une ligne ne peut pas être ajoutée en raison d'une erreur de la base de données, Edbrowse affiche l'erreur, et la saisie de données continue, vous donnant une chance de réintroduire la ligne.  La saisie de données s'arrête quand vous entrez un point seul, quelque soit le champ dans lequel vous êtes.  Les lignes qui ont été entrées avec succès seront présentes dans votre tampon, et la ligne courante est la dernière ligne entrée.  Noter que les données binaires (blobs) ne peuvent pas être entrées à ce stade. 

Une ligne apparaît telle que vous l'avez entrée; et peut différer des valeurs actuelles dans la base de données. Par exemple, vous pouvez entrer un null dans un champ dont la valeur par défaut est 3. Dans la base de données, la valeur est 3, mais il n'y a rien dans ce champ dans votre tampon. Un autre champ peut tronquer un nombre flottant, selon la précision de cette colonne. Et il a aussi les déclencheurs. Les données peuvent être modifiées de multiples façons à mesure qu'elles entrent dans la base de données. il serait préférable de rafraîchir chaque ligne à chaque insertion, pour voir exactement ce qu'elle contient, mais ce n'est pas encore implémenté. Rappelez-vous, vous pouvez à tout instant taper "rf" pour avoir un tampon vide, et ensuite relire les lignes que vous venez d'insérer.

Si la première colonne d'une clé primaire est un entier, et que entrez un 0, je sélectionne le nombre suivant. Certaines bases de données le font de façon interne, d'autres non. Je pense que ce serait pratique de le faire avant. Il y a ici une possibilité de duplication, si vous et quelqu'un d'autre entrent le même numéro : c'est peu probable, et cela entraînera dans tous les cas une erreur "duplicate key".

Employez la commande remplacement pour mettre à jour une ligne.  Assurez-vous que vous n'avez pas accidentellement ajouté ou effacé un caractère pipe.  Des colonnes d'index primaire ne peuvent être modifiées.  Si vous mettez à jour beaucoup de lignes avec une commande, en spécifiant un intervalle ou par « g//s », et si une erreur se produit pendant la mise à jour, la substitution s'arrête là. La session d'édition reflétera la base de données, avec quelques lignes modifiées et d'autres intactes. Il y a beaucoup de causes d'erreurs de mise à jour, par exemple une erreur de type (un nombre entier dans un champ de date), un non respect des contraintes (J pour le sexe, au lieu de M ou de F). Si on demande votre avis dans la conception d'une base de données, appliquez des contraintes partout où elles ont du sens. Elles vous protégeront contre les substitutions incorrectes, lesquelles produiraient des données inconsistentes. 

La suppression fonctionne exactement comme attendu ; supprimer une ligne, et l'entrée correspondante disparaît.  Il n'y a pas de commande « annuler ».  Ce serait impossible, puisque vous avez pu ne sélectionner qu'une partie de la ligne (voir ci-dessous), et je n'aurais pas toutes les données pour reconstituer la ligne.  Comme mentionné auparavant, l'intégrité référentielle devrait être utilisée partout où c'est possible.  Comme dernier contrôle, je vous autorise à ne supprimer que 100 lignes à la fois.  Soyez prudent, et faites des sauvegardes régulières. 

Descripteurs de tables

Supposez qu'une table contient 100 champs.  Afficher tous ces champs serait pénible, c'est le moins qu'on puisse dire.  Parfois vous êtes intéressé par un groupe de 6 champs, et parfois vous êtes intéressé par un autre groupe de 8.  Vous pourrez établir des tables virtuelles, semblables aux vues, dans votre fichier de configuration.  Le nom court est un alias, et vous pouvez appeler la table en utilisant cet alias.  Elle contiendra seulement les colonnes que vous indiquez.  Voici deux descripteurs pour la table mentionnée ci-dessus de clients. 
table {
  tname = clients
# cnm est mon nom de code pour la table clients
# je le code, parce que je vais le taper souvent. 
  tshort = cnm
  cols = numero, prenom, nom
# indique la clef primaire, dans ce cas-ci, la première colonne choisie. 
  keycol = 1
}

table {
  tname = clients
# tout ce que je veux ici, c'est le numero de client et sa date de naissance. 
  tshort = cbd
  cols = date_de_naissance, numero
  keycol = 2
}

En insérant un enregistrement dans un de ces descripteurs, rappelez-vous que ce n'est qu'un sous-ensemble des colonnes de la table.  Les autres colonnes seront nulles, ou elles prendront les valeurs par défaut définies dans le schéma de table.  Si vous recevez une erreur « Not-Null », elle pourrait être due à une des autres colonnes, qui exige une valeur.  Il est habituellement plus sûr d'insérer un enregistrement en utilisant la table complète. 

Go SQL

Si vous connaissez le truc, vous pouvez insérer des commandes sql directement dans la base de données, comme le programme isql livré avec odbc. Dans un tampon de texte (pas dans un tampon de table), placez un crochet fermant en début de ligne, et écrivez ensuite votre commande sql. L'instruction peut tenir sur plusieurs lignes, mais elle doit se terminer par un point-virgule à la dernière ligne, ou bien un crochet fermant au début de la ligne suivante. Tapez "g" pour envoyer l'instruction à la base de données. C'est semblable au "g" sur une page web, qui suit un hyperlien. Vous serez averti d'une erreur quelconque, ou du nombre de lignes modifiées. Si vous avez tapé une instruction select, les lignes récupérées apparaîtront juste à la suite de l'instruction, avec des pipes délimitant les colonnes. Tout ceci se produit dans le tampon courant. Vous pouvez effacer ce dont vous n'avez pas besoin (c'est juste du texte), ou bien sauvegarder les données dans un fichier et les importer dans un tableur. Pour faciliter les choses, les lignes récupérées sont délimitées par les labels 'a et 'b. Ainsi, vous pouvez sauvegarder les données avec la commande 'a,'bw.

Les requêtes peuvent être sauvegardées dans un fichier pour un usage futur. Appelez-les, modifiez quelques paramètres, et lancez-les.

] select * from clients, adresses
where numero = numero_rue and type_adresse = "personnelle"
and numero between 500 and 600;



Retour au début