列印系統 - 如何將資料以最優美的方式從印表機輸出

cancel

【功能】

取消 lp 指令所產生的列印要求

【語法】

cancel [request-ID] [printer]
cancel -u login_ID [printer]

【說明】

cancel 指令可用來取消 lp 指令所產生的列印要求。使用方式可為指定列印要求編號或負責列印的印表機名稱,或者是提出列印要求的使用者名稱皆可。對一般使用者而言,cancel指令只能取消自己所提出的列印要求。

注意:在 Ultrix 系統上類似的指令為 lprm。

【選項】

選 項

說 明

-u(user)

以指定使用者名稱的方式取消列印要求。

★註:以上的選項是在 SVR4 版本時才開始提供。

【範例】

1. 以指定編號的方式取消 lp 指令產生的列印要求。

$ cancel printer1-161
request "printer1-161" cancelled

printer1-161 是列印要求編號(request ID),或是可用指定印表機名稱的方式來取消自己對印表機所提出的每一個列印要求。

cancel print1

2. 指定使用者名稱的方式取消列印要求。

cancel -u peterson

將使用者 peterson 所提出的列印要求消取。

lpline printer

【功能】

要求印表機列印資料

【語法】

lp [printing-options] files
lp -i request-IDs printing-options

【說明】

lp 指令提供列印的功能,可將指定的 files 檔案照順序印出,而成為一個列印要求,列印要求編號會在 lp 指令提出後顯示在螢幕上。若無給予 files 名稱或是 files 名稱是 '-'字元時,則是從標準輸入讀取列印的資料。

第二種語法可對一個已提出的列印要求重新設定其控制選項,選項的使用與前一種格式的選項完全相同,亦即可重新設定。在改變時若是該列印要求正在列印中,則會使它立即停止印出然後全部重印一次(除非有使用 -P 選項)。

對於每一個列印要求,lp 指令都會給予一個編號,供後續的控制使用,如取消列印(使用 cancel 指令)或是修改列印的控制選項(使用 lp 指令),也可查詢各列印要求編號處理的情形(使用 lpstat 指令)。

【選項】

選 項

說 明

-c (copy)

在列印的檔案 files 時前,先複製一份專供 lp 指令使用。正常的情形下若不加 -c 選項,則使用者在提出列印的要求之後必須等列印完成才能刪除,且不加 -c 選項時,files 檔案在未印出前若有修改,則印出的結果是修改後的內容。

-d dest

(destination)

指定輸出的印表機名稱或類別(class)。若 dest 是印表機名稱時,則由指定的印表機 dest 印出。

若 dest 是印表機類別時,則會自動去尋找屬於相同類別中第一個可使用的印表機。此選項無設定時,dest 是從環境變數 'LPDEST' 取出印表機的名稱,在 'LPDEST' 未設定的情形時,則使用電腦系統的預設名稱(印表機名稱 dest 可使用 lpstat 指令查出)。

-f form-name

[-d any] (form)

依照 form-name 所指定格式(form)處理列印要求的輸出資料。處理列印要求的印表機必須已設定好 form-name 的格式,否則會被拒絕印出。

-d any 的選項可使 lp 指令自動去搜尋有設定 form-name 格式的印表機。

-H special-handling

(handling)

根據 special-handling 來控制列印。

special-handling 的值有 3 種,分別為:

hold 暫停印出,直到被要求繼續處理,若是正在列印中也會被暫停。

resume 繼續處理,取消暫停的要求。

immediate 要求成為下一個處理的列印要求,提供了改變列印順序的功能。這項控制只能由列表機的管理者(LP administrators)使用。

若有多個列印要求都是以 immediate 控制時,則這些列印要求會以相反的順序印出。亦即最後使用該項控制的列印要求會最先印出。當一個印表機正在處理別的列印要求時,這項控制可使之暫停而由要求immediate 的列印要求先處理。

-m (mail)

正常的情形下,列印要求在處理完成後不會主動通知使用者。

-m 選項可使印列要求印出後以郵件通知使用者已處理完成。

-n number (number)

指定列印的份數為 number(預設值為 1)。

-o option (option)

控制列印的格式,可重複使用此選項,方式如下:

1. -o option -o option ...

2. -o option option option ...

option 可使用下面命令之一:

nobanner

不印出報表的標題頁(banner page,含檔案名稱、使用者名稱等資料)。

nofilebreak

 

在列印要求中有多個檔案時,可要求各檔案之間不跳頁,而會連續印出。

length=scaled-decimal-number

設定每頁印出的長度為scaled-decimal-number 行。計算單位可改變為英吋或是公分,分別以 'i' 及 'c' 字元附加在 scaled-decimal-number 之後。無附加字元時則預設為以行為計算單位。例如:

length=66 表示每頁印出66行

length=20I 表示每頁印出的長度為 20 英吋

length=50.5c 表示每頁印出的長度為50.5公分

此命令不可與 -f 選項同時使用。

width=scaled-decimal-number

設定每頁印出的寬度為 scaled-decimal-number 個字。計算單位可改變為英吋或公分(請參考 length 的說明)。此命令不可與 -f 選項同時使用

lpi=scaled-decimal-number

設定每英吋的行數(lines per inch)。此命令不可與 -f 選項 同時使用。

cpi=scaled-decimal-number

設定每英吋的字元數(characters per inch),例如使用pica字體時可設為10,elite字體時可設為12。此命令不可與-f 選項同時使用。

stty=stty-option-list

stty-option-list 中可使用的選項與 stty 指

令的選項相同,若 stty-option-list 間有空格時應使用引號包含。

-P page-list (page)

印出 page-list 中所指定的頁數,必須與過濾器(filter)配合使用,否則不會接受列印要求。page-list 可使用頁數的範圍或是僅以頁數表示,這些指定的頁數會依由小到大的順序印出。

-q priority-level

(queue)

設定在列印的佇列(Queue)中列印要求的優先順序為priority-level。priority-level 的值可從最高優先權的 0 到最低優先權的39(若無給予優先順序則系統會自動設定)。

-s (silent)

取消印出列印要求編號。

-S character-set [-d any]

-S print-wheel

[-d any] (specify)

使用 character-set 或 print-wheel 來印出列印要求。若有使用格式(form)時,而 -S 選項中所指定的 character-set 或 print-wheel 不在該格式中,則會拒絕處理列印。

-d any 選項可使lp指令自動去搜尋可使用character-set或是print-wheel字體的印表機。

-t title (title)

使標題頁上印出 title 字串(預設為無此字串)。

-T content-type

[-r] (type)

使用特定的處理方式 content-type 印出檔案的內容。若無印表機能符合content-type,則自動使用過濾器(filter)將內容轉換成可使用的形式。

-r 選項可強迫不使用過濾器,所以若在無印表機符合的情況下,則會不接受該列印要求。

若無指定 content-type,則 lp指令會自動去檢查檔案的內容來設定適合該印表機的 content-type。

因大多數的矩陣式印表機都可使用 simple 做為 content-type,所以在找不到適合的情形下會自動設為 simple 方式(其他還有 PostScript 方式等)。

-w (write)

要求 files 印出完畢後,將訊息以 write 的方式通知使用者,若使用者已退出系統,則以郵件方式取代。

-y mode-list

根據 mode-list 中所指定的列印模式來處理列印要求。

此選項必須與過濾器(filter)配合使用,否則不會接受該列印要求。

★ 註:選項 -f、-H、-P、-q、-S、-T、-y 是在 SVR4 版本時才開始提供。

【範例】

1. 印出指定檔案的內容。

$ lp economics
request id is printer1-229(1 file)

會印出文字檔案 economics 的內容。

系統在接受到列印要求後會顯示該列印要求編號,供使用者後續的查詢和控制用。

2. 一次列印多個檔案。

$ lp jan feb mar
request id is printer1-231 (3 files)

列印要求編號 231 代表 3 個檔案的列印。

在輸出的結果中只會有一個的標題頁,每個檔案都會在頁的最前端開始處印出,除非使用者要求各檔案之間不跳頁才會使 3 個檔案連續印出(可使用 -o 選項的 nofilebreak 命令)。

3. 指定印表機的名稱並在列印完成後傳送郵件給使用者。

cat parade | lp -m -d printer2

-m 選項是要求在處理完畢時以郵件方式通知使用者。

-d 選項是指定從印表機 printer2 印出。

4. 將資料列印 30 份。

lp -n 30 today

-n 選項之後接的是要求重複印出的次數。因此,檔案today 的內容會被印出 30 次。

lpstatlp status

【功能】

查詢印表機的相關資訊和列印要求的狀態

【語法】

lpstat [options]

【說明】

在 lp 指令產生列印要求後,可使用 lpstat 指令來進行查詢,您可以檢查印表機的處理情形,或是使用選項來印出印表機相關資訊。

正常情況下 lp 指令接受列印要求後,會印出該項列印要求的編號,而 lpstat 指令即可根據此一編號來查詢列印完成與否,或是使用 cancel 指令取消指定的列印要求。系統上每部印表機都會有印表機名稱和種類,供 lp 指令使用及給 lpstat 指令做查詢,同時 lpstat 指令亦可用來查詢系統有那些印表機存在。

該指令的選項可重複或按任意順序出現,其限制為選項中的 list 必須遵守下面 2 個規則之1。

1. list 的組成項目之間以逗點 ',' 分隔,如:

-u user1,user2,user3

其中不可有空白字元存在。

2. list 的組成項目間以空白字元分隔,如:

-u "user1 user2 user3"

list 若是用 all 取代或完全省略時,則表示所有的資訊,例如 lpstat -o all 或 lpstat -o 指令會印出每一個列印要求的處理情形。

【選項】

選 項

說 明

-a [list] (accept)

查詢處理列印要求的預設印表機,或是查詢 list 所指的印表機名稱及種類。

-c [list] (class)

list 是印表機的種類(class),可用來查詢該種類有那些印表機可供使用。在沒有給予 list 時,表示要查詢系統中有那些印表機的種類。

-d (default)

查詢列印要求的預設印表機名稱。

-f [list] [-l]

(form)

查詢印表機可使用的格式(form)名稱,list 是由格式名稱所組成,預設的 list 值是 all。

-l 選項是印出詳細的格式資料。

-o [list] (output)

查詢列印要求的處理情形。list 可為印表機名稱、印表機的種類名稱或列印要求的編號。

-p [list] [-D] [-l]

(printer)

查詢印表機的狀態,list 是由印表機名稱組成。

-D 選項要求印出印表機的摘要資料。

-l 選項要求列出最完整的印表機資料。

-r (report)

查詢印表機的排程程式(LP request scheduler)是否有啟動。

-R (report)

查詢列印要求在印表機的 QUEUE 中排列的處理次序。

-s (summary)

查詢印表機的重點資料。如同使用 -c、-d、-r 及 -v 選項的總合。

-S [list] [-l] (set)

查詢 list 中的列印字形項目(character set)是否可使用。預設的 list 值是 all!

-l 選項可查詢每個印表機可使用的列印字形名稱。

-t (status)

查詢印表機的所有資料,除了 -s 選項所印出的資料外,還有每個印表機目前的工作情形。

-u [login-ID-list]

(user)

查詢 login-ID-list 中指定的使用者所提出列印要求的狀態。

login-ID-list 的組成可為下面 6 種情形:

1)user_name

本地系統的 user_name 使用者。

2)system_name!user_name

系統名稱為 system_name下的 user_name 使用者。

3)system_name!all

系統名稱為 system_name 下的每一個使用者。

4)all!user_name

在遠端系統的 user_name 使用者。

5)all!all

遠端系統下的每個使用者

6)all

本地系統下的每一個使用者。

-v [list]

查詢印表機所相對應的設備檔案名稱以及路徑。list 是印表機的名稱所組成。

★註:選項 -f、-R、-S 是在 SVR4 版本時才開始提供。

【範例】

1. 印出列印要求的處理狀態。

$ lpstat
printer1-82 eric 990 Nov 10 20:02 on printer1
printer1-83 eric 151 Nov 10 20:03

在上面的輸出結果中,有 2 個列印要求正在處理中,第一個是 printer1-82 也是正由 printer1 印表機列印中,第二個是 printer1-83。

2. 印出印表機所有的相關資料。

$ lpstat -t
scheduler is running
system default destination: printer1
members of class Parallel:
printer1
device for printer1: /dev/lp
printer1 accepting requests since Nov 10 10:12
Parallel accepting requests since Nov 10 10:12
printer printer1 now printing print1-82. enabled since Oct 11 19:00
available.
printer1-82   eric 990 Nov 10 20:02 on printer1
printer1-83   eric 151 Nov 10 20:03

使用 -t 選項可要求 lpstat 指令印出關於列印系統上的所有相關資料,印出的結果為系統的預設印表機名稱是 printer1,相對應的設備檔案名稱是 /dev/lp。

3. 查詢使用者 smith 所提出的列印要求。

lpstat -u smith

4. 查詢印表機所相對應的特殊設備檔。

$ lpstat -v
device for printer1: /dev/lp

印表機 printer1 是對應到特殊設備檔 /dev/lp。

prprint file

【功能】

將文字檔以指定的格式編排

【語法】

pr [[-columns] [-wwidth] [-a]] [-eck] [-ick] [-drtfp] [+page] [-nck] [-ooffset] [-llength] [-sseparator] [-hheader] [-F] [file...]

pr [[-m][-wwidth]] [-eck] [-ick] [-drtfp] [+page] [-nck][-ooffset] [-llength] [-sseparator] [-hheader] [-F] [file1 file2 ...]

【說明】

pr 指令可使處理後的文字檔輸出較為美觀,適合從印表機上輸出。pr 指令總共提供了 18 種選項供使用者改變輸出的結果,因此使用者可依自己的需要而改變印出的格式,常會與 lp 指令配合使用。

經過 pr 指令重新編排的文字會以分頁的格式印出(每頁預設的長度是 66 行),且每頁的前後都會有預留空間(前後各 5 行的長度),每頁的前面 5 行包含了 2 行空白及 1 行的文字說明,如頁數、檔案名稱等資料及 2 行空白。每個欄位預設為寬度相同,其間以空白字元分隔各欄,各欄過長的行會被刪除超過的部份。若使用 -s 選項時則會以分隔符號 separator 字元分隔而不刪除。

若檔案file是'-' 字元時,則從標準輸入讀取資料。-columns、-m 選項都是用來產生多欄位輸出。

-a 選項只能用來與 -columns 選項配合,而不可與 -m 選項同時使用。

【選項】

選 項

說 明

+page

page 是整數數字,用來指定從第幾頁開始列印,預設值為 1。

-columns

columns 是整數數字,用來指定每行的欄位數,預設值為 1。

此一選項常與 -e、-i 選項配合使用,做為多欄位的輸出,但不可與 -m 選項同時使用(欄位的排列順序是由上而下)。

-a (across)

設定欄的順序是由左而右的排列方式。必須與 -columns 選項配合使用(columns 數必須大於 1),對於過長的資料會被刪除。

-m (merge)

合併多個檔案(檔案數最大為 8 個),從每個檔案中取出行數相同的資料放置在同一行上,成為一個多欄位的檔案,對於資料過長的部份會被刪除。

此選項不可與 -columns 選項同時使用。

-d (double space)

在每行之間增加一空白行。

-eck (expand)

c 是字元(非數字的字元),k 是整數。這選項是將輸入檔案中的跳格字元(tab)位置設定為 k+1,2*k+1,3*k+1 的位置。若 k 是 0 或省略時則預設為 8,跳格位置是在 1,9,17等的地方;而 c 的預設值為跳格字元(tab),可由使用者重新設定一個新的字元代替。

-ick (in output)

c 是字元(非數字的字元),k 是整數。這選項是將輸出檔案中的跳格字元位置設定為 k+1,2*k+1,3*k+1 等地方。

若 k 是 0 或省略時則預設為 8,跳格位置是在 1,9,17 等的地方;而 c 的預設值為跳格字元,可由使用者重新設定一個新的字元代替。

-nck (number)

輸出時在每行前端加印行數,k 是數字的長度(預設值是 5 位數),c 是分隔行數與資料間的分隔字元(預設值是跳格字元)。行數會佔用每欄前面的 k+1 個字元。

-wwidth (width)

設定每行的字數為 width 個字元(width 的預設值為 72),這選項僅對多欄位輸出時有效,對單欄位輸出時則不受限制。

-ooffset (offset)

設定每行的前端增加 offset 個空白字元做為偏移位置使用。

-llength (length)

設定每頁的行數為 length 行(length 的預設值為 66),若 length 小於 11 時則每頁前後的預留空間會被省略,才會有足夠的空間放置資料。

-h header

(header)

使用 header 字串來取代報表前端的檔案名稱。

-p (pause)

在輸出設備是終端機時,每一頁開始前會產生嗶聲及等待使用者按 <ENTER> 鍵才會繼續處理。

-f (form-feed)

使用 form-feed 字元做為換頁用(預設的情形為以空白行隔開每一頁)。若輸出的結果是到終端機,則在第一頁的開始時會暫停。

-r (report)

取消對於無法開啟的資料檔時所產生的警告訊息。

-t

取消每一頁前後所預留的空間。

-sseparator

(separator)

欄位的分隔字元是用 separator 字元取代跳格字元。可預防欄位過多而被刪除資料過長的部份。

-F (fold)

在多欄位時,使輸入檔案中過長的部份移為下面一行的輸入(預設的處理方法是刪除輸出過長的部份)。

★註:選項 -F 是在 SVR4 版本時才開始提供。

【範例】

1. 將檔案經過編排後送到印表機:

$ pr document | pr

印表的輸出結果如下

Nov 2 16:46 1992 document Page 1
A revolution in our understanding of the Earth is reaching its climax as evidence accumulates that the continents of today are not venerable landmasses but amalgams of other lands repeatedly broken up, juggled, rotated, scattered far and wide, then crunched together into new configurations like ice floes swept along the shore of a swift-flowing stream.

2. 檔案進行編排:

$ pr -d -o5 document
Nov 2 16:46 1992 document Page 1

A revolution in our understanding of the Earth is reaching its climax as evidence accumulates that the continents of today are not venerable landmasses but amalgams of other lands repeatedly broken up, juggled, rotated, scattered far and wide, then crunched together into new configurations like ice floes swept along the shore of a swift-flowing stream.

-d 選項使輸出時每行之間會增加空白行,而 -o 選項則使每行輸出時在前端增加 5個空白字元,以達到美觀的目的。

3. 使輸出的結果為多欄位:

$ pr -3 -a listing
Nov 2 20:44 1992 listing Page 1
bring up call down call off
cross out do over figure out
give up hand in look over
look up...in make out pick up
put off put on put out
take off take over talk over
think over think up try on
try out turn down turn in
turn off turn on

使輸出的結果分為 3 個欄位,預設的輸出順序由上而下,先以垂直為主,而上面的例子則是因為使用 -a 選項,故輸出的順序為由左而右,先以水平為主。

4. 合併二個檔案:

pr -h 'balance sheet' -m account expense