Щоб отримати список, ви можете скористатися:
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
lpq
теж працює.