Як перелічити імена принтера, прийнятні для використання з lpr?


64

На lprголовній сторінці написано, що принтер призначення можна вказати -Pпрапором.

-P destination[/instance]
    Prints files to the named printer.

Я "додав" різні принтери на локальних акціях Samba, використовуючи GUI в Ubuntu / Gnome. Як я можу отримати перелік цих доступних принтерів у форматі, який -Pочікує прапор (бажано, з башти)?

Відповіді:



12

Щоб отримати список, ви можете скористатися:

lpstat -a

або

cat /etc/printcap

Щоб надрукувати лише імена принтера:

lpstat + read + масив:

$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"

lpstat + awk:

$ lpstat -a | awk '{print $1}'

lpstat + вирізати:

$ lpstat -a | cut -f1 -d ' '

кішка + греп + вирізати /etc/printcap:

$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v

Ось що показано, по одному на рядок:

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

Я відчуваю, що lpstatрішення є більш елегантними та надійними. Переважно тому, що /etc/printcapне було знайдено в деяких тестованих системах.

Про використання awkабо cut, залежить від того, що ви встановили та віддаєте перевагу. Параметр масиву read + bash повинен працювати на будь-якій оболонці bash, не вимагаючи зовнішніх програм.

EDIT: Я сказав, що зазначене рішення не працює для мене на Amazon Linux. Але я думаю, що це працює, якщо ви просто хочете скопіювати назви принтера з середини решти результатів. Працює так само, як і просто використовувати lpstat -a.

$ lpstat -p -d
printer HP_Deskjet_2540_series is idle. enabled since Tue 22 Dec 2015 01:12:10 PM BRST
. . .
printer GCP-Save_to_Google_Docs is idle. enabled since Tue 15 Dec 2015 02:13:33 AM BRST
system default destination: HP_LaserJet_P1606dn

lpstat + cut буде працювати і на OS X.
tresf

Згідно з вашим вихідним зразком, lpstat -p -dздається, працює…
Skippy le Grand Gourou

Вибачте, але він запитує How can I get a list of these available printers in the format that the (lpr) -P flag expects. Мій приклад lpstat -p -dчітко показує, що ви отримуєте більше, ніж просто ім'я принтера. У такому випадку ви не можете використовувати цей вихід для lpr -P $PRINTERNAMEдзвінка. Отже, ні! lpstat -p -dне працює в тому прикладі, який я наводив.
Gus Neves
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.