Das Drucken unter Linux ist einfach, aber manchmal fühlt es sich nach viel Arbeit an, eine Anwendung zu starten, eine Datei zu öffnen, die Drucken Auswahl im Menü, klicken Sie auf eine Bestätigungsschaltfläche usw. Wenn Sie ein Linux-Terminalbenutzer sind, möchten Sie häufig komplexe Aktionen mit einfachen Auslösern ausführen. Drucken ist komplex und so einfach wie das lpr
Befehl.
Drucken mit dem lpr-Befehl
Um eine Datei von Ihrem Terminal aus zu drucken, verwenden Sie die lpr
Befehl:
$ lpr myfile.odt
Sollte dies fehlschlagen, müssen Sie einen Standarddrucker festlegen oder einen Drucker manuell angeben.
Festlegen eines Standarddruckers
Laut meiner abgenutzten Kopie eines Berkeley 4.2-Handbuchs aus dem Jahr 1984 ist die lpr
Der Befehl paginierte und schickte eine Datei an eine Druckerspule, die Daten an etwas namens a . streamte Zeilendrucker.
berkeley-1984-lpr.jpeg
Der lpr-Befehl.
Heutzutage ist die tatsächliche lpr
Befehl ist unzureichend, da moderne Computer wahrscheinlich auf mehrere Drucker zugreifen können, und zwar auf Drucker, die viel komplexer sind als ein Punktmatrix-Zeilendrucker. Jetzt gibt es ein Subsystem namens Common Unix Printing System (CUPS), um alle Drucker zu verfolgen, auf die Ihr Computer zugreifen soll, welchen Treiber Ihr Computer verwenden soll, um mit jedem Drucker zu kommunizieren, welcher Drucker standardmäßig verwendet wird, und demnächst. Die lpr.cups
oder lpr-cups
Befehle, gebündelt mit CUPS und normalerweise mit einem Symlink zu lpr
, ermöglichen Ihnen das Drucken von einem Terminal aus, indem Sie zuerst auf Ihre Common Unix Printing System (CUPS)-Konfiguration verweisen.
So drucken Sie eine Datei mit lpr
, sollten Sie zunächst einen Standarddrucker festlegen. Sie können in den Druckereinstellungen Ihres Systems einen Standarddrucker festlegen:
Drucker-Standard.jpeg

Legen Sie einen Standarddrucker fest.
Alternativ können Sie einen Drucker als Standard mit dem lpadmin
Befehl:
$ sudo lpadmin -d HP_LaserJet_P2015_Series
$ lpstat -v
device for HP_LaserJet_P2015_Series: ipp://10.0.1.222:631/printers/HP_LaserJet_P2015_Series
Festlegen eines Standardziels mit Umgebungsvariablen
Sie dürfen Ihren eigenen Standarddrucker nicht auf Systemen einrichten, auf denen Sie kein Administratorkonto haben, da das Ändern von Druckzielen als privilegierte Aufgabe gilt. Vor lpr
CUPS für ein Ziel referenziert, fragt es Ihr System nach dem DRUCKER Umgebungsvariable.
In diesem Beispiel, HP_LaserJet_P2015_Series
ist der für den Drucker lesbare Name. Satz DRUCKER zu diesem Wert:
$ PRINTER=HP_LaserJet_P2015_Series
$ PRINTER
Sobald die DRUCKER Variable gesetzt wurde, können Sie drucken:
$ lpr myfile.pdf
Rufen Sie eine Liste der angeschlossenen Drucker ab
Alle Drucker, die Druckaufträge annehmen und die an Ihr System angeschlossen sind, sehen Sie mit dem lpstat
Befehl:
$ lpstat -a
HP_LaserJet_P2015_Series accepting requests since Sun 1 Aug 2021 10:11:02 PM NZST
r1060 accepting requests since Wed 18 Aug 2021 04:43:57 PM NZST
Drucken auf einem beliebigen Drucker
Nachdem Sie Ihrem System Drucker hinzugefügt haben und nun wissen, wie Sie sie identifizieren, können Sie auf jedem von ihnen drucken, unabhängig davon, ob Sie ein Standardziel festgelegt haben oder nicht:
$ lpr -P HP_LaserJet_P2015_Series myfile.txt
Wie Drucker definiert werden
CUPS verfügt über ein benutzerfreundliches Frontend, auf das über einen Webbrowser wie Firefox zugegriffen werden kann. Obwohl es einen Webbrowser als Benutzeroberfläche verwendet, handelt es sich tatsächlich um einen Dienst, der lokal auf Ihrem Computer ausgeführt wird (ein Ort namens localhost) auf Port 631. CUPS verwaltet Drucker, die an Ihren Computer angeschlossen sind, und speichert seine Konfiguration in /etc/cups/printers.conf
.
Die printers.conf
Datei besteht aus Definitionen der Druckgeräte, auf die Ihr Computer zugreifen kann. Sie sind nicht dazu bestimmt, sie direkt zu bearbeiten, aber wenn Sie dies tun, müssen Sie die cupsd
Dämon zuerst.
Ein typischer Eintrag sieht in etwa so aus:
<Printer r1060>
Info Ricoh 1060
Location Downstairs
MakeModel Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.6
DeviceURI lpd://192.168.4.8
State Idle
StateTime 1316011347
Type 12308
Filter application/vnd.cups-raw 0 -
Filter application/vnd.cups-raster 100 rastertogutenprint.5.2
Accepting Yes
Shared No
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
In diesem Beispiel lautet der Name des Druckers r1060
, eine von Menschen lesbare Kennung für einen Ricoh Aficio 1060.
Die MakeModel Attribut wird aus dem gezogen lpinfo
Befehl, der alle verfügbaren Druckertreiber auf Ihrem System auflistet. Angenommen, Sie wissen, dass Sie einen Ricoh Aficio 1060 haben, auf dem Sie drucken möchten, dann geben Sie diesen Befehl aus:
$ lpinfo -m | grep 1060
gutenprint.5.2://brother-hl-1060/expert Brother HL-1060 - CUPS+Gutenprint v5.2.11
gutenprint.5.2://ricoh-afc_1060/expert Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11
Dieser Befehl listet die relevanten Treiber auf, die Sie installiert haben.
Die MakeModel ist die letzte Hälfte des Ergebnisses. In diesem Beispiel ist das Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11
.
Die GeräteURI -Attribut gibt an, wo sich der Drucker im Netzwerk befindet (oder an einem physischen Standort, z. B. am USB-Anschluss). In diesem Beispiel ist die GeräteURI ist lpd://192.168.4.8
weil ich das benutze lpd
(Line Printer Daemon) Protokoll zum Senden von Daten an einen Netzwerkdrucker. An einem anderen System habe ich einen HP LaserJet, der über ein USB-Kabel angeschlossen ist GeräteURI ist DeviceURI hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429
.
Drucken über das Terminal
Das Senden eines Auftrags an einen Drucker ist ein einfacher Vorgang, solange Sie die an Ihr System angeschlossenen Geräte verstehen und sie identifizieren können. Das Drucken vom Terminal aus ist schnell, effizient und lässt sich einfach per Skript oder als Batch-Job ausführen. Versuch es!