lp コマンドを使用して Linux ターミナルからプリンターを制御する
重要なポイント
- lp を使用してコマンド ラインから印刷すると、アプリケーションを開かずにファイルをプリンターに直接送信するのに便利です。
- ほとんどのディストリビューションには lp が含まれていますが、「sudo apt install cup」などのコマンドを使用してインストールする必要がある場合があります。
- lpstat、lpoptions、および lpinfo を使用すると、プリンタに関する情報を検索し、レイアウト オプションを指定してコマンド ラインから印刷ジョブを送信することができます。
Linux の lp コマンドを使用すると、端末ウィンドウから印刷できます。手動またはスクリプト内から印刷ジョブを送信したり、ページの向きやその他の設定を設定したり、プリンターの機能を一覧表示したりできます。
コマンドラインから印刷する理由
私の超強力な推測だけを使用すると、家庭環境での Linux コンピューターからの印刷のほとんどは、GUI アプリケーション内から行われる可能性が高いと思います。
もちろん、印刷をサポートするテキストベースのユーザー インターフェイス (TUI) アプリケーションもあります。これらは端末ウィンドウ内で実行され、コンテンツをプリンターに送信できるようになります。しかし、それでも、印刷の大部分は GUI アプリケーション内から行われると思います。
アプリケーションの外部でコマンド ラインからテキスト ファイルを印刷することは、ほとんどの人にとって日常的な作業ではありませんが、役に立つこともあります。プログラムを起動し、ファイルをロードし、印刷ボタンを押して、アプリケーションを再度閉じる必要はありません。 lp コマンドを使用すると、コマンド ラインからファイルをプリンタに直接送信できます。
これはある程度までは便利ですが、シェル スクリプトで何かを出力する必要がある場合に真価を発揮します。既存のファイルの印刷、またはスクリプト自体によって作成されたファイルの印刷は、lp およびそのサポート プログラムのファミリーを使用すると簡単です。
ただし、理解する必要がある点は、古いタイプのファイルはプリンターに送信できないということです。たとえば、ODT ファイルはプリンターが理解できる形式ではないため、プリンターに送信できません。 LibreOffice で ODT ドキュメントを開いて印刷すると、LibreOffice はファイルの翻訳されたバージョンをプリンターに送信し、プリンターはそれを理解して処理できるようになります。ここで説明する印刷は、テキスト ファイルで使用するのが最適です。
LPのインストール
ほとんどのディストリビューションには、lp およびその他のプリンタ関連のコマンドがそのまま含まれています。それらをインストールする必要がある場合は、次のコマンドが必要になります。
Ubuntu では、次のように入力する必要があります。
sudo apt install cups
Fedora では次のコマンドを使用します。
sudo dnf install cups
Manjaro のコマンドは次のとおりです。
sudo pacman -S cups
プリンターについて調べる
lp コマンドには、便利な関連コマンドがいくつかあります。そのうちの 1 つは、プリンターに関する情報を検索できる lpstat です。
コマンド ライン オプションを指定せずに使用すると、lpstat は印刷キューを表示します。
lpstat
-p (プリンター) オプションは、構成されたプリンターとそのステータス (アイドル状態または印刷中など) をリストします。
lpstat -p
-d (デフォルト) オプションは、デフォルトのプリンタを表示します。このコマンドから有用な応答を得るには、プリンターをデフォルトのデバイスとして構成する必要があります。プリンターが 1 台しかないからといって、それがデフォルトになるわけではありません。
lpstat -d
lpoptions コマンドは、プリンターがサポートするオプションをリストします。プリンタが指定されていない場合は、デフォルトのプリンタが記述されます。
lpoptions
特定のプリンターについて調べるには、コマンド ラインで -p (プリンター) オプションを使用して名前を渡します。接続されているプリンターは 1 台だけで、それがデフォルトのプリンターなので、前と同じ結果が得られます。
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 のエントリが表示されていないことに注意してください。ジョブはプリンターに 1 回送信され、15 回印刷するように指示されます。
用紙を節約するため、お使いのプリンターが両面印刷をサポートしている場合は、両面印刷できます。ページを長辺または短辺でめくるように選択できます。これを行うには、-o (オプション) オプションを使用し、使用するオプションの名前 (この場合は「sides」) とそのオプションにパラメーターを渡します。
ページの長辺を裏にして両面印刷してみましょう。
lp -o sides=two-sided-long-edge sample-file-1.txt
ページが短辺でめくられるようにページを印刷するには、two-owned-short-edge パラメーターを使用します。
lp -o sides=two-sided-short-edge sample-file-1.txt
横向きまたは縦向きを選択するのも同様に簡単です。もう一度 -o (オプション) オプションを使用し、縦または横のいずれかを指定します。
lp -o landcape sample-file-1.txt
-o (オプション) オプションと一緒に使用できるオプションは他にもたくさんあります。興味があれば man ページをチェックしてください。いくつかのオプションが役に立つかもしれません。
- job-sheets=name: カバー シートを印刷します。名前を機密、機密、機密、標準、極秘、または未機密のいずれかに置き換えます。
- media=size: 用紙サイズを設定します。代表的なサイズは「a4」、「レター」、「リーガル」です。
- number-up=number: 数値は 2、4、6、9、または 16 です。これにより、1 つの出力ページに何ページの入力ページを詰め込むかが決まります。
- print-quality=quality: 品質の値は 3 (ドラフト)、4 (標準)、または 5 (最高) です。
印刷ジョブをキャンセルする
印刷ジョブをキャンセルするには、そのジョブ番号を知る必要があります。これは、lpq コマンドの出力で確認できます。
必要なコマンドは cancel で、その後にジョブ番号が続きます。
lpq
cancel 16
lpq
複数のジョブを一度にキャンセルできます。
lpq
cancel 15 17
lpq
これで印刷キューが空になりました。
ハードコピー、あれ
ターミナル ウィンドウからプリンタを制御できるため、ページ レイアウトや用紙の処理をある程度制御しながらコマンド ラインから印刷できますが、シェル スクリプト内から印刷する方法が必要な場合に真価を発揮します。