web-dev-qa-db-ja.com

lprで使用可能なプリンタ名を一覧表示する方法

lprのmanページには、宛先プリンタを-Pフラグで指定できると書かれています。

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

Ubuntu/GnomeのGUIを使用して、ローカルのSamba共有にさまざまなプリンタを「追加」しました。どのように私は-Pフラグが期待するフォーマットでこれらの利用可能なプリンタのリストを得ることができますか(できればbashシェルから)?

61
Ian Mackinnon
$ lpstat -p -d

CUPSマニュアル から。

95
Kevin Panko

リストを取得するためにあなたは使うことができます:

lpstat -a

または

cat /etc/printcap

プリンタ名のみを印刷するには

lpstat + read + array:

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

lpstat + awk:

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

lpstat + cut:

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

cat + grep + /etc/printcapでカット:

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

これは1行に1つずつ表示されているものです。

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

私はlpstatソリューションがよりエレガントで信頼性があるように感じます。私がテストしたシステムの中に/etc/printcapが見つからなかったことが主な原因です。

awkまたはcutの使用方法については、インストールした内容と好みによって異なります。 bash read + bash配列オプションは、外観を必要とせずにあらゆるbashシェルで機能するはずです。

編集: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
12
Gus Neves