Imprimir desde la línea de comando

28

¿Cómo puedo imprimir la salida de la línea de comando directamente a la impresora?

Estoy usando el servidor ubuntu 12.04 y tengo que copiar archivos en un directorio compartido y luego descargarlos desde una distribución ubuntu de escritorio para imprimirlos.

Cualquier ayuda es apreciada

kamil
fuente
No dijo si va a imprimir texto plano o PDF. Algunos sistemas solo admiten texto plano fuera de la caja, por lo que esto debe cubrirse.
alexis
No sé por qué rechazaron mi respuesta, solo inténtalo.
nux
@nux +1 Todas las respuestas son geniales gracias a todos
kamil
@alexis Estoy claro: quiero imprimir la salida de la consola. Por ejemplo, ls salida directamente a la impresora
kamil
Vaya, de hecho lo dijiste y lo extrañé, lo siento.
alexis

Respuestas:

35

Principalmente hay dos comandos predeterminados:

lpr y lp

man lpr da la salida:

lpr envía archivos para imprimir. Los archivos nombrados en la línea de comando se envían a la impresora nombrada (o al destino predeterminado si no se especifica ningún destino). Si no se enumeran archivos en la línea de comandos, lpr lee el archivo de impresión desde la entrada estándar.

man lp da la salida:

lp envía archivos para imprimir o altera un trabajo pendiente. Use un nombre de archivo de "-" para forzar la impresión desde la entrada estándar.

usa tan fácilmente el comando:

lp /path-to-file-to-print

O

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

Puedes usar lp

Por ejemplo:

man firefox | lp -d printername

Esto imprimirá la página del manual de Firefox a la impresora especificada

Noosrep
fuente
1
Gracias, también necesitaba usar o fit-to-pagepara mantener el texto en la página un poco mejor. man bash | lp -o media=letter -o portrait -o fit-to-page -, -al final asegura que se lea la entrada estándar.
Elijah Lynn
1
Si su impresora es predeterminada, no necesita el -dparámetro. En Ubuntu con Unity, la impresora predeterminada se configura haciendo clic en el botón Buscar, luego escribe "imprimir" y te llevará al lugar correcto donde se puede configurar la predeterminada. Además, lpen el ejemplo dice que has estado en Unix por algún tiempo. lprFunciona igual en Ubuntu.
SDsolar
4

Si los tiene instalados, otro par de opciones que vale la pena conocer son

y

Son útiles para proporcionar páginas numeradas con encabezados y números de línea opcionales. También puede usarlo para imprimir estilo de folleto (por ejemplo, dos páginas a cada lado de una hoja)

Los uso con impresoras compatibles con Postscript, pero creo que el sistema de impresión de Ubuntu puede rasterizar PS para cualquier impresora compatible.

RedGrittyBrick
fuente
esta es una buena idea
kamil
Claro que supera la codificación de postscript directamente.
SDsolar
3

Es posible que desee saber cómo se accede primero a la impresora; lpstatle dará esa información. Si compara su salida en ambos sistemas, probablemente pueda saber si la impresora en cuestión se ha configurado en ambos. lpstat -p -denumera todas las impresoras con su estado y le dice cuál se ha configurado como impresora predeterminada.

Simplemente puede canalizar su salida al comando lpo lprentonces. Sin embargo, es posible que desee insertar un filtro para una bonita impresión o paginación. Hay un buen resumen de herramientas en el manual de Debian "Resaltando y formateando datos de texto plano" , pero usualmente solo estoy usando sedpara resaltar mensajes y otras cosas antes de enviar todoa2ps

Tatjana Heuser
fuente
2

Para imprimir un archivo .txt en un uso:

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

Ejemplo:

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

La pregunta es sobre cómo imprimir desde la línea de comandos en un servidor , y parece que todavía no tiene ninguna impresora definida en ese sistema. No tengo un sistema para verificar, por lo que los siguientes son aproximados, pero deberían darle una idea general:

  1. Asegúrese de que el sistema CUPS esté instalado y funcionando. Proporciona los demonios que manejarán sus trabajos de impresión.
  2. Una vez que esto esté activo, debe configurar una o más impresoras de red para imprimir. La forma habitual de instalar impresoras es con la utilidad Printer Admin , pero evidentemente no está configurado para ejecutar ningún programa GUI desde su servidor, solo acceso a la línea de comandos a través de ssh. Como ya tiene un sistema de escritorio Ubuntu en la misma red, intentaría copiar el contenido del directorio /etc/cupsdel cuadro de escritorio al servidor. Debe contener todas las definiciones de impresora y controladores que necesita. Revise los archivos para ver los ajustes necesarios (en caso de que su configuración mencione ID de usuario o contraseñas que difieran entre los dos sistemas), reinicie cupsdy, si tiene suerte, podrá usar lprpara imprimir desde la línea de comandos.

PD. En un apuro, podría instalar suficientes utilidades X para ejecutar la utilidad GUI de Print Admin a través de una conexión X remota a su cuadro Ubuntu de escritorio (inicie sesión con ssh -X), y definir las impresoras que necesita. Pero espero que esto no sea necesario.

alexis
fuente
1

Puedes usar el lpcomando.

Para imprimir el resultado de un comando en la impresora predeterminada (use lpstat -dpara ver cuál es la impresora predeterminada):

echo "test" | lp

Para imprimir en una impresora específica (use lpstat -p | awk '{print $2}'para enumerar los nombres de impresoras disponibles):

echo "test" | lp -d printername

Para imprimir un archivo, en lugar de una salida de comando:

lp /path/to/file
waldyrious
fuente