Imprimir a partir da linha de comando

28

Como posso imprimir a saída da linha de comando diretamente na impressora.

Estou usando o servidor ubuntu 12.04 e tenho que copiar arquivos em um diretório compartilhado e depois baixá-los de uma distribuição ubuntu da área de trabalho para imprimi-los.

Qualquer ajuda é apreciada

kamil
fonte
Você não disse se imprimirá texto simples ou PDF. Alguns sistemas suportam apenas texto sem formatação, portanto, isso precisa ser coberto.
11134 alexis
Eu não sei por que eles votaram na minha resposta, apenas tente.
nux
@nux +1 Todas as respostas são grandes agradece todos
kamil
@alexis Estou claro: quero imprimir a saída do console. Por exemplo ls de saída directamente para a impressora
kamil
Opa, na verdade você disse e eu perdi, desculpe!
alexis

Respostas:

35

Principalmente, existem dois comandos padrão:

lpr e lp

man lpr dá a saída:

O lpr envia arquivos para impressão. Os arquivos nomeados na linha de comando são enviados para a impressora nomeada (ou o destino padrão, se nenhum destino for especificado). Se nenhum arquivo estiver listado na linha de comando, o lpr lê o arquivo de impressão na entrada padrão.

man lp dá a saída:

O lp envia arquivos para impressão ou altera um trabalho pendente. Use um nome de arquivo "-" para forçar a impressão a partir da entrada padrão.

use tão facilmente o comando:

lp /path-to-file-to-print

Ou

lpr /path-to-file-to-print
Maythux
fonte
15

Você pode usar lp

Por exemplo:

man firefox | lp -d printername

Isso imprimirá a página de manual do firefox na impressora especificada

Noosrep
fonte
1
Obrigado, eu também precisei usar o fit-to-pagepara manter o texto na página um pouco melhor. man bash | lp -o media=letter -o portrait -o fit-to-page -, -no final garante que a entrada padrão seja lida.
Elias Lynn
1
Se sua impressora é o padrão, você não precisa do -dparâmetro No Ubuntu com Unity, a impressora padrão é configurada clicando no botão Pesquisar, digite "print" e o levará ao lugar certo onde o padrão pode ser definido. Além disso, lpno exemplo diz que você está no Unix há algum tempo. lprfunciona da mesma maneira no Ubuntu.
SDsolar 4/18
4

Se você os tiver instalado, outro par de opções que vale a pena conhecer são

e

Eles são úteis para fornecer páginas numeradas com títulos e números de linha opcionais. Você também pode usá-lo para imprimir o estilo de livreto (por exemplo, duas páginas de cada lado de uma folha)

Eu os uso com impressoras compatíveis com Postscript, mas acredito que o sistema de impressão do Ubuntu pode rasterizar o PS para qualquer impressora suportada.

RedGrittyBrick
fonte
esta é uma boa idéia
kamil
Com certeza é melhor codificar postscript diretamente.
precisa saber é o seguinte
3

Você pode descobrir como a impressora é acessada primeiro - lpstatfornecerá essas informações. Se você comparar sua saída nos dois sistemas, provavelmente poderá saber se a impressora em questão foi configurada nos dois. lpstat -p -dlista todas as impressoras com seus status e informa qual delas foi definida como impressora padrão.

Você pode simplesmente canalizar sua saída para o comando lpou lprentão. Você pode inserir um filtro para impressão ou paginação bonita. Há um bom resumo de ferramentas no manual do debian "Destacando e formatando dados de texto sem formatação" , mas geralmente estou apenas usando sedpara destacar avisos e outras coisas antes de enviar tudo atravésa2ps

Tatjana Heuser
fonte
2

Para imprimir um arquivo .txt em um uso:

command | lpr -P printername -p ( periority from 1 to 100 )

Exemplo:

ls -l | lpr -P printername -p 1 
nux
fonte
1

A questão é sobre como imprimir a partir da linha de comando em um servidor e parece que você ainda não possui nenhuma impressora definida nesse sistema. Não tenho um sistema para verificar, portanto, o seguinte é aproximado, mas eles devem fornecer uma idéia geral:

  1. Verifique se o sistema CUPS está instalado e funcionando. Ele fornece os daemons que manipularão seus trabalhos de impressão.
  2. Uma vez configurado, você precisa configurar uma ou mais impressoras de rede para imprimir. A maneira usual de instalar impressoras é com o utilitário Admin da impressora , mas você evidentemente não está configurado para executar nenhum programa da GUI no seu servidor - apenas acesso à linha de comando via ssh. Como você já possui um sistema desktop Ubuntu na mesma rede, tentarei copiar o conteúdo do diretório /etc/cupsda caixa da área de trabalho para o servidor. Ele deve conter todas as definições e drivers de impressora que você precisa. Verifique os arquivos para os ajustes necessários (caso sua configuração mencione IDs de usuário ou senhas que diferem entre os dois sistemas), reinicie cupsde, se tiver sorte, poderá usar lprpara imprimir a partir da linha de comando.

PS. Em uma pitada, você pode instalar utilitários X suficientes para executar o utilitário Print Admin GUI através de uma conexão X remota com a caixa Ubuntu da área de trabalho (faça login ssh -X) e defina as impressoras necessárias. Mas espero que isso não seja necessário.

alexis
fonte
1

Você pode usar o lpcomando

Para imprimir a saída de um comando na impressora padrão (use lpstat -d para ver qual é a impressora padrão):

echo "test" | lp

Para imprimir em uma impressora específica (use lpstat -p | awk '{print $2}' para listar os nomes de impressoras disponíveis):

echo "test" | lp -d printername

Para imprimir um arquivo, em vez de uma saída de comando:

lp /path/to/file
valioso
fonte