How to print simple text pages on Linux in
console with old LPR parallel port attached printer
Many younger people, might not know
lpr command,
historically it was heavily used for printing in the early GNU /
Linux days.
lpr ships the text to be printed to the printer which is
physically attached on
LPT (Line Print Terminal) parallel
port . Those who lived the DOS era surely know in those
"ancient" days, everyone who wanted to print has to use the
LPT
parallel port
Present time, everyone knows there is almost no modern printer that
is attached to the PC via
LPT port but rather the USB port
is used for communication between the printer the computer.
Nevertheless The USB printers on Linux are managed by CUPS, the lpr
command is still functional shipping the text to be printed via
CUPS (
cups-lpd daemon).
Before
cups-lpd was introduced the service managing the
print jobs was
lpd
Hence
lpr is still functional.
To print a plain text file of one page with lpr on Linux:
linux:~# cat text-file-to-print.txt | lpr
For multiple printers to switch between multiple printers there is
the
PRINTER shell variable:
linux:~# export
PRINTER=printer-Name-and-Type
To print a really long text file (a book in TXT) the
pr
command comes handy. As you can read in the cmd manual
pr -
converts text files for printing
Lets say you would like to have a 60 lines of text per printed
page, the cmd to issue is:
linux:~# pr -l60 text-file-to-print.txt |
lrp
All queued printing jobs can be reviewed with the
lpq, if
you have a printer attached try:
linux:~# lpq
lp is ready and printing
Rank Owner Job Files Total Size
active hipo 1 text-file-to-print.txt 62045 bytes
Since some years it is pretty rare for people to use lpq, since
most of the parallel printing is managed by
CUPS server,
what most people use nowdays to check the printer queue is
lpstat : e.g.
linux:~# lpstat
...
Printing status and all things related to queued jobs for printing
gets logged in
/var/log/lpr.log
There is even more simplistic way to print directly to the printer
(if the printer is attached via a LPT port) through the kernel
/dev/lp, for example:
linux:~# cat text-file-to-print.txt >>
/dev/lp
For more than one printer attached the naming of
/dev/lp,
might probably be
/dev/lp0, /dev/lp1 etc.
The
lprm command also exists in case if you would like to
cancel a printjob in the queue. Lets say I want to cancel a job in
the queue with Job ID 5:
linux:~# lrpm 5
...
To cancel a current running job in the middle the
/usr/bin/cancel command exists.
Its also interesting to be tried for Linux novices and be known
just as a matter of history.
An interesting historic fact is that nowdays opening
lpr,
lpq or any of the other tools for simple text mode printing one
sees on top of the page
Apple Inc.
Lets clear this up
CUPS (Common Unix Printing System) (open
source) printing platform is not owned by Apple, since it is
licensed under
GPL2 and
LGPL. The reason why the
Apple Inc. shows up in man pages is because in year 2007,
the founder of CUPS printing server
Michael Sweet hired him
to work for Apple Inc. "purchasing" the CUPS source. However as we
know they did not really purchased the code, because the code was
already belonging to the community (licensed under GPL2). Apple
however as a marketing trick used the fact that Sweet worked for
them and as probably as a matter of marketing asked him to place
the Apple Inc. in the copyright source and manual areas. Obviously
this is not true, since Apple Inc. does not hold copyright for CUPS
as CUPS can be copied by anyone (its open source) ;)
Most of the people will never print using this commands, since
printing is now ages ahead, anyways for simple people who just need
to print a text with no special fonts or graphics text printing is
just great.
Text printing is also a good learning experience for Linux novices
and is good to be known just as a piece of UNIX
history.