FreeBSD
11.5 使用打印機
11.6 標准spooler 之外的選擇
=============================================================
11.5 使用打印機
這一節將告訴你如何在FreeBSD 下使用打印機。這裡有份使用者等級命令的概述。
lpr
打印工作
lpq
檢查打印機隊列
將工作從打印機隊列中刪除
lprm
也有系統維護使用的命令,lpc,用來控制打印機及其隊列。在管理打印機這一節裡有更詳細的說明。
lpr,lprm 和lpq 這三個命令都接收-P printer-name 這個指定在/etc/printcap 文件裡設定的打印機/隊列的參數。允許你對不同的打印機做要求、刪除,以及檢查工作。如果你沒有使用-P 參數,那麼這些命令將使用PRINTER 環境變量所指定的打印機。若你也沒有PRINTER 環境變量,那麼這些命令則會對別名為lp 的打印機指定動作。此後,默認打印機指的就是以PRINTER 環境變量設定的打印機或是當lp 環境變量不存在時,別名為lp 的打印機。
11.5.1 打印工作
要打印文件,輸入:
% lpr filename ...
這將把所有列出的文件以默認打印機打印。如果你沒有指定任何文件,那麼lpr 將會從標准輸入讀入資料。下面這個例子將會打出一些重要的系統文件:
% lpr /etc/host.conf /etc/hosts.equiv
若要指定以特定的打印機輸出,輸入:
% lpr -P printer-name filename ...
下面這個例子會將當前目錄下的文件列表從名為rattan 打印機輸出:
% ls -l | lpr -P rattan
因為lpr 命令之後沒有指定任何一個文件,lpr 將會從標准輸入讀入資料以打印出來,即由ls -l 命令所產生的輸出。
第61 頁FreeBSD 使用手冊
lpr 命令有許多參數如控制輸出格式、套用文件轉換、一次打印出多份,等等。請參看打印參數這一節裡有更詳細的說明。
11.5.2 檢查打印工作
當你使用lpr 打印時,一起送到LPD spooling 系統的資料稱為一個“打印工作”。每一台打印機都有一個打印工作隊列,而你的打印工作和其它的打印工作一樣在隊列裡等待打印。打印機會將先打印先送達的工作。
要顯示默認打印機的隊列,輸入lpq 即可。若要指定打印機,請指定-P 參數。例如
% lpq -P bamboo
這個命令會顯示叫做bamboo 的打印機隊列。這裡有一份lpq 命令的輸出例子:
bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytes
上面顯示一共有三個工作在bamboo 的隊列裡。第一個工作由使用者kelly 送出,“工作代碼”為9.每一個工作都會有個唯一的工作代碼。通常你可以忽略工作代碼,但是如果你要取消某個工作時,你就會需用知道工作號碼。詳情請參看刪除隊列這一節。工作號碼9 裡包含了兩個文件。用lpr 送多個文件將會被視為同一個工作。這是目前正在處理的工作(注意“Rank”欄標示的active),即打印機現在應該就在打印這個工作。第二個工作的資料是用lpr 從標准輸入接收資料的。而第三個工作是由使用者mary 送出的。這是一個較大的工作。而她要打印的文件因為太長而放不下,所以lpq 命令只顯示三個點。lpq 最前面的輸出通常可以看出打印機現在在做什麼(至少是LPD 覺得打印機現在應該是在做什麼)。
lpq 命令可以使用-l 參數以得到更詳細的列表。這裡有一個lpq -l 的輸出范例:
waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
第62 頁FreeBSD 使用手冊
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
11.5.3 刪除打印工作
如果你改變主意不想打印你的工作了,你可以用lprm 命令把他們從打印隊列中刪除。通常你也可以用lprm 把一個正在處理的工作刪除,不過可能還是會打印出部分或是全部的文件。
要從默認打印機裡刪除工作,首先,用lpq 找出工作代碼,然後輸入:
% lprm job-number
如果要從指定的打印機刪除工作,那麼用-P 參數。下列的命令從打印機bamboo 的隊列中刪除工作號碼為10 的工作:
% lprm -P bamboo 10
lprm 命令有一些常用的用法:
lprm -
將(默認打印機)裡所有屬於你的工作都刪除。
% lprm -P rattan -
lprm user
將(默認打印機)裡所有屬於使用者user 的工作皆刪除。只有超級使用者可以刪除其它人的工作,你只能刪除你自己的工作。
lprm
若不指定工作號碼、使用者名稱或是- ,lprm 將刪除目前默認打印機正在處理的工作,但前提是這個工作必需是屬於你的。超級使用者可以刪除任何目前正在處理的工作。若使用-P 參數配合上述的常用用法,則上述的動作將對指定的打印機動作而不是對默認打印機。下列的命令將會刪除目前使用者在打印機rattan 隊列中的所有工作:
注意: 如果你使用的是網絡打印機,lprm 將只允許你從輸出工作的機器刪除該工作。
第63 頁FreeBSD 使用手冊
下面這些命令可以說明這個概念:
% lpr -P rattan myfile
% rlogin orchid
% lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
% lprm -P rattan 13
rose: Permission denied
% logout
% lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
11.5.4 在純文字之外:打印參數
lpr 命令提供控制格式輸出、轉換圖形及其它文件格式、一次打出多份、工作處理方式等參數。這一節將一一介紹。
11.5.4.1 格式輸出與轉換參數
下列的lpr 命令控制文件輸出的格式。如果你的打印工作裡沒有純文字或是你希望純文字通過lpr 處理後以特定的格式輸出時,你可以使用這些參數。
舉例來說,下面的命令從叫做bamboo 的打印機將DVI 文件(由TeX 排版系統產生)
fish-report.dvi 打出:
% lpr -P bamboo -d fish-report.dvi
這些參數將套用這個工作裡的每個文件,所以你不能把DVI 和ditroff 文件在同一個工作裡一起處理,而要分兩次工作用不同的轉換參數。
注意: 這些參數除了-p 和-T 需要為指定的打印機安裝轉換的過濾程序外,其它的都不用。舉例來說,參數-d 需要安裝DVI 轉換過濾程序。轉換用的過濾程序這一節有較詳細的說明。
c
第64 頁d
f
g
i number
l
n
p
T title
t
v
下面是一個以默認打印機打印格式化過的ls manual page 的例子:zcat 命令將ls 原始數據解壓縮並傳送給troff 命令,將該數據格式化後以GNU troff 格式輸出給lpr 送給LPD spooler 處理。因為我們在使用lpr 命令時使用了-t 參數,所以spooler在打印時會把GNU troff 轉換成默認打印機所能了解的格式。將輸出縮進number 個字符。如果你省略number,則縮進8 個字符。這個參數只有在某些轉換用的過濾程序上有效。原封不動的打出文字數據,包括控制字符。打印ditroff (device independent troff) 數據。在打印之前以pr 格式化輸出。請參見pr 以取得更多的信息。以title 取代pr header 中的文件名。這個參數只有在配合-p 參數使用時才有效。
打印troff 數據。
打印raster 數據。
% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
打印cifplot 文件。
打印DVI 文件。
打印FORTRAN 文本文件
打印plot 數據。
注釋: 請不要在-i 和數字之間加上空白
FreeBSD 使用手冊
第65 頁11.5.4.2 工作處理方式參數
# copies
m
s
r
11.5.4.3 Header Page 參數
這些參數就沒有作用了。請參見Header Pages 這一節以了解如何設定header pages。
1. C text
將同一工作裡的每個文件都打出copies 份。系統管理員可以將這個參數關閉,以減低打印機的障礙並鼓勵使用復印機。請參見限制打印多份這一節的說明。
這個例子將會從默認的打印機打出三份parser.c,然後打出三份parser.h:
% lpr -#3 parser.c parser.h
完成打印工作後,便通知使用者。若使用這個參數,當打印工作完成後,LPD 系統將會寫信給你。在這封信中將會告訴你你的工作是否成功地打出或是有錯誤以及(通常會)告訴你錯誤的原因。
不要將要打印的文件拷貝到spooling 目錄,而只要以symbolic links 的方式取代。如果你要打印大的文件,你可考慮用這個參數。這可以節省你spooling 目錄的空間(否則spooling 目錄所在的文件系統可能會空間不足)。同時他也可以省下LPD 將文件拷貝到spooling 目錄所需的時間。
這麼做有一個缺點就是當打印還沒結束時,你不能修改或刪除打印中的文件,因為LPD 在打印時還會用到原始的文件。
Note: 如果你是用網絡打印機打印,那麼LPD 還是會把你的文件拷貝到遠程的機器,所以參數-s 只有在本機上打印時才有用。
當你的文件已經拷貝到spooling 目錄時,或是用-s 參數且打印完成時,就將原本的文件刪除。請小心使用這個參數!
有一些參數是設定lpr 打印在header pages 上的文字。如果打印header pages 的話,那麼將header page 上的機器名稱以text 取代。機器名稱通常是打印送出工作的機器名稱。