Cette section présente des informations qui ne seront pas toujours utiles, mais qui peuvent améliorer l'impression ou permettre d'imprimer dans des conditions particulières.
lpr
accepte entre autres l'option -#N, qui permet d'imprimer N fois les données spécifiées, et l'option -d qui permet de supprimer le fichier dès que la demande d'impression est éxécutée.
pr
permet d'ajouter des informations à chaque page du fichier imprimé, comme un en-tête avec l'option -h, ou permet certains réglages comme régler le nombre de lignes par pages avec l'option -l :
pr -h "Fichier bidon" -l60 /tmp/x.out | lpr -Psimple
Le tableau 9.14 présente les autres options de la commande pr
.
lpr -Psimple -s /tmp/x.out
On ne peut cependant pas éditer ou supprimer ce fichier tant que l'impression n'est pas terminée. Si l'imprimante est distante (en réseau), le fichier sera quand même copié dans le répertoire de spool.
/etc/printcap
avec le champ lp= vide, le champ rm= contenant le nom du système distant, et le champ rp= le nom de l'imprimante distante :
# Imprimante simplet. # Imprime sur l'imprimante "simple" connectee sur "cameleon" simplet|simple-printer|Une simple imprimante en reseau:\ :sd=/usr/spool/lpd:\ :lp=:\ :rm=cameleon:\ :rp=simple:\ :mx#0:\ :sh:\ :sf:
Il faut ensuite éditer le fichier /etc/hosts.lpd
du système distant (celui sur lequel est connecté physiquement l'imprimante, cameleon dans l'exemple précédent), et rajouter une ligne contenant le nom du système à partir duquel on veut imprimer (celui d'où on lance l'impression, et qui peut très bien n'avoir aucune imprimante physiquement connectée). Par exemple, si on lance sur la machine zecastor l'ordre de lancer l'impression sur l'imprimante connectée physiquement sur cameleon, le fichier /etc/hosts.lpd
de cameleon contiendra la ligne :
zecastor
Il faut bien sûr que le fichier /etc/hosts
du système distant (cameleon dans l'exemple précédent) contienne l'adresse IP du système à partir duquel on veut imprimer (zecastor dans l'exemple précédent). Pour l'imprimante particulière simple, un fichier /tmp/simple.out
sur le système distant (cameleon dans l'exemple précédent) doit apparaître et contenir le résultat de l'impression suivante :
ls -l | lpr -Psimplet
Le champ rg= permet de spécifier quels groupes sont autorisés à imprimer sur l'imprimante distante, et le champ rs= impose que l'utilisateur ait un compte sur le système distant pour imprimer sur l'imprimante distante.
Si un filtre est spécifié sur le système local, il ne sera pas pris en compte par le système distant (le fichier sera transféré sur le système distant, et c'est le processus lpd
du système distant qui se charge d'imprimer le fichier). Seuls les filtres spécifiés dans le fichier /etc/printcap
du système distant seront pris en compte. On peut toutefois filtrer le fichier avant de l'envoyer en créant un script qui envoit la sortie à l'imprimante distante :
#!/bin/sh { # # Commandes qu'il y aurait dans le filtre... # } | lpr -Psimplet -h -l
Premiere ligne Seconde ligne Troisieme ligne Quatrieme ligne
il faut essayer de configurer l'imprimante (si possible), ou insérer un filtre en entrée du type suivant :
#!/bin/sh # Envoi de la commande (\033 correspond a Esc en octal) echo -ne \\033\&k2G # Lit stdin et redirige sur stdout cat # Envoie le caractere nouvelle page a la fin du fichier echo -ne \\f
ou le script suivant (équivalent, mais qui permet d'inhiber les CR par la commande lpr -l fichier.txt
).
!/bin/sh # Lit stdin et redirige sur stdout if [ "$1" = -l ]; then cat else # Envoie le caractere nouvelle page a la fin du fichier (^M=CR) sed -e s/$/^M fi echo -ne \\f
Il ne reste plus qu'a rendre ce script exécutable, et à l'invoquer dans le fichier /etc/printcap
par le champ if=.
/etc/printcap
la ligne mx#0 (sinon tout fichier dépassant 1000 blocs sera automatiquement tronqué).
^
H''. Il s'agit d'un texte ``enrichit'' (qui contient des éléments en gras, tels qu'ils seraient affichés par une commande comme less
). Il faut alors filtrer le fichier :
man printcap | col -b | lpr
Et pour remplacer les caractères soulignés par des éléments en gras :
man printcap $\mid$ colcrt lpr