Imprimer à partir de la ligne de commande

28

Comment imprimer la sortie de ligne de commande directement sur l'imprimante.

J'utilise le serveur Ubuntu 12.04 et je dois copier des fichiers dans un répertoire partagé, puis les télécharger à partir d'une distribution Ubuntu de bureau pour les imprimer.

Toute aide est appréciée

kamil
la source
Vous n'avez pas dit si vous allez imprimer du texte brut ou PDF. Certains systèmes ne prennent en charge que le texte brut, ce qui doit donc être couvert.
alexis
Je ne sais pas pourquoi ils ont dévalorisé ma réponse, essayez-le.
nux
@nux +1 Toutes les réponses sont excellentes merci à tous
kamil
@alexis Je suis clair: je veux imprimer la sortie de la console. Par exemple, sortie directe sur l'imprimante
kamil
Oups, vous l'avez bien dit et je l'ai manqué, désolé!
alexis

Réponses:

35

Il existe principalement deux commandes par défaut:

lpr et lp

man lpr donne la sortie:

lpr soumet des fichiers pour impression. Les fichiers nommés sur la ligne de commande sont envoyés à l'imprimante nommée (ou à la destination par défaut si aucune destination n'est spécifiée). Si aucun fichier n'est répertorié sur la ligne de commande, lpr lit le fichier d'impression à partir de l'entrée standard.

man lp donne la sortie:

lp soumet des fichiers pour impression ou modifie un travail en attente. Utilisez un nom de fichier "-" pour forcer l'impression à partir de l'entrée standard.

utilisez si facilement la commande:

lp /path-to-file-to-print

Ou

lpr /path-to-file-to-print
Maythux
la source
15

Vous pouvez utiliser lp

Par exemple:

man firefox | lp -d printername

Cela imprimera la page de manuel de Firefox sur l'imprimante spécifiée

Noosrep
la source
1
Merci, j'avais aussi besoin d'utiliser o fit-to-pagepour garder le texte sur la page un peu mieux. man bash | lp -o media=letter -o portrait -o fit-to-page -, la -fin garantit la lecture de l'entrée standard.
Elijah Lynn
1
Si votre imprimante est par défaut, vous n'avez pas besoin du -dparamètre. Sur Ubuntu avec Unity, l'imprimante par défaut est définie en cliquant sur le bouton Rechercher, puis tapez "imprimer" et cela vous amènera au bon endroit où la valeur par défaut peut être définie. En outre, lpdans l'exemple dit que vous utilisez Unix depuis un certain temps. lprfonctionne de la même manière sur Ubuntu.
SDsolar
4

Si vous les avez installés, une autre paire d'options à connaître est

et

Ils sont utiles pour fournir des pages numérotées avec des en-têtes et des numéros de ligne facultatifs. Vous pouvez également utiliser ensuite pour imprimer le style de livret (par exemple, deux pages de chaque côté d'une feuille)

Je les utilise avec des imprimantes compatibles Postscript mais je pense que le système d'impression d'Ubuntu peut pixelliser PS pour n'importe quelle imprimante prise en charge.

RedGrittyBrick
la source
c'est une bonne idée
kamil
Bien sûr, bat le codage postscript directement.
SDsolar
3

Vous voudrez peut-être savoir comment accéder à l'imprimante en premier - vous lpstatfournira ces informations. Si vous comparez sa sortie sur les deux systèmes, vous pouvez probablement dire si l'imprimante en question a été configurée sur les deux. lpstat -p -drépertorie toutes les imprimantes avec leur état et indique laquelle a été définie comme imprimante par défaut.

Vous pouvez alors simplement diriger votre sortie vers la commande lpou lpr. Vous voudrez peut-être insérer un filtre pour la jolie impression ou la pagination. Il y a un bon résumé des outils dans le manuel Debian "Mettre en surbrillance et formater des données en texte brut" , mais j'utilise généralement juste sedpour mettre en évidence les invites et autres choses avant de tout envoyera2ps

Tatjana Heuser
la source
2

Pour imprimer un fichier .txt dans une utilisation:

command | lpr -P printername -p ( periority from 1 to 100 )

Exemple :

ls -l | lpr -P printername -p 1 
nux
la source
1

La question est de savoir comment imprimer à partir de la ligne de commande sur un serveur , et il semble que vous n'ayez pas encore défini d'imprimantes sur ce système. Je n'ai pas de système à vérifier, donc les éléments suivants sont approximatifs, mais ils devraient vous donner une idée générale:

  1. Assurez-vous que le système CUPS est installé et fonctionne. Il fournit les démons qui géreront vos travaux d'impression.
  2. Une fois cette opération terminée, vous devez configurer une ou plusieurs imprimantes réseau sur lesquelles imprimer. La façon habituelle d'installer des imprimantes est d'utiliser l'utilitaire Admin Imprimante , mais vous n'êtes évidemment pas configuré pour exécuter des programmes GUI à partir de votre serveur - juste un accès en ligne de commande via ssh. Puisque vous avez déjà un système de bureau Ubuntu sur le même réseau, j'essayerais de copier le contenu du répertoire /etc/cupsde la boîte de bureau sur le serveur. Il doit contenir toutes les définitions d'imprimante et les pilotes dont vous avez besoin. Vérifiez les fichiers pour tout ajustement nécessaire (dans le cas où votre configuration mentionne des ID utilisateur ou des mots de passe qui diffèrent entre les deux systèmes), redémarrez cupsdet si vous êtes chanceux, vous pourrez utiliser lprpour imprimer à partir de la ligne de commande.

PS. Dans un pincement, vous pouvez installer suffisamment d'utilitaires X pour exécuter l'utilitaire Print Admin GUI via une connexion X distante à votre boîte Ubuntu de bureau (connectez-vous avec ssh -X), et définir les imprimantes dont vous avez besoin. Mais j'espère que cela ne sera pas nécessaire.

alexis
la source
1

Vous pouvez utiliser la lpcommande.

Pour imprimer la sortie d'une commande sur l'imprimante par défaut (utilisez lpstat -dpour voir ce qu'est l'imprimante par défaut):

echo "test" | lp

Pour imprimer sur une imprimante spécifique (utilisez lpstat -p | awk '{print $2}'pour répertorier les noms d'imprimantes disponibles):

echo "test" | lp -d printername

Pour imprimer un fichier, plutôt qu'une sortie de commande:

lp /path/to/file
waldyrious
la source