Печать из командной строки

Как я могу распечатать вывод командной строки непосредственно на принтер?

Я использую ubuntu server 12.04, и мне нужно скопировать файлы в общий каталог, а затем загрузить их из настольного дистрибутива ubuntu, чтобы распечатать их.

Любая помощь приветствуется

В основном существуют две команды по умолчанию:

lpr и lp

man lpr дает выходные данные:

lpr отправляет файлы на печать. Файлы, указанные в командной строке, отправляются на принтер с именем (или в пункт назначения по умолчанию, если пункт назначения не указан). Если в командной строке нет файлов, lpr считывает файл печати из стандартного ввода.

man lp дает выходные данные:

lp отправляет файлы на печать или изменяет ожидающее задание. Используйте имя файла "-" для принудительной печати из стандартного ввода.

так легко использовать команду:

lp /path-to-file-to-print

Или

lpr /path-to-file-to-print

Вы можете использовать lp

Например:

man firefox | lp -d printername

Это позволит распечатать справочную страницу из firefox на указанный принтер

Если они у вас установлены, еще одна пара опций, о которых стоит знать, - это

и

Они полезны для предоставления пронумерованных страниц с заголовками и необязательными номерами строк.Вы также можете использовать его для печати в стиле буклета (например, по две страницы с каждой стороны листа).

Я использую их с принтерами с поддержкой Postscript, но я считаю, что система печати Ubuntu может растрировать PS для любого поддерживаемого принтера.

Возможно, вы захотите сначала узнать, как осуществляется доступ к принтеру - lpstatдаст вам эту информацию. Если вы сравните его выходные данные в обеих системах, вы, вероятно, сможете определить, был ли соответствующий принтер настроен на обеих из них. lpstat -p -d выводит список всех принтеров с указанием их статуса и сообщает, какой из них был установлен в качестве принтера по умолчанию.

Вы можете просто передать свой вывод в lp или lpr тогда командуй. Однако вы можете захотеть вставить фильтр для автоматической печати или разбивки на страницы. На сайте есть хорошее краткое описание инструментов руководство debian "Выделение и форматирование текстовых данных", но обычно я просто использую sed чтобы выделить подсказки и другие материалы, прежде чем отправлять все через a2ps

Чтобы распечатать текстовый файл в :

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

Пример :

ls -l | lpr -P printername -p 1 

Вы можете использовать lp команда.

Чтобы распечатать выходные данные команды на принтере по умолчанию (используйте lpstat -d чтобы узнать, какой принтер используется по умолчанию):

echo "test" | lp

Для печати на определенном принтере (используйте lpstat -p | awk '{print $2}' для получения списка доступных имен принтеров):

echo "test" | lp -d printername

Для печати файла, а не вывода команды:

lp /path/to/file

Вопрос заключается в том, как печатать из командной строки на сервере, и похоже, что у вас еще нет никаких принтеров, определенных в этой системе. У меня нет системы для проверки, поэтому следующие данные являются приблизительными, но они должны дать вам общее представление:

  1. Убедитесь, что система CUPS установлена и запущена. Он предоставляет демонов, которые будут обрабатывать ваши задания на печать.
  2. После этого вам необходимо настроить один или несколько сетевых принтеров для печати. Обычный способ установки принтеров - с помощью Администратор принтера утилита, но вы, очевидно, не настроены на запуск каких-либо GUIP-программ со своего сервера - просто доступ из командной строки через ssh. Поскольку у вас уже есть настольная система Ubuntu в той же сети, я бы попробовал скопировать содержимое каталога /etc/cups из окна рабочего стола на сервер. Он должен содержать все необходимые определения принтера и драйверы. Проверьте файлы на наличие любых необходимых настроек (в случае, если в вашей настройке указаны идентификаторы пользователей или пароли, которые отличаются между двумя системами), перезапустите cupsd, и если вам повезет, вы сможете использовать lpr для печати из командной строки.

пс. В крайнем случае, вы могли бы установить достаточное количество утилит X для запуска Администратор печати Утилита GUI через удаленное подключение X к вашему рабочему столу Ubuntu box (войдите в систему с помощью ssh -X) и определите нужные вам принтеры. Но, надеюсь, в этом не будет необходимости.

Если вы хотите управлять различными параметрами макета, шрифтами, размером шрифта и т.д. Вы можете использовать enscript как предложено RedGrittyBrick.

sudo apt install enscript

Несколько деталей, которые могут оказаться полезными:

  • Шрифты, которые вы можете использовать, - это те, которые имеют .afm файл в /usr/share/enscript/afm/
  • Имя шрифта, которое будет использоваться с -f опция должна быть кратким именем, указанным как FontName in it's .afm file. For example: "ZapfDingbats", not "ITC Zapf Dingbats".
    Эти имена также перечислены в /usr/share/enscript/afm/font.map файл.
  • Если вы хотите увидеть, какие моноширинный шрифты, которые у вас есть, вы могли бы использовать что-то вроде этого:
    for f in /usr/share/enscript/afm/*.afm; do grep -q '^IsFixedPitch true' "$f" && grep FontName "$f"; done
  • Чтобы задать размер шрифта, добавьте "@n" к названию шрифта.
  • Вы можете получить список имен принтеров, которые будут использоваться для -d или -P вариант с
    lpstat -p

Пример команды печати :

font=Courier@9printer=HP-4350your_command | enscript -P $printer -f $font --tabsize=4# or for files:enscript -P $printer -f $font --tabsize=4 $Your_file_to_print

Конечно, есть еще много вариантов, перечисленных с man enscript.

Вы не сказали, будете ли вы печатать обычный текст или PDF. Некоторые системы поддерживают только обычный текст из коробки, поэтому это необходимо учитывать.

я не знаю, почему они отвергают мой ответ, просто попробуйте.

@nux + 1 Все ответы отличные, спасибо вам всем

@alexis Мне все ясно: я хочу распечатать вывод консоли. Например, вывод ls непосредственно на принтер

Упс, действительно, вы сказали, и я пропустил это, извините!