Printing from the Linux command line

There’s a lot more to printing from the Linux command line than the lp command. Check out some of the many available options.

Printing from the Linux command line is easy. You use the lp command to request a print, and lpq to see what print jobs are in the queue, but things get a little more complicated when you want to print double-sided or use portrait mode. And there are lots of other things you might want to do — such as printing multiple copies of a document or canceling a print job. Let’s check out some options for getting your printouts to look just the way you want them to when you’re printing from the command line.

Displaying printer settings

To view your printer settings from the command line, use the lpoptions command. The output should look something like this:

$ lpoptions
copies=1 device-uri=dnssd://HP%20Color%20LaserJet%20CP2025dn%20(F47468)._pdl-datastream._tcp.local/ finishings=3 job-cancel-after=10800 job-hold-until=no-hold job-priority=50 job-sheets=none,none marker-change-time=1553023232 marker-colors=#000000,#00FFFF,#FF00FF,#FFFF00 marker-levels=18,62,62,63 marker-names='Black\ Cartridge\ HP\ CC530A,Cyan\ Cartridge\ HP\ CC531A,Magenta\ Cartridge\ HP\ CC533A,Yellow\ Cartridge\ HP\ CC532A' marker-types=toner,toner,toner,toner number-up=1 printer-commands=none printer-info='HP Color LaserJet CP2025dn (F47468)' printer-is-accepting-jobs=true printer-is-shared=true printer-is-temporary=false printer-location printer-make-and-model='HP Color LaserJet cp2025dn pcl3, hpcups 3.18.7' printer-state=3 printer-state-change-time=1553023232 printer-state-reasons=none printer-type=167964 printer-uri-supported=ipp://localhost/printers/Color-LaserJet-CP2025dn sides=one-sided

This output is likely to be a little more human-friendly if you turn its blanks into carriage returns. Notice how many settings are listed.

MORE ON NETWORK WORLD: Linux: Best desktop distros for newbies

NOTE: In the output below, some lines have been reconnected to make this output more readable.

$ lpoptions | tr " " '\n'
copies=1
device-uri=dnssd://HP%20Color%20LaserJet%20CP2025dn%20(F47468)._pdl-datastream._tcp.local/
finishings=3
job-cancel-after=10800
job-hold-until=no-hold
job-priority=50
job-sheets=none,none
marker-change-time=1553023232
marker-colors=#000000,#00FFFF,#FF00FF,#FFFF00
marker-levels=18,62,62,63
marker-names='Black\ Cartridge\ HP\ CC530A,
Cyan\ Cartridge\ HP\ CC531A,
Magenta\ Cartridge\ HP\ CC533A,
Yellow\ Cartridge\ HP\ CC532A'
marker-types=toner,toner,toner,toner
number-up=1
printer-commands=none
printer-info='HP Color LaserJet CP2025dn (F47468)'
printer-is-accepting-jobs=true
printer-is-shared=true
printer-is-temporary=false
printer-location
printer-make-and-model='HP Color LaserJet cp2025dn pcl3, hpcups 3.18.7'
printer-state=3
printer-state-change-time=1553023232
printer-state-reasons=none
printer-type=167964
printer-uri-supported=ipp://localhost/printers/Color-LaserJet-CP2025dn
sides=one-sided

With the -v option, the lpinfo command will list drivers and related information.

$ lpinfo -v
network ipp
network https
network socket
network beh
direct hp
network lpd
file cups-brf:/
network ipps
network http
direct hpfax
network dnssd://HP%20Color%20LaserJet%20CP2025dn%20(F47468)._pdl-datastream._tcp.local/  <== printer
network socket://192.168.0.23															 <== printer IP

The lpoptions command will show the settings of your default printer. Use the -poption to specify one of a number of available printers.

$ lpoptions -p LaserJet

The lpstat -p command displays the status of a printer while lpstat -p -d also lists available printers.

$ lpstat -p -d
printer Color-LaserJet-CP2025dn is idle. enabled since Tue 19 Mar 2019 05:07:45 PM EDT
system default destination: Color-LaserJet-CP2025dn

Useful commands

To print a document on the default printer, just use the lp command followed by the name of the file you want to print. If the filename includes blanks (rare on Linux systems), either put the name in quotes or start entering the file name and press the tab key to invoke file completion (as shown in the second example below).

$ lp "never leave home angry"
$ lp never\ leave\ home\ angry

The lpq command displays the print queue.

$ lpq
Color-LaserJet-CP2025dn is ready and printing
Rank    Owner   Job     File(s)                         Total Size
active  shs     234     agenda                          2048 bytes

With the -n option, the lp command allows you to specify the number of copies of a printout you  want.

$ lp -n 11 agenda

To cancel a print job, you can use the cancel or lprm command. If you don’t act quickly, you might see this:

$ cancel 229
cancel: cancel-job failed: Job #229 is already completed - can't cancel.

Two-sided printing

To print in two-sided mode, you can issue your lp command with a sides option that says both to print on both sides of the paper and which edge to turn the paper on. This setting represents the normal way that you would expect two-sided portrait documents to look.

$ lp -o sides=two-sided-long-edge Notes.pdf

If you want all of your documents to print in two-side mode, you can change your lp settings by using the lpoptions command to change the setting for sides.

$ lpoptions -o sides=two-sided-short-edge

To revert to single-sided printing, you would use a command like this one:

$ lpoptions -o sides=one-sided

Printing in landscape mode

To print in landscape mode, you would use the landscape option with the lp command.

$ lp -o landscape penguin.jpg

CUPS

The print system used on Linux systems is the standards-based, open source printing system called CUPS, originally standing for Common Unix Printing System. It allows a computer to act as a print server.

Related posts: