lprで使用できるプリンタ名をリストする方法は?


64

lprmanページには、先のプリンタがで指定することができると言う-Pフラグ。

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

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

回答:



12

リストを取得するには、次を使用できます。

lpstat -a

または

cat /etc/printcap

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

lpstat +読み取り+配列:

$ 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 ' '

猫+ 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 arrayオプションは、外部を必要とせずに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

lpstat + cutはOS Xでも動作します。
トレスフ

出力サンプルによると、動作して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私が与えた例では動作しません。
ガスネベス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.