Linuxターミナルからlpコマンドを使ってプリンターを制御する
重要なポイント
- コマンドラインから lp を使って印刷することは、アプリケーションを開かずにファイルを直接プリンターに送信するために便利です。
- ほとんどのディストリビューションにはlpが含まれていますが、"sudo apt install cups"のようなコマンドを使用してインストールする必要があるかもしれません。
- lpstat、lpoptions、およびlpinfoを使用することで、プリンターに関する情報を見つけたり、レイアウトオプションを指定してコマンドラインから印刷ジョブを送信したりすることができます。
Linuxのlpコマンドを使用すると、ターミナルウィンドウから印刷できます。印刷ジョブを手動で送信したり、スクリプト内から送信したり、ページの向きやその他の設定を行ったり、プリンターの機能をリスト表示したりできます。
なぜコマンドラインから印刷するのか?
単なる推測のスーパーパワーを使って、家庭の設定でのLinuxコンピュータからの印刷はほとんどがGUIアプリケーション内で行われている可能性が高いと思います。
もちろん、印刷をサポートするテキストベースのユーザーインターフェース(TUI)アプリケーションもあります。これらはターミナルウィンドウ内で実行され、コンテンツをプリンターに送信できます。しかし、それでも印刷の大部分はGUIアプリケーション内から行われると予想しています。
コマンドラインからテキストファイルを印刷することは、ほとんどの人にとって日常的な活動ではありませんが、役に立つことがあります。プログラムを起動し、ファイルをロードし、印刷ボタンを押して、再びアプリケーションを閉じる必要はありません。lpコマンドを使用すると、コマンドラインから直接プリンタにファイルを送信することができます。
これはある程度まで役に立ちますが、シェルスクリプトが何かを印刷する必要があるときに真価を発揮します。既存のファイルを印刷することや、スクリプト自体が作成したファイルを印刷することは、lpおよびその関連プログラムを使えば簡単です。
ただし、理解しておくべき重要な点は、古い形式のファイルをプリンターに送信することはできないということです。たとえば、ODTファイルをプリンターに送信することはできません。なぜなら、それはプリンターが理解できる形式ではないからです。LibreOfficeでODT文書を開いて印刷すると、LibreOfficeはプリンターが理解し、実行できる変換されたバージョンのファイルをプリンターに送信します。我々がここで話している印刷は、テキストファイルと一緒に使用するのが最も良いです。
lpをインストールする
ほとんどのディストリビューションには、lpやその他のプリンタ関連のコマンドが初めから含まれています。もしそれらをインストールする必要がある場合は、これらのコマンドが必要になります。
Ubuntuでは、次のように入力する必要があります:
sudo apt install cupsFedoraではこのコマンドを使用してください:
sudo dnf install cupsManjaroのコマンドは次の通りです:
sudo pacman -S cupsプリンターについて知る
lpコマンドには、いくつかの便利な関連コマンドがあります。そのうちの1つがlpstatで、プリンターに関する情報を見つけることができます。
コマンドラインオプションを使用せずに、lpstatは印刷キューを表示します。
lpstat-p (プリンター) オプションは、構成されたプリンターと、アイドル状態や印刷中などのステータスをリスト表示します。
lpstat -pデフォルトのオプションである -d は、デフォルトのプリンターを表示します。このコマンドから有用な応答を得るには、デフォルトのデバイスとして設定されたプリンターが必要です。たとえプリンターが1台しかなくても、それがデフォルトになるとは限りません。
lpstat -dlpoptionsコマンドは、プリンターがサポートするオプションを一覧表示します。プリンターが指定されていない場合、デフォルトのプリンターが説明されます。
lpoptions特定のプリンターについて調べるには、-p(プリンター)オプションを使ってコマンドラインに名前を渡すことができます。接続されているプリンターが一台だけで、デフォルトのプリンターなので、以前と同じ結果が得られます。
lpoptions -p Lexmark_B2442dw使用する名前は、lpstat -pの出力を使用して見つけることができます。
lpoptions コマンドの出力をより読みやすくするために、column コマンドを通すことができます。空白に遭遇するたびに新しい行を開始するように指示すれば、解析がはるかに簡単な粗い列形式が得られます。
lpoptions -p Lexmark_B2442dw | column -t -o $'\n'lpinfoコマンドは、検出されたプリンターの接続詳細を提供するために、-v(詳細)オプションと共に使用できます。各プロトコルを使用できるプリンターが表示されます。
lpinfo -vプリンターについて知ったので、印刷ジョブを送信できます。
lpを使った印刷ジョブの作成
lpコマンドは、実際に印刷ジョブをプリンタに送信するコマンドです。
lpqを使ってプリントキューを簡単に確認できます。
lpq空の印刷キューから始めます。ジョブを送信するには、lpコマンドを使用し、その後にファイル名を続けます。
lp sample-file-1.txtもしあなたが十分に早い場合、またはファイルが十分に大きい場合は、lpqを使用してジョブが印刷キューに到着したかどうかを確認できます。
lpqキューにさらにジョブを追加することができ、それらはプリンターが作業を進めるにつれて順番に処理されます。
lp sample-file-2.txt
lpqファイル名にスペースが含まれている場合は、ファイル名を引用符で囲むか、タブ補完を使用して名前を自動的に補完してください。タブ補完は自動的にスペースをエスケープします。
lp "sample file 3.txt"
lpqドキュメントの複数のコピーが必要な場合は、-n(コピー)オプションを使用し、必要なコピーの数を続けて入力してください。
lp -n 15 sample-file-1.txt
lpq印刷キューに15件のエントリーが表示されないことに注意してください。このジョブは一度プリンターに送信され、15回印刷するように指示されています。
紙を節約するために、プリンターが対応している場合は両面印刷ができます。ページを長辺または短辺で回転させることを選択できます。これは、-o(オプション)オプションを使用し、使用したいオプションの名前(この場合は「sides」)とそのオプションへの任意のパラメータを渡すことで行います。
両面印刷を行い、ページが長辺で回転するようにしましょう。
lp -o sides=two-sided-long-edge sample-file-1.txtページを短辺でめくるように印刷するためには、両面短辺パラメータを使用します。
lp -o sides=two-sided-short-edge sample-file-1.txt風景またはポートレートの選択は同じくらい簡単です。再び-o(オプション)オプションを使用し、ポートレートまたは風景のいずれかを指定します。
lp -o landcape sample-file-1.txt-o(オプション)オプションと共に使用できる多くの他のオプションがあります。興味がある場合はマニュアルページを確認してください。いくつかのオプションが役に立つかもしれません。
- ジョブシート=名前:カバーシートを印刷します。名前を、機密、極秘、標準、トップシークレット、または非機密のいずれかに置き換えてください。
- メディア=サイズ:紙のサイズを設定します。一般的なサイズは「A4」、「レター」、および「リーガル」です。
- number-up=number: 数字は2、4、6、9、または16にすることができます。これは、1つの出力ページに詰め込まれる入力ページの数を決定します。
- 印刷品質=品質: 品質値は3(ドラフト)、4(通常)、または5(最高)にすることができます。
印刷ジョブのキャンセル
印刷ジョブをキャンセルするには、そのジョブ番号を知っている必要があります。これは、lpqコマンドの出力に見つけることができます。
必要なコマンドはキャンセルで、その後にジョブ番号を入力します。
lpq
cancel 16
lpq複数のジョブを一度にキャンセルできます。
lpq
cancel 15 17
lpqプリントキューは現在空になりました。
ハードコピー、それ
ターミナルウィンドウからプリンターを制御できることは、コマンドラインからページレイアウトや用紙処理をある程度制御しながら印刷できることを意味しますが、シェルスクリプトの内部から印刷する方法が必要なときにこそ本領を発揮します。




















