Imprima arquivos do seu terminal Linux
Para imprimir um arquivo do seu terminal, use o comando lpr.
Imprimir no Linux é fácil, mas às vezes parece muito trabalhoso iniciar um aplicativo, abrir um arquivo, encontrar a seleção Imprimir no menu, clicar em um botão de confirmação e assim por diante. Quando você é um usuário de terminal Linux, geralmente deseja executar ações complexas com gatilhos simples. Imprimir é complexo e nada é tão simples quanto o comando lpr
.
Imprimir usando o comando lpr
Para imprimir um arquivo do seu terminal, use o comando lpr
:
$ lpr myfile.odt
Caso isso falhe, você precisará definir uma impressora padrão ou especificar uma impressora manualmente.
Configurando uma impressora padrão
De acordo com minha cópia desgastada de um manual do Berkeley 4.2 impresso em 1984, o comando lpr
paginava e enviava um arquivo para um spool de impressora, que transmitia dados para algo chamado impressora de linha.
Figura 1: O comando lpr.
Hoje em dia, o comando lpr
real é insuficiente porque os computadores modernos provavelmente terão acesso a várias impressoras e, certamente, a impressoras muito mais complexas do que uma impressora linear matricial. Agora existe um subsistema, chamado Common Unix Printing System (CUPS), para controlar todas as impressoras que você deseja que seu computador acesse, qual driver seu computador deve usar para se comunicar com cada impressora, qual impressora usar por padrão e breve. Os comandos lpr.cups
ou lpr-cups
, incluídos no CUPS e geralmente vinculados simbolicamente ao lpr
, permitem que você imprima a partir de um terminal referenciando seu Configuração do Common Unix Printing System (CUPS) primeiro.
Para imprimir um arquivo com lpr
, você deve primeiro definir uma impressora padrão. Você pode definir uma impressora padrão nas configurações de impressora do seu sistema:
Figura 2: Defina uma impressora padrão.
Alternativamente, você pode marcar uma impressora como padrão com o comando lpadmin
:
$ 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
Configurando um destino padrão com variáveis de ambiente
Você não tem permissão para definir sua própria impressora padrão em sistemas nos quais não possui uma conta de administrador porque alterar destinos de impressão é considerada uma tarefa privilegiada. Antes de lpr
referenciar o CUPS para um destino, ele consulta seu sistema em busca da variável de ambiente PRINTER.
Neste exemplo, HP_LaserJet_P2015_Series
é o nome legível dado à impressora. Defina PRINTER com esse valor:
$ PRINTER=HP_LaserJet_P2015_Series
$ export PRINTER
Uma vez definida a variável PRINTER, você pode imprimir:
$ lpr myfile.pdf
Obtenha uma lista de impressoras conectadas
Você pode ver todas as impressoras que estão aceitando trabalhos de impressão e que estão conectadas ao seu sistema com o comando lpstat
:
$ 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
Imprimindo em uma impressora arbitrária
Depois de adicionar impressoras ao seu sistema e agora que você sabe como identificá-las, você pode imprimir em qualquer uma delas, independentemente de ter um destino padrão definido ou não:
$ lpr -P HP_LaserJet_P2015_Series myfile.txt
Como as impressoras são definidas
O CUPS possui um front-end amigável, acessível por meio de um navegador da web como o Firefox. Embora use um navegador da Web como interface de usuário, na verdade é um serviço executado localmente no seu computador (um local chamado localhost) na porta 631. O CUPS gerencia impressoras conectadas ao seu computador e armazena seus configuração em /etc/cups/printers.conf
.
O arquivo printers.conf
consiste em definições que detalham os dispositivos de impressão que seu computador pode acessar. Você não deve editá-lo diretamente, mas se o fizer, você deverá parar o daemon cupsd
primeiro.
Uma entrada típica é mais ou menos assim:
<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>
Neste exemplo, o nome da impressora é r1060
, um identificador legível para uma Ricoh Aficio 1060.
O atributo MakeModel é extraído do comando lpinfo
, que lista todos os drivers de impressora disponíveis em seu sistema. Supondo que você saiba que possui um Ricoh Aficio 1060 no qual deseja imprimir, você emitiria este comando:
$ 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
Este comando lista os drivers relevantes que você instalou.
O MakeModel é a última metade do resultado. Neste exemplo, é Ricoh Aficio 1060 - CUPS+Gutenprint v5.2.11
.
O atributo DeviceURI identifica onde a impressora se encontra na rede (ou localização física, como a porta USB). Neste exemplo, o DeviceURI é lpd://192.168.4.8
porque estou usando o protocolo lpd
(daemon de impressora de linha) para enviar dados para uma impressora em rede. Em um sistema diferente, tenho uma HP LaserJet conectada por um cabo USB, então o DeviceURI é DeviceURI hp:/usb/HP_LaserJet_P2015_Series?serial=00CNCJM26429
.
Imprimindo do terminal
Enviar um trabalho para uma impressora é um processo fácil, desde que você entenda os dispositivos conectados ao seu sistema e como identificá-los. A impressão a partir do terminal é rápida, eficiente e facilmente programada ou executada em lote. Experimente!