Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

groff

Groff est une suite de programmes contenant l'implémentation GNU de troff. Elle inclut également un script permettant d'émuler nroff et le reste de la famille roff.


Si roff et ses descendants sont utilisés pour créer des documents formatés, mais ils le font d'une manière assez étrangère aux utilisateurs modernes. Aujourd'hui, la plupart des documents sont produits à l'aide de traitements de texte capables d'effectuer la composition et la mise en page d'un document en une seule étape. Avant l'avènement du traitement de texte graphique, les documents étaient souvent produits selon un processus en deux étapes impliquant l'utilisation d'un éditeur de texte pour la composition et d'un processeur, tel que trof, pour appliquer la mise en forme. Les instructions du programme de mise en forme étaient intégrées au texte composé grâce à l'utilisation d'un langage de balisage. L'analogue moderne d'un tel processus est la page Web, qui est composée à l'aide d'un éditeur de texte, puis rendue par un navigateur Web utilisant HTML comme langage de balisage pour décrire la mise en page finale.

Nous n'allons pas couvrir groff dans son intégralité, car de nombreux éléments de son langage de balisage traitent de détails typographiques assez obscurs. Nous allons plutôt nous concentrer sur l'un de ses packages de macros qui reste largement utilisé. Ces packages de macros condensent de nombreuses commandes de bas niveau en un ensemble plus restreint de commandes de haut niveau, ce qui facilite leur utilisation. groff beaucoup plus facile.

Considérons un instant l'humble page de manuel. Elle se trouve dans / usr / share / man répertoire en tant que gzip fichier texte compressé. Si nous examinions son contenu non compressé, nous verrions ce qui suit (la page de manuel de ls dans la section 1 est montré) :


[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | tête

.\" NE MODIFIEZ PAS CE FICHIER ! Il a été généré par help2man 1.35.

.TH LS "1" "Avril 2008" "GNU coreutils 6.10" "Commandes utilisateur"

.SH NOM

ls \- liste le contenu du répertoire

.SH SYNOPSIS

.B ls

[\fIOPTION\fR]... [\fIFILE\fR]...

.SH DESCRIPTION

.\" Ajoutez toute description supplémentaire ici

.PP

[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | tête

.\" NE MODIFIEZ PAS CE FICHIER ! Il a été généré par help2man 1.35.

.TH LS "1" "Avril 2008" "GNU coreutils 6.10" "Commandes utilisateur"

.SH NOM

ls \- liste le contenu du répertoire

.SH SYNOPSIS

.B ls

[\fIOPTION\fR]... [\fIFILE\fR]...

.SH DESCRIPTION

.\" Ajoutez toute description supplémentaire ici

.PP


image

Par rapport à la page de manuel dans sa présentation normale, nous pouvons commencer à voir une corrélation entre le langage de balisage et ses résultats :


[moi@linuxbox ~]$ homme ls | tête

Commandes utilisateur LS(1)

LS(1)

[moi@linuxbox ~]$ homme ls | tête

Commandes utilisateur LS(1)


Nom

Nom


ls - liste le contenu du répertoire

ls - liste le contenu du répertoire


SYNOPSIS

ls [OPTION]... [FICHIER]...

SYNOPSIS

ls [OPTION]... [FICHIER]...


La raison pour laquelle cela est intéressant est que les pages de manuel sont rendues par groff, En utilisant l' homme-doc package de macros. En fait, nous pouvons simuler man commande avec le pipeline suivant :



[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | head

Commandes utilisateur LS(1) LS(1)


Nom

ls - liste le contenu du répertoire


SYNOPSIS

ls [OPTION]... [FICHIER]...

[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T ascii | head

Commandes utilisateur LS(1) LS(1)


Nom

ls - liste le contenu du répertoire


SYNOPSIS

ls [OPTION]... [FICHIER]...


Ici, nous utilisons le groff programme avec les options définies pour spécifier le mandoc package macro et le pilote de sortie pour ASCII. groff Peut produire des sorties dans plusieurs formats. Si aucun format n'est spécifié, PostScript est utilisé par défaut :



[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc | head

%!PS-Adobe-3.0

%%Créateur : groff version 1.18.1

Date de création : jeu. 5 févr. 13 44:37:2009

%%DocumentNeededResources : police Times-Roman

Police %%+ Times-Bold

police %%+ Times-Italic

%%DocumentSuppliedResources : procset grops 1.18 1

%%Pages : 4

%%PageOrder : Ascendant

Orientation : Portrait

[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc | head

%!PS-Adobe-3.0

%%Créateur : groff version 1.18.1

Date de création : jeu. 5 févr. 13 44:37:2009

%%DocumentNeededResources : police Times-Roman

Police %%+ Times-Bold

police %%+ Times-Italic

%%DocumentSuppliedResources : procset grops 1.18 1

%%Pages : 4

%%PageOrder : Ascendant

Orientation : Portrait


Nous avons brièvement mentionné PostScript dans le chapitre précédent, et nous le ferons à nouveau dans le chapitre suivant. PostScript est un langage de description de page utilisé pour décrire le contenu d'une page imprimée à un périphérique de type typographie. Si nous prenons la sortie de notre commande et la stockons dans un fichier (en supposant que nous utilisions un bureau graphique avec un Bureau annuaire):


[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc >

~/Desktop/foo.ps

[moi@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc >

~/Desktop/foo.ps


Une icône du fichier de sortie devrait apparaître sur le bureau. Un double-clic sur l'icône devrait ouvrir une fenêtre de visualisation et afficher le fichier dans sa forme originale :


image

Figure 4 : Affichage de la sortie PostScript avec une visionneuse de pages dans GNOME


Ce que nous voyons est une page de manuel bien composée pour ls! En fait, il est possible de convertir le fichier Post-Script en PDF (Portable Document Format) fichier avec cette commande :



[moi@linuxbox ~]$ ps2pdf ~/Desktop/foo.ps ~/Desktop/ls.pdf

[moi@linuxbox ~]$ ps2pdf ~/Desktop/foo.ps ~/Desktop/ls.pdf


La ps2pdf programme fait partie du script fantôme package, qui est installé sur la plupart des systèmes Linux qui prennent en charge l'impression.


image

Astuce : les systèmes Linux incluent souvent de nombreux programmes de ligne de commande pour le format de fichier


image


image

conversion. Ils sont souvent nommés selon la convention de le format2le format. Essayez d'utiliser la commande ls /usr/bin/*[[:alpha:]]2[[:alpha:]]* pour les identifier. Essayez également de rechercher des programmes nommés le formatàle format.


image

Pour notre dernier exercice avec groff, nous allons revoir notre vieil ami distributions.txt encore une fois. Cette fois, nous utiliserons le tbl programme permettant de formater les tableaux pour composer notre liste de distributions Linux. Pour ce faire, nous utiliserons notre précédent sed script pour ajouter du balisage à un flux de texte que nous allons alimenter groff.

Tout d’abord, nous devons modifier notre sed script pour ajouter les éléments de balisage nécessaires (appelé demandes in groff) cette tbl nécessite. À l'aide d'un éditeur de texte, nous allons modifier distributions.sed aux éléments suivants:


# script sed pour produire un rapport sur les distributions Linux


1 je\

.TS\

boîte centrale;\ cb ss\

cb cb cb\ ln c.\

Rapport sur les distributions Linux\

=\

# script sed pour produire un rapport sur les distributions Linux


1 je\

.TS\

boîte centrale;\ cb ss\

cb cb cb\ ln c.\

Rapport sur les distributions Linux\

=\


Nom

_

Version

Libéré\

Nom

_


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

$ un\

s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

$ un\


image

Notez que pour que le script fonctionne correctement, il est important de bien séparer les mots « Nom » et « Version publiée » par des tabulations et non des espaces. Nous enregistrerons le fichier obtenu sous le nom distributions-tbl.sed. tbl utilise l' . TS et demandes de début et de fin de table. Les lignes suivant les . TS La requête définit les propriétés globales du tableau. Dans notre exemple, elles sont centrées horizontalement sur la page et encadrées. Les lignes restantes de la définition décrivent la disposition de chaque ligne du tableau. Exécutons à nouveau notre pipeline de génération de rapports avec la nouvelle propriété. sed script, nous obtiendrons ce qui suit :


[moi@linuxbox ~]$ trier -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t -T ascii 2>/dev/null

+------------------------------+

| Rapport sur les distributions Linux |

+------------------------------+

[moi@linuxbox ~]$ trier -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t -T ascii 2>/dev/null

+------------------------------+

| Rapport sur les distributions Linux |

+------------------------------+



image

| Nom Version publiée |

+------------------------------+


|Fedora

5

2006-03-20

|

|Fedora

6

2006-10-24

|

|Fedora

7

2007-05-31

|

|Fedora

8

2007-11-08

|

|Fedora

9

2008-05-13

|

|Fedora

10

2008-11-25

|

|SUSE

10.1

2006-05-11

|

|SUSE

10.2

2006-12-07

|

|SUSE

10.3

2007-10-04

|

|SUSE

11.0

2008-06-19

|

|Ubuntu

6.06

2006-06-01

|

|Ubuntu

6.10

2006-10-26

|

|Ubuntu

7.04

2007-04-19

|

|Ubuntu

7.10

2007-10-18

|

|Ubuntu

8.04

2008-04-24

|

|Ubuntu

8.10

2008-10-30

|

+------------------------------+


Ajout du -t Option de groff lui demande de prétraiter le flux de texte avec tbl. De même, le -T L'option est utilisée pour sortir en ASCII plutôt que le support de sortie par défaut, PostScript.

Le format de sortie est optimal si l'on est limité aux capacités d'un terminal ou d'une imprimante de type machine à écrire. En spécifiant une sortie PostScript et en visualisant graphiquement la sortie, on obtient un résultat bien plus satisfaisant :



[moi@linuxbox ~]$ trier -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t > ~/Desktop/foo.ps

[moi@linuxbox ~]$ trier -k 1,1 -k 2n distros.txt | sed -f distros-tbl

.sed | groff -t > ~/Desktop/foo.ps


image

Figure 5 : Affichage du tableau terminé


Meilleur système d'exploitation Cloud Computing chez OnWorks :