Друк з командного рядка


28

Як можна надрукувати вихід командного рядка безпосередньо на принтер.

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

Будь-яка допомога вдячна


Ви не сказали, чи будете друкувати звичайний текст чи PDF. Деякі системи підтримують лише звичайний текст у вікні, тому це потрібно висвітлити.
alexis

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

@nux +1 Усі відповіді велике дякую всім
kamil

@alexis Я зрозумів: я хочу надрукувати вихід консолі. Наприклад, виведіть безпосередньо на принтер
kamil

На жаль, ви це сказали, і я пропустив це, вибачте!
alexis

Відповіді:


35

В основному є дві команди за замовчуванням:

lpr і lp

man lpr дає вихід:

lpr подає файли для друку. Файли, названі в командному рядку, надсилаються на вказаний принтер (або місце призначення за замовчуванням, якщо не вказано призначення). Якщо в командному рядку відсутні файли, lpr зчитує файл друку зі стандартного вводу.

man lp дає вихід:

lp подає файли для друку або змінює очікуване завдання. Використовуйте ім'я файлу "-", щоб примусити друкувати зі стандартного вводу.

так легко використовуйте команду:

lp /path-to-file-to-print

Або

lpr /path-to-file-to-print

15

Можна використовувати lp

Наприклад:

man firefox | lp -d printername

Це виведе друковану сторінку з Firefox на вказаний принтер


1
Дякую, мені також потрібно було скористатись, o fit-to-pageщоб текст на сторінці був трохи кращим. man bash | lp -o media=letter -o portrait -o fit-to-page -, -в кінці забезпечується зчитування стандартного вводу.
Ілля Лінн

1
Якщо ваш принтер за замовчуванням, вам не потрібен -dпараметр. У Ubuntu з Unity принтер за замовчуванням встановлюється натисканням на кнопку Пошук, після чого введіть "print", і він переведе вас у потрібне місце, де можна встановити за замовчуванням. Також lpу прикладі сказано, що ви вже деякий час були навколо Unix. lprпрацює те саме на Ubuntu.
SDsolar

4

Якщо вони встановлені, є ще одна пара варіантів, про яку варто знати

і

Вони корисні для надання нумерованих сторінок із заголовками та додатковими номерами рядків. Потім ви можете використовувати для друку стиль буклета (наприклад, дві сторінки з кожного боку аркуша)

Я використовую їх для принтерів, що підтримують Postcript, але я вважаю, що система друку Ubuntu може розширити PS для будь-якого підтримуваного принтера.


це гарна ідея
kamil

Впевнено перемагає кодування постскрипту безпосередньо.
SDsolar

3

Можливо, ви захочете дізнатись, як отримати доступ до принтера спочатку - lpstatце дасть вам цю інформацію. Якщо ви порівнюєте його вихід у обох системах, ви, ймовірно, можете сказати, чи був налаштований відповідний принтер для обох. lpstat -p -dперелічує всі принтери з їх станом та повідомляє, який з них встановлено як принтер за замовчуванням.

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


2

Щоб надрукувати .txt файл у використанні:

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

Приклад:

ls -l | lpr -P printername -p 1 

1

Питання полягає в тому, як друкувати з командного рядка на сервері , і це здається, що у вас ще немає визначених принтерів у цій системі. У мене немає системи для перевірки, тому наступні приблизні, але вони повинні дати вам загальну думку:

  1. Переконайтесь, що система CUPS встановлена ​​та працює. Він надає демон, які будуть обробляти ваші завдання друку.
  2. Після цього вам потрібно налаштувати один або кілька мережевих принтерів, до яких слід друкувати. Звичайний спосіб встановлення принтерів - це утиліта Printer Admin , але ви, очевидно, не налаштовані на запуск будь-яких програм GUI з вашого сервера - просто доступ до командної лінії через ssh. Оскільки у вас вже є настільна система Ubuntu в одній мережі, я б спробував скопіювати вміст каталогу /etc/cupsз вікна робочого столу на сервер. Він повинен містити всі необхідні визначення принтера та драйвери. Перевірте файли на наявність будь-яких необхідних коригувань (якщо у вашій програмі вказані ідентифікатори користувачів або паролі, які відрізняються між двома системами), перезапустіть cupsd, і якщо вам пощастить, ви зможете використовувати lprдля друку з командного рядка.

PS. На дрібнику ви можете встановити достатню кількість утиліт X для запуску утиліти графічного інтерфейсу Print Admin через віддалене підключення X до робочого столу Ubuntu box (увійдіть в систему ssh -X) та визначити необхідні принтери. Але, сподіваємось, це не буде потрібно.


1

Ви можете використовувати lpкоманду.

Щоб надрукувати висновок команди на принтері за замовчуванням (використовуйте, lpstat -dщоб побачити, що таке принтер за замовчуванням):

echo "test" | lp

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

echo "test" | lp -d printername

Щоб надрукувати файл, а не командний вихід:

lp /path/to/file
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.