Printing via CUPS in the Terminal
Here's how to print in the terminal on Linux.
CUPS
CUPS is a printing system that has come standard on Linux for a long time. It should detect printers on the same network and allow you to address them
Available printers
To see available printers, run:
lpstat -p | awk '{print $2}'This will return a list of printers, something like:
AirPrint
CUPS-BRF-Printer
EPSON-ET-2650-Series
EPSON_ET_3850_SeriesDefault Printer
To set a default printer:
lpoptions -d EPSON_ET_3850_SeriesThis will return the options on that printer, as currently set:
copies=1 device-uri=ipps://EPSON%20ET-3850%20Series._ipps._tcp.local/ finishings=3 job-cancel-after=10800 job-hold-until=no-hold job-priority=50 job-sheets=none,none marker-change-time=0 number-up=1 print-color-mode=color printer-commands=none printer-info='EPSON ET-3850 Series' printer-is-accepting-jobs=true printer-is-shared=false printer-is-temporary=true printer-location printer-make-and-model='EPSON EPSON ET-3850 Series' printer-state=3 printer-state-change-time=1781303188 printer-state-reasons=none printer-type=83890204 printer-uri-supported=ipp://localhost/printers/EPSON_ET_3850_SeriesPrint command
Now run the command to print:
lp recipes.txtBonus: Ensure plaintext
In my case, when I print a .txt file, I get:
lp recipes.txt
lp: Unsupported document-format "application/x-idx-doc".The bytes are plaintext, but lp mis-detects it. To ensure plain text, you can pipe to lp:
cat recipes.txt | lpBonus: See/Manage Print Jobs
Let's say there was some sort of hiccup in the printing, as there often is. See what jobs you have in the print queue:
lpstat -o
EPSON-ET-3850-Series-139 jaketrent 4838792 Wed 05 Aug 2026 06:27:07 PM MDT
EPSON-ET-3850-Series-140 jaketrent 4769792 Wed 05 Aug 2026 06:28:09 PM MDTI have a job with an id of 139 and 140. I can cancel one of them that has a problem:
cancel EPSON-ET-3850-Series-139And I can resume the printing of all others
cupsenabel EPSON-ET-3850-Series