¾¯¸æ: ´Ó FreeBSD 8.0 Æð£¬ ´®¿Ú¶ÔÓ¦µÄÉ豸ÃûÓÉ /dev/ttydN ±äΪ /dev/ttyuN¡£ FreeBSD 7.X Óû§Ó¦½«ÕâÆªÎĵµµÄʾÀýÖеÄÉ豸Ãû¸ÄΪÔÏȵÄÑù×Ó¡£
¡¡¡¡Õⲿ·Ö½«ÃèÊöÓÃÀ´´òÓ¡ÌØ±ð¸ñʽÎļþ£¬ ҳü£¬ ͨ¹ýÍøÂç´òÓ¡£¬ ÒÔ¼°¶Ô´òÓ¡»úʹÓÃÏÞÖÆºÍ ¼ÇÕÊ¡£
¡¡¡¡¾¡¹Ü LPD ´¦ÀíÍøÂçÐÒ飬 ÈÎÎñÅŶӣ¬ ·ÃÎÊ¿ØÖÆ£¬ ºÍ´òÓ¡µÄÆäËû·½Ã棬 µ«´ó²¿·Ö ʵ¼Ê ¹¤×÷»¹ÊÇÓÉ ¹ýÂËÆ÷¡£ ¹ýÂËÆ÷ÊÇ Ò»ÖÖÓë´òÓ¡»úͨѶ²¢ÇÒ´¦ÀíÉ豸ÒÀÀµºÍÌØÊâÐèÒªµÄ ³ÌÐò¡£ ÔÚ¼òµ¥´òÓ¡»úÉèÖÃÕâ½ÚÀ ÎÒÃǰ²×°ÁËÒ»¸ö´¿Îı¾¹ýÂËÆ÷ ©¤©¤ Ò»¸öÓ¦¸Ã¿ÉÒÔÓÃÔÚ´ó¶àÊý´òÓ¡»úÉϵ﫼òµ¥µÄ¹ýÂËÆ÷ ( °²×°Îı¾¹ýÂËÆ÷)¡£
¡¡¡¡È»¶ø£¬ÎªÁ˽øÐиñʽת»»£¬ ´òÓ¡¼ÇÕÊ£¬ ÊÊÓ¦ÌØÊâµÄ´òÓ¡»ú£¬ µÈµÈ£¬ ÄúÐèÒªÃ÷°×¹ýÂËÆ÷ÊÇÔõÑù¹¤×÷µÄ¡£ ÔÚ¸ù±¾ÉϹýÂËÆ÷¸ºÔð´¦ÀíÕâЩ·½Ãæ¡£ µ«»µÏûÏ¢ÊÇ´ó¶àÊýʱºò Äú ±ØÐë×Ô¼ºÌṩ¹ýÂËÆ÷¡£ ºÃÏûÏ¢ÊǺܶà¹ýÂËÆ÷ͨ³£¶¼ÒѾÓÐÁË; µ±Ã»ÓеÄʱºò£¬ ËüÃÇͨ³£Ò²ÊǺܺÃдµÄ¡£
¡¡¡¡FreeBSD Ò²ÌṩÁËÒ»¸ö¹ýÂËÆ÷£¬ /usr/libexec/lpr/lpf£¬ ¿ÉÒÔÈôó¶àÊý¿ÉÒÔ´òÓ¡´¿Îı¾µÄ´òÓ¡»ú¹¤×÷¡£ ( Ëü´¦ÀíÎļþÀïµÄÍ˸ñºÍÌø¸ñ£¬²¢ÇÒ½øÐмÇÕÊ£¬ µ«Õâ»ù±¾¾ÍÊÇËüËùÓÐÄÜ×öµÄÁË¡£) ÕâÀﻹÓм¸¸ö¹ýÂËÆ÷ºÍ¹ýÂËÆ÷×é¼þÔÚ FreeBSD Ports Collection Àï¡£
¡¡¡¡ÕâÊÇÔÚÕâ½ÚÀïÄú½«ÕÒµ½µÄÄÚÈÝ£º
ÔÚ ¹ýÂËÆ÷ÊÇÈçºÎ¹¤×÷µÄ С½ÚÖн«½éÉÜÔÚ´òÓ¡¹ý³ÌÖйýÂËÆ÷µÄ×÷ÓᣠÈç¹ûÏ£ÍûÁ˽âÔÚ LPD ʹÓùýÂËÆ÷ʱ£¬ ÔÚ ¡°Ä»ºó¡± ·¢ÉúµÄÊÂÇ飬 ±ãÓ¦ÔĶÁÕâһС½Ú¡£ Á˽âÕâЩ֪ʶÄܹ»°ïÖúÄúÔÚΪ´òÓ¡»ú°²×°¹ýÂËÆ÷ʱ¸ü¿ìµØÅŲé¿ÉÄÜ»áÓöµ½µÄ¸÷ÖÖÎÊÌâ¡£
LPD ¼Ù¶¨ÈκδòÓ¡»úÔÚĬÈÏ״̬ϾùÄÜ´òÓ¡´¿Îı¾ÄÚÈÝ¡£ ¶ÔÓÚ²»ÄÜÖ±½Ó´òÓ¡´¿Îı¾µÄ PostScript® ´òÓ¡»ú (ÒÔ¼°ÆäËû»ùÓÚ´òÓ¡ÓïÑԵĴòÓ¡»ú) ¶øÑÔÕâ»á´øÀ´ÎÊÌâ¡£ ÔÚ ÔÚ PostScript ´òÓ¡»úÉÏʹÓô¿Îı¾ÈÎÎñ Õâ½ÚÖн«»á½éÉÜÈçºÎ½â¾öÕâ¸öÎÊÌâµÄ·½·¨¡£ Èç¹ûÄúʹÓà PostScript ´òÓ¡»ú£¬ ¾ÍÓ¦ÔĶÁÕâ½ÚÄÚÈÝ¡£
PostScript ¶ÔÓÚÐí¶à³ÌÐòÀ´Ëµ¶¼ÊÇÒ»¸ö·Ç³£ÊÜ»¶ÓµÄÊä³ö¸ñʽ¡£ һЩÈËÉõÖÁÖ±½Óд PostScript ´úÂë¡£ µ«²»ÐÒµÄÊÇ£¬ PostScript ´òÓ¡»ú·Ç³£°º¹ó¡£ Ä£Äâ PostScript ÔÚ ·Ç PostScript ´òÓ¡»úÉÏ Õâ½Ú½«¸æËßÄúÔõÑù½øÒ»²½ÐÞ¸Ä ´òÓ¡»úµÄÎı¾¹ýÂËÆ÷£¬ ʹµÃһ̨ ·Ç PostScript ´òÓ¡»ú½ÓÊÜ ²¢´òÓ¡ PostScript Êý¾Ý¡£ Èç¹û ÄúûÓÐ PostScript ´òÓ¡»ú£¬ ÄÇôÄúÓ¦¸ÃÔĶÁÕâ¸öС½Ú¡£
ת»»¹ýÂËÆ÷
Õâ½Ú½²ÊöÁËÒ»¸ö×Ô¶¯°ÑÖ¸¶¨¸ñʽÎļþ£¬ ±ÈÈçͼÏñ»òÅŰæÊý¾Ý£¬
ת»»³ÉÄú´òÓ¡»ú¿ÉÒÔÀí½âµÄ¸ñʽµÄ·½·¨¡£ ÔÚÔĶÁÁËÕâ½ÚÖ®ºó£¬ Äú¾ÍÓ¦¸Ã¿ÉÒÔÅäÖôòÓ¡»ú£¬
ÈÃÓû§¿ÉÒÔÓà lpr -t
À´´òÓ¡ troff
Êý¾Ý¡¢ Óà lpr -d
À´´òÓ¡ TeX DVI Êý¾Ý£¬ »òÓà lpr -v
À´´òÓ¡¹âդͼÏñÊý¾ÝµÈ¹¤×÷ÁË¡£ ½¨ÒéÄúÔĶÁÕâ½Ú¡£
Êä³ö ¹ýÂËÆ÷ Õâ½Ú½²ÊöÁËÕâ¸ö²»ÊǾ³£Ê¹ÓÃµÄ LPD: µÄ¹¦ÄÜ£Êä³ö¹ýÂËÆ÷¡£ ³ý·ÇÄúÒª´òӡҳü (¼û ҳü Õâ½Ú )£¬ Äú»òÐí¿ÉÒÔÍêÈ«Ìø¹ýÕâ½Ú¡£
lpf: Ò»¸öÎı¾¹ýÂËÆ÷ ÃèÊöÁË lpf£¬ Ò»¸ö FreeBSD ×Ô´øµÄÏ൱ÍêÕû¶øÓÖ¼òµ¥µÄÎı¾¹ýÂËÆ÷£¬ ¿ÉÒÔʹÓÃÔÚÐÐʽ´òÓ¡»ú(ºÍÄÇЩµ£µ±ÐÐʽ´òÓ¡»ú¹¦Äܵ魯â´òÓ¡»ú )ÉÏ¡£ Èç¹ûÄúÐèÒªÒ»¸ö¿ìËٵķ½·¨À´ÈôòÓ¡»úͳ¼Æ´òÓ¡´¿Îı¾µÄ¹¤×÷Á¿£¬ »òÕßÄúÓÐһ̨Óöµ½Í˸ñ×Ö·û¾ÍðÑ̵ĴòÓ¡»ú£¬ ÄúÓ¦¸Ã¿¼ÂÇ lpf¡£
×¢Òâ: Äú¿ÉÒÔÔÚ /usr/share/examples/printing Ŀ¼ÖÐÕÒµ½ÏÂÃæ½«Ìáµ½µÄÄÇЩ½Å±¾µÄ¸±±¾¡£
¡¡¡¡Ç°ÃæËµ¹ý£¬ ¹ýÂËÆ÷ÊÇÒ»¸ö±» LPD Æô¶¯£¬ ÓÃÀ´´¦ÀíÓë´òÓ¡»úͨѶ¹ý³ÌÖÐÉ豸ÒÀÀµµÄ²¿·Ö µÄ¿ÉÖ´ÐгÌÐò¡£
¡¡¡¡µ± LPD ÏëÒª´òÓ¡ Ò»¸öÈÎÎñÖеÄÎļþ£¬ ËüÆô¶¯Ò»¸ö¹ýÂËÆ÷ ³ÌÐò¡£ Ëü°ÑÒª´òÓ¡µÄÎļþÉèÖóɹýÂËÆ÷µÄ±ê×¼ÊäÈ룬 ±ê×¼Êä³öÉèÖóɴòÓ¡»ú£¬ ²¢ÇÒ°Ñ´íÎóÐÅÏ¢¶¨Ïòµ½ ´íÎóÈÕÖ¾Îļþ (ÔÚ lf ±êʶÀïÖ¸¶¨£¬ ĬÈÏÔÚ /etc/printcap£¬ »òÕß /dev/console ÎļþÀï )¡£
¡¡¡¡¹ýÂËÆ÷±» LPD Æô¶¯£¬ ²¢ÇÒ¹ýÂËÆ÷µÄ²ÎÊýÒÀÀµÓÚ /etc/printcap ÎļþÖÐËùÁгöµÄºÍÓû§ÎªÈÎÎñÓà lpr(1) ÃüÁîËùÖ¸¶¨µÄ¡£ ÀýÈ磬
Èç¹ûÓû§ÊäÈë lpr -t
£¬ LPD »áÆô¶¯ troff ¹ýÂËÆ÷£¬ ¼´ÔÚÄ¿±ê´òÓ¡»úµÄ tf
±êÇ©ÀïËùÁгöµÄ¹ýÂËÆ÷¡£ Èç¹ûÓû§ÏëÒª´òÓ¡´¿Îı¾£¬ Ëü½«»áÆô¶¯ if
¹ýÂËÆ÷ (ÕâÊÇͨ³£µÄÇé¿ö£º ²Î¼û Êä³ö¹ýÂËÆ÷ À´µÃµ½ ϸ½Ú)¡£
¡¡¡¡ÔÚ /etc/printcap ÎļþÖУ¬ Äú¿ÉÒÔÖ¸¶¨ÈýÖÖ¹ýÂËÆ÷£º
The Îı¾¹ýÂËÆ÷ £¬ ÔÚ LPD ÎĵµÖÐÒ²½Ð×ö ÊäÈë¹ýÂËÆ÷ £¬ ´¦Àí ³£¹æµÄÎı¾´òÓ¡¡£ ¿ÉÒÔ°ÑËüÏëÏó³ÉĬÈϹýÂËÆ÷¡£ LPD ¼Ù¶¨Ã¿Ì¨´òÓ¡»úĬÈÏÇé¿ö϶¼¿ÉÒÔ´òÓ¡´¿Îı¾£¬ ¶øÎı¾¹ýÂËÆ÷µÄÈÎÎñ¾ÍÊÇÀ´¸ã¶¨Í˸ñ¡¢ Ìø¸ñ£¬ »òÕ߯äËûÔÚijÖÖ´òÓ¡»úÉÏÈÝÒ×´íÎóµÄÌØÊâ×Ö·û¡£ Èç¹ûÄúËùÔڵĻ·¾³¶Ô´òÓ¡»úµÄʹÓÃÇé¿ö½øÐмÇÕÊ£¬ ÄÇôÎı¾¹ýÂËÆ÷±ØÐëÒ²¶Ô´òÓ¡µÄÒ³Êý½øÐÐͳ¼Æ£¬ ͨ³£ÊǸù¾Ý´òÓ¡µÄÐÐÊýºÍ´òÓ¡»úÔÚÿҳÉÏÄÜ´òÓ¡µÄÐÐÊý½øÐмÆËãµÃ³ö¡£ Îı¾¹ýÂËÆ÷µÄÆô¶¯ÃüÁîΪ£º
filter-name [-c] -w width -l length -i indent -n login -h host acct-file
͉˕
-c
µ±ÈÎÎñÓà lpr -l
Õâ¸öÃüÁîÌύʱ³öÏÖ
ÕâÀïÈ¡ÄúÔÚ /etc/printcap ÎļþÖÐÖ¸¶¨µÄ pw (Ò³ ¿í) ±êÇ©µÄÖµ£¬ ĬÈÏΪ 132¡£
ÕâÀïÈ¡ÄúµÄ pl (Ò³ ³¤) ±êÇ©µÄÖµ£¬ ĬÈÏΪ 66
ÕâÀïÊÇÀ´×Ô lpr -i
ÃüÁîµÄ×ÜËõ½øÁ¿£¬ ĬÈÏΪ 0
ÕâÀïÊÇÕýÔÚ´òÓ¡ÎļþµÄÓû§Ãû
ÕâÀïÊÇÌá½»´òÓ¡ÈÎÎñµÄÖ÷»úÃû
ÕâÀïÊÇÀ´×Ô af ±äÁ¿ÖÐÖ¸¶¨µÄÓÃÓÚ¼ÇÕʵÄÎļþÃû¡£
ת»»¹ýÂËÆ÷ µÄ¹¦ÄÜÊÇ£¬ ½«Ìض¨¸ñʽµÄÎļþת»»³É´òÓ¡»úÄܹ»Ê¶±ð²¢´òÓ¡µÄ¸ñʽ¡£ ÀýÈ磬 ditroff ¸ñʽµÄÅŰæÊý¾Ý¾ÍÊÇÎÞ·¨Ö±½Ó´òÓ¡µÄ£¬ µ«Äú¿ÉÒÔ°²×°Ò»¸öת»»¹ýÂËÆ÷À´½« ditroff Îļþת»»³ÉÒ»ÖÖ´òÓ¡»ú¿ÉÒÔʶ±ðºÍ´òÓ¡µÄÐÎʽ¡£ Çë²Î¼û ת»»¹ýÂËÆ÷ ÕâÒ»½ÚÀ´Á˽â¸ü¶àϸ½Ú¡£ Èç¹ûÄúÐèÒª¶Ô´òÓ¡½øÐмÇÕÊ£¬ ÄÇôת»»¹ýÂËÆ÷Ò²±ØÐëÍê³É¼ÇÕʹ¤×÷¡£ ת»»¹ýÂÇÆ÷µÄÆô¶¯ÃüÁîΪ£º
filter-name -x pixel-width -y pixel-height -n login -h host acct-file
ÕâÆäÖÐ pixel-width µÄÖµÀ´×Ô px ±êÇ© (ĬÈÏΪ 0)£¬ ¶ø pixel-height µÄÖµÀ´×Ô py ±êÇ© (ĬÈÏΪ 0)¡£
Êä³ö¹ýÂËÆ÷ ½öÔÚûÓÐÎı¾¹ýÂËÆ÷ʱ£¬ »òÕß±¨Í·Ò³±»´ò¿ªÊ±Ê¹Óᣠ¾ÍÎÒÃǵľÑé¶øÑÔ£¬ Êä³ö¹ýÂËÆ÷ÊǺÜÉÙÓõ½µÄ. ÔÚ Êä³ö¹ýÂËÆ÷ Õâ½ÚÖлá½éÉÜËüÃÇ¡£ Æô¶¯Êä³ö¹ýÂËÆ÷µÄÃüÁîÐÐÖ»ÓÐÁ½¸ö²ÎÊý£º
filter-name -w width -l length
ËüÃǵÄ×÷ÓÃÓëÎı¾¹ýÂËÆ÷µÄ -w
ºÍ -l
²ÎÊýÊÇÒ»ÑùµÄ¡£
¡¡¡¡¹ýÂËÆ÷Ò²Ó¦¸ÃÔÚ Í˳ö ʱ¸ø³öÏÂÃæµÄ¼¸ÖÖÍ˳ö״̬:
¹ýÂËÆ÷ÒѾ³É¹¦µÄ´òÓ¡ÁËÎļþ.
¹ýÂËÆ÷´òӡʧ°ÜÁË£¬ µ«Ï£Íû LPD ÊÔ×ÅÔÙ´òÓ¡Ò»´Î¡£ Èç¹û¹ýÂËÆ÷·µ»ØÁËÕâ¸ö״̬£¬ LPD ½«ÖØÐÂÆô¶¯¹ýÂËÆ÷¡£
¹ýÂËÆ÷´òӡʧ°Ü²¢ÇÒ²»Ï£Íû LPD ÖØÊÔ¡£ ÕâÖÖÇé¿öÏ LPD »á·ÅÆúÕâ¸öÎļþ¡£
¡¡¡¡Îı¾¹ýÂËÆ÷Ëæ FreeBSD Ò»Æð·¢²¼£¬ ÎļþÃûΪ /usr/libexec/lpr/lpf£¬ ËüÀûÓÃÒ³¿íºÍÒ³³¤²ÎÊýÀ´¾ö¶¨ºÎʱ·¢ËÍËÍÖ½Ö¸Á ²¢Ìṩλ´òÓ¡¼ÇÕʵķ½·¨¡£ ËüʹÓõǼÃû¡¢ Ö÷»úÃû£¬ ºÍ¼ÇÕÊÎļþ²ÎÊýÀ´Éú³É¼ÇÕʼǼ¡£
¡¡¡¡Èç¹ûÄúÏ빺Âò¹ýÂËÆ÷£¬ ҪעÒâËüÊÇ·ñÊÇÓë LPD ¼æÈÝ¡£ Èç¹û¼æÈݵϰ£¬ ÔòËüÃDZØÐëÖ§³ÖÇ°ÃæÌáµ½µÄÄÇЩ²ÎÊý¡£ Èç¹ûÄú´òËã±àдÆÕͨµÄ¹ýÂËÆ÷³ÌÐò£¬ ÔòͬÑùÐèҪʹ֧֮³ÖÇ°ÃæÄÇЩ²ÎÊýºÍÍ˳ö״̬Âë¡£
¡¡¡¡Èç¹ûÄúÊÇÄúµÄ¼ÆËã»úºÍ PostScript (»òÆäËûÓïÑÔµÄ) ´òÓ¡»úµÄΨһÓû§£¬ ¶øÇÒÄú²»´òËã·¢ËÍ´¿Îı¾µ½´òÓ¡»ú£¬ ²¢Òò´Ë²»´òËã´ÓÓ¦ÓóÌÐò³ÌÐòÖ±½Ó½«´¿Îı¾·¢µ½´òÓ¡»úµÄ»°£¬ ¾ÍÍêÈ«²»ÐèÒªÔÙ¹ØÐÄÕâ½ÚµÄÄÚÈÝÁË¡£
¡¡¡¡µ«ÊÇ£¬ Èç¹û´òÓ¡»úͬʱÐèÒª½ÓÊÕ PostScript ºÍ´¿Îı¾µÄÈÎÎñ£¬ ¾ÍÐèÒª¶Ô´òÓ¡»ú½øÐÐÉèÖÃÁË¡£ ÒªÍê³ÉÕâÏ×÷£¬ ÎÒÃÇÐèÒªÒ»¸öÎı¾¹ýÂËÆ÷À´¼ì²âµ½´ïµÄÈÎÎñÊÇ´¿Îı¾µÄ»¹ÊÇ PostScript ¸ñʽµÄ¡£ ËùÓÐ PostScript µÄÈÎÎñ±ØÐëÒÔ %! (ÆäËû´òÓ¡»úÓïÑÔÇë²Î¼û´òÓ¡»úµÄÎĵµ) ¿ªÍ·¡£ Èç¹ûÈÎÎñµÄÍ·Á½¸ö×Ö·ûÊÇÕâÁ½¸ö£¬ ¾Í´ú±íÕâÊÇ PostScript ¸ñʽµÄ£¬ ²¢ÇÒ¿ÉÒÔÖ±½ÓÂÔ¹ýÈÎÎñÊ£ÓàµÄ²¿·Ö¡£ Èç¹ûÈÎÎñ¿ªÍ·µÄÁ½¸ö×Ö·û²»ÊÇÕâÁ½¸ö£¬ ÄÇô¹ýÂËÆ÷½«°ÑÎı¾×ª»»³É PostScript ²¢´òÓ¡½á¹û¡£
¡¡¡¡ÎÒÃÇÔõÑùÈ¥×ö£¿
¡¡¡¡Èç¹ûÄãÓÐһ̨´®¿Ú´òÓ¡»ú£¬ Ò»¸öºÃ°ì·¨¾ÍÊǰ²×° lprps¡£ lprps ÊÇÒ»¸ö¿ÉÒÔÓë´òÓ¡»ú½øÐÐË«ÏòͨÐÅ PostScript ´òÓ¡»ú¹ýÂËÆ÷¡£ ËüÓôòÓ¡»ú´«À´µÄÏêϸÐÅÏ¢À´¸üдòÓ¡»úµÄ״̬Îļþ£¬ ËùÒÔÓû§ºÍ¹ÜÀíÔ±¿ÉÒÔ׼ȷµÄ¿´µ½´òÓ¡»ú´¦ÔÚʲôÑùµÄ״̬ (±ÈÈç ¡°È±Ä«¡± »òÕß ¡°¿¨Ö½¡±)¡£ µ«¸üÖØÒªµÄÊÇ£¬ Ëü°üº¬ÁËÒ»¸ö½Ð×ö psif µÄ³ÌÐò£¬ Ëü¿ÉÒÔ¼ì²â½ÓÊÕµ½µÄÎļþÊÇ·ñÊÇ´¿Îı¾µÄ£¬ ²¢ÇÒ½«Ê¹Óà textps ÃüÁî ( Ò²ÊÇÓÉ lprps ÌṩµÄ³ÌÐò) ת»»Îı¾µ½ PostScript¡£ È»ºóËü»áÓà lprps ½«ÈÎÎñ·¢Ë͵½´òÓ¡»ú¡£
¡¡¡¡lprps ¿ÉÒÔÔÚ FreeBSD Ports Collection (Ïê¼û The Ports Collection) ÖÐÕÒµ½¡£ Äã¿ÉÒÔ¸ù¾ÝÒ³ÃæµÄ³ß´çÑ¡Ôñ°²×° print/lprps-a4 ºÍ print/lprps-letter¡£ ÔÚ°²×°ÁË lprps Ö®ºó£¬ Ö»ÐèÖ¸¶¨ psif Õâ¸ö³ÌÐòµÄ·¾¶£¬ ÕâÒ²Êǰüº¬ÔÚ lprps ÖеÄÒ»¸ö³ÌÐò¡£ Èç¹ûÄúÒѾÓà ports °²×°ºÃÁË lprps£¬ ½«ÏÂÃæµÄÄÚÈÝÌí¼Óµ½ /etc/printcap ÎļþÖÐ PostScript ´òÓ¡»úµÄ¼Ç¼²¿·ÖÖУº
:if=/usr/local/libexec/psif:
¡¡¡¡Í¬Ê±»¹ÐèÒªÖ¸¶¨ rw ±êÇ©À´¸æËß LPD ʹÓöÁ-дģʽ´ò¿ª´òÓ¡»ú¡£
¡¡¡¡Èç¹ûÄúÓÐһ̨²¢¿ÚµÄ PostScript ´òÓ¡»ú (Òò´Ë²»ÄÜÓë´òÓ¡»ú½øÐÐ lprps ÐèÒªµÄË«ÏòͨÐÅ)£¬ ¿ÉÒÔʹÓÃÏÂÃæÕâ¶Î shell ½Å±¾À´³äµ±Îı¾¹ýÂËÆ÷:
#!/bin/sh # # psif - Print PostScript or plain text on a PostScript printer # Script version; NOT the version that comes with lprps # Installed in /usr/local/libexec/psif # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # PostScript job£¬ print it. # echo "$first_line" && cat && printf "\004" && exit 0 exit 2 else # # Plain text£¬ convert it£¬ then print it. # ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 exit 2 fi
¡¡¡¡ÔÚÉÏÃæµÄ½Å±¾ÖУ¬ textps ÃüÁîÊÇÒ»¸ö¶ÀÁ¢°²×°µÄ³ÌÐòÓÃÀ´½«´¿Îı¾×ª»»³É PostScript¡£ Äú¿ÉÒÔʹÓÃÈκÎÄúϲ»¶µÄÎı¾µ½ PostScript ת»»³ÌÐò¡£ FreeBSD Ports Collection (Ïê¼û Ports Collection) Öаüº¬ÁËÒ»¸ö¹¦Äܷdz£ÍêÕûµÄÎı¾µ½ PostScript µÄת»»³ÌÐò£¬ Ëü½Ð×ö a2ps¡£
¡¡¡¡PostScript ÊǸßÖÊÁ¿ÅŰæºÍ´òÓ¡ ÊÂʵÉ쵀 ±ê×¼¡£ ¶ø PostScript Ò²ÊÇÒ»¸ö °º¹ó µÄ±ê×¼¡£ ÐҺ㬠Aladdin ¿ª·¢ÁËÒ»¸öºÍ PostScript ÀàËÆµÄ½Ð×ö Ghostscript µÄ³ÌÐò¿ÉÒÔÓÃÔÚ FreeBSD ÉÏ¡£ Ghostscript ¿ÉÒÔ¶ÁÈ¡´ó¶àÊý PostScript µÄÎļþ²¢´¦ÀíÆäÖеÄÒ³Ãæ½»¸ø¶àÖÖÉ豸£¬°üÀ¨Ðí¶àÆ·ÅÆµÄ·Ç PostScript ´òÓ¡»ú¡£ ͨ¹ý°²×° Ghostscript ²¢Ê¹ÓÃÒ»¸öÌØÊâµÄÎı¾¹ýÂËÆ÷£¬Ôò¿ÉÒÔʹһ̨·Ç PostScript ´òÓ¡»úÓÃÆðÀ´¾ÍÏñÕæµÄ PostScript ´òÓ¡»úÒ»Ñù¡£
¡¡¡¡Ghostscript ±»ÊÕ¼ÔÚ FreeBSD Ports Collection ÖУ¬ÓÐÐí¶à¿ÉÓõİ汾£¬ ±È½Ï³£Óõİ汾ÊÇ print/ghostscript-gpl¡£
¡¡¡¡ÒªÄ£Äâ PostScript£¬ Îı¾¹ýÂËÆ÷Òª¼ì²âÊÇ·ñÒª´òÓ¡Ò»¸ö PostScript Îļþ¡£ Èç¹û²»ÊÇ£¬ ÄÇô¹ýÂËÆ÷½«Ö±½Ó½«Îļþ·¢Ë͵½´òÓ¡»ú£» ·ñÔò£¬ Ëü»áÓà Ghostscript ÏȽ«Îļþת»»³É´òÓ¡»ú¿ÉÒÔÀí½âµÄ¸ñʽ¡£
¡¡¡¡ÕâÀïÓÐÒ»¸öÀý×Ó: ÏÂÃæµÄ½Å±¾ÊÇÒ»¸öÕë¶Ô Hewlett Packard DeskJet 500
´òÓ¡»úµÄÎı¾¹ýÂËÆ÷¡£ ¶ÔÓÚÆäËû´òÓ¡»ú£¬ Ìæ»» gs (Ghostscript) ÃüÁîÖÐµÄ -sDEVICE
²ÎÊý¾Í¿ÉÒÔÁË¡£ (ÊäÈë gs -h
À´»ñµÃµ±Ç°°²×°µÄ Ghostscript ËùÖ§³ÖµÄÉ豸ÁÐ±í¡£)
#!/bin/sh # # ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500 # Installed in /usr/local/libexec/ifhp # # Treat LF as CR+LF (to avoid the "staircase effect" on HP/PCL # printers): # printf "\033&k2G" || exit 2 # # Read first two characters of the file # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # It is PostScript; use Ghostscript to scan-convert and print it. # /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ -sOutputFile=- - && exit 0 else # # Plain text or HP/PCL£¬ so just print it directly; print a form feed # at the end to eject the last page. # echo "$first_line" && cat && printf "\033&l0H" && exit 0 fi exit 2
¡¡¡¡×îºó£¬ ÐèÒª¸æÖª LPD ËùʹÓõĹýÂËÆ÷£¬ ͨ¹ý if ±êÇ©Íê³É:
:if=/usr/local/libexec/ifhp:
¡¡¡¡Äú¿ÉÒÔÊäÈë lpr plain.text ºÍ lpr whatever.ps£¬ ËüÃǶ¼Ó¦¸Ã¿ÉÒԳɹ¦´òÓ¡¡£
¡¡¡¡ÔÚÍê³ÉÁË ´òÓ¡»ú¼òµ¥ÉèÖà Õâ½ÚÖÐËùÃèÊöµÄÄÚÈÝÖ®ºó£¬ Í·Ò»¼þÊ ¿ÖžÍÊÇΪÄãϲ°®µÄ¸ñʽµÄÎļþ°²×°×ª»»¹ýÂËÆ÷ÁË (³ýÁË´¿ ASCII Îı¾)¡£
¡¡¡¡×ª»»¹ýÂËÆ÷ʹ´òÓ¡ÖÚ¶à¸ñʽµÄÎļþ±äµÃºÜÈÝÒס£ ±ÈÈ磬 ¼ÙÉèÎÒÃÇ´óÁ¿Ê¹Óà TeX ÅŰæÏµÍ³£¬ ²¢ÇÒÓÐһ̨ PostScript ´òÓ¡»ú¡£ ÿ´Î´Ó TeX Éú³ÉÒ»¸ö DVI Îļþ£¬ ÎÒÃǶ¼²»ÄÜÖ±½Ó´òÓ¡ËüÖ±µ½ÎÒÃǽ« DVI Îļþת»»³É PostScript¡£ ת»»µÄÃüÁîÓ¦¸ÃÊÇÏÂÃæµÄÑù×Ó:
% dvips seaweed-analysis.dvi % lpr seaweed-analysis.ps
¡¡¡¡Í¨¹ý°²×° DVI ÎļþµÄת»»¹ýÂËÆ÷£¬ ÎÒÃÇ¿ÉÒÔÌø¹ýÿ´ÎÊÖ¶¯×ª»»ÕâÒ»²½£¬ ¶øÈà LPD À´Íê³ÉÕâ¸ö²½Öè¡£ ÏÖÔÚ£¬ ÿ´ÎÒª´òÓ¡ DVI Îļþ£¬ ÎÒÃÇÖ»ÐèÒªÒ»²½¾Í¿ÉÒÔ´òÓ¡Ëü£º
% lpr -d
seaweed-analysis.dvi
¡¡¡¡ÎÒÃÇÒª LPD ת»» DVI ÎļþÊÇͨ¹ýÖ¸¶¨ -d
Ñ¡ÏîÍê³ÉµÄ¡£ ¸ñʽºÍת»» Ñ¡Ïî
ÕâÒ»½ÚÁгöÁËËùÓеÄת»»Ñ¡Ïî¡£
¡¡¡¡¶ÔÓÚÿÖÖÏëÒª´òÓ¡»úÖ§³ÖµÄת»»£¬ Ê×ÏÈÒª°²×° ת»»¹ýÂËÆ÷ È»ºóÔÚ /etc/printcap ÖÐÖ¸¶¨ËüµÄ·¾¶¡£ ÔÚ¼òµ¥´òÓ¡ÉèÖÃÖУ¬ ת»»¹ýÂËÆ÷ÀàËÆÓÚÎı¾¹ýÂËÆ÷ (Ïê¼û °²×°Îı¾¹ýÂËÆ÷ ) ²»Í¬µÄÊÇËü²»ÊÇÓÃÀ´´òÓ¡´¿Îı¾£¬ ¶øÊǽ«Ò»¸öÎļþת»»³É´òÓ¡»úÄܹ»Àí½âµÄ¸ñʽ¡£
¡¡¡¡ÄúÓ¦¸Ã°²×°ÄúÏ£ÍûʹÓõÄת»»¹ýÂËÆ÷¡£ Èç¹ûÒª´òÓ¡ºÜ¶à DVI Êý¾Ý£¬ ¾ÍÐèÒª DVI ת»»¹ýÂËÆ÷£» Èç¹ûÓдóÁ¿µÄ troff Êý¾Ý£¬ ¾ÍÓ¦¸Ã°²×° troff ¹ýÂËÆ÷¡£
¡¡¡¡ÏÂÃæµÄ±í¸ñ×ܽáÁË¿ÉÒÔÓë LPDÅäºÏ ¹¤×÷µÄ¹ýÂËÆ÷£¬ ÒÔ¼°ËüÃÇÔÚ /etc/printcapÎļþÖеıäÁ¿Ãû£¬ »¹ÓÐÈçºÎÔÚ lprÃüÁîÖе÷ÓÃËüÃÇ£º
ÎļþÀàÐÍ | ÔÚ/etc/printcapÎļþÖеıäÁ¿Ãû | ÔÚlprÃüÁîÖе÷ÓÃʹÓõIJÎÊý |
---|---|---|
cifplot | cf | -c |
DVI | df | -d |
plot | gf | -g |
ditroff | nf | -n |
FORTRAN text | rf | -f |
troff | tf | -f |
raster | vf | -v |
plain text | if | none, -p , or -l |
¡¡¡¡ÔÚÀý×ÓÖУ¬ lpr -d
¾ÍÊÇÖ¸
´òÓ¡»úÐèÒªÔÚ/etc/printcapÎļþÖÐ df±äÁ¿ËùÖ¸µÄ¹ýÂËÆ÷¡£
¡¡¡¡²»¹Ü±ðÈËÔõô˵£¬ Ïñ FORTRAN µÄÎı¾ ºÍ plot ÕâЩ¸ñʽÒѾ»ù±¾²»ÓÃÁË¡£
ËùÒÔÔÚÄúµÄ»úÆ÷ÉÏ£¬ ¾Í¿ÉÒÔ°²×°ÆäËûµÄ¹ýÂËÆ÷À´Ìæ»»ÕâЩ²ÎÊýÔÓеÄÒâÒå¡£ ÀýÈ磬
¼ÙÉèÏëÒªÄÜÖ±½Ó´òÓ¡ Printerleaf Îļþ (ÓÉ Interleaf desktop publishing ³ÌÐòÉú³É)£¬
¶øÇÒ²»´òËã´òÓ¡ plot Îļþ£¬ ¾Í¿ÉÒÔ°²×°Ò»¸ö Printerleaf ת»»¹ýÂËÆ÷²¢ÇÒÓà gf ±äÁ¿Ö¸¶¨Ëü¡£ È»ºó¾Í¿ÉÒÔ¸æËßÄúµÄÓû§Ê¹Óà lpr
-g
¾Í¿ÉÒÔ ¡°´òÓ¡ Printerleaf Îļþ¡£¡±
¡¡¡¡ÒÔΪ°²×°µÄת»»¹ýÂËÆ÷²»ÊÇ FreeBSD »ù±¾ÏµÍ³µÄÒ»²¿·Ö£¬ ËùÒÔËüÃÇ¿ÉÄÜÊÇÔÚ /usr/local Ŀ¼Ï¡£ ͨ³£Ä¿Â¼ /usr/local/libexec ÊDZ£´æËüÃǵĵط½£¬ ÒòΪËüÃÇͨ³£ÊÇͨ¹ý LPD ÔËÐеģ» ÆÕͨÓû§Ó¦¸Ã²¢²»ÐèÒªÖ±½ÓÔËÐÐËüÃÇ¡£
¡¡¡¡ÒªÆôÓÃÒ»¸öת»»¹ýÂËÆ÷£¬ Ö»ÐèÒªÔÚ /etc/printcap ÎļþÖÐΪĿ±ê´òÓ¡»úÖкÏÊʵıäÁ¿¸³ÉϹýÂËÆ÷ËùÔڵķ¾¶¡£
¡¡¡¡ÔÚ½ÓÏÂÀ´µÄÀý×Óµ±ÖУ¬ ÎÒÃǽ«Îª һ̨½Ð×ö bamboo µÄ´òÓ¡»úÌí¼ÓÒ»¸öת»»¹ýÂËÆ÷¡£ ÏÂÃæÊÇÕâ¸öÀý× /etc/printcap Îļþ£¬ ÆäÖÐʹÓÃбäÁ¿ df À´Îª´òÓ¡»ú bamboo ÉèÖÃת»»¹ýÂËÆ÷£º
# # /etc/printcap for host rose - added df filter for bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
¡¡¡¡ÕâÀïµÄ DVI ¹ýÂËÆ÷ÊÇÒ»¶Î shell ½Å±¾£¬ Ãû×Ö½Ð×ö /usr/local/libexec/psdf¡£ ÏÂÃæÊÇËüµÄ´úÂ룺
#!/bin/sh # # psdf - DVI to PostScript printer filter # Installed in /usr/local/libexec/psdf # # Invoked by lpd when user runs lpr -d # exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
¡¡¡¡Õâ¶Î½Å±¾ÒÔ¹ýÂËÆ÷ģʽÔËÐÐ dvips (²ÎÊý -f
) ²¢´Ó±ê×¼ÊäÈë¶ÁȡҪ´òÓ¡µÄÈÎÎñ¡£ È»ºóÔËÐÐ PostScript Îı¾¹ýÂËÆ÷ lprps (Ïê¼û ÔÚ PostScript ´òÓ¡»úÉÏ´òÓ¡´¿Îı¾ÈÎÎñ ÕâÒ»½Ú)£¬ ²¢ÇÒ´ø×Å LPD ´«¸ø½Å±¾µÄÈ«²¿²ÎÊý¡£ lprps
¹¤¾ß½«ÀûÓÃÕâЩ²ÎÊýÀ´Îª´òÓ¡½øÐмÇÕÊ¡£
¡¡¡¡ÒòΪ°²×°×ª»»¹ýÂËÆ÷µÄ²½Öè²¢²»Êǹ̶¨µÄ£¬ ËùÒÔÕâ½Ú½éÉÜÁËһЩ¿ÉÐеÄÀý×Ó¡£ ÔÚÒÔºóµÄ°²×°ÅäÖùý³ÌÖпÉÒÔÒÔÕâЩÀý×ÓΪ²Î¿¼¡£ ÉõÖÁÈç¹ûºÏÊʵϰ£¬ ¿ÉÒÔÍêÈ«ÕÕ°á¹ýÈ¥¡£
¡¡¡¡Õâ¶ÎÀý×ÓÖеĽű¾ÊÇÒ»¸ö Hewlett Packard LaserJet III-Si ´òÓ¡»úµÄ¹âÕ¤¸ñʽÊý¾Ý (ʵ¼ÊÉÏÒ²¾ÍÊÇ GIF Îļþ)£º
#!/bin/sh # # hpvf - Convert GIF files into HP/PCL, then print # Installed in /usr/local/libexec/hpvf PATH=/usr/X11R6/bin:$PATH; export PATH giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ && exit 0 \ || exit 2
¡¡¡¡ËüµÄ¹¤×÷ÔÀí¾ÍÊǽ« GIF Îļþת»»³É portable anymap£¬ ÔÙת»»³É portable graymap£¬ È»ºóÔÙת»»³É portable bitmap£¬ ×îºóÔÙת»»³É LaserJet/PCL- ¼æÈݵÄÊý¾Ý¡£
¡¡¡¡ÏÂÃæÊÇΪ´òÓ¡»úÅäÖÃÉÏÉÏÊö¹ýÂËÆ÷µÄ /etc/printcap Îļþ£º
# # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:
¡¡¡¡ÏÂÃæµÄ½Å±¾ÊÇÒ»¸öÔÚÃû½Ð bamboo µÄÕą̂ PostScript ´òÓ¡»úÉÏ´òÓ¡Óà groff ÅŰæÈí¼þÉú³ÉµÄ troff Êý¾ÝµÄ´òÓ¡¹ýÂËÆ÷£º
#!/bin/sh # # pstf - Convert groff's troff data into PS, then print. # Installed in /usr/local/libexec/pstf # exec grops | /usr/local/libexec/lprps "$@"
¡¡¡¡ÉÏÃæÕâ¶Î½Å±¾»¹ÊÇÓà lprps À´Óë´òÓ¡»ú½øÐÐͨѶ¡£ Èç¹û´òÓ¡»úÊǽÓÔÚ²¢¿ÚÉϵģ¬ ÄÇô¾ÍÓ¦¸ÃʹÓÃÏÂÃæµÄÕâ¶Î½Å±¾£º
#!/bin/sh # # pstf - Convert groff's troff data into PS, then print. # Installed in /usr/local/libexec/pstf # exec grops
¡¡¡¡ÕâÀïÊÇÎÒÃÇÒªÆôÓùýÂËÆ÷ÐèÒªÔÚ /etc/printcap ÀïÔö¼ÓµÄÄÚÈÝ£º
:tf=/usr/local/libexec/pstf:
¡¡¡¡ÏÂÃæµÄÀý×ÓÒ²Ðí»áÈÃÐí¶à FORTRAN ÀÏÊÖÐßÀ¢¡£ ËüÊÇÒ»¸ö FORTRAN- Îı¾ µÄ¹ýÂËÆ÷£¬ ÄÜÔÚÈÎÒâһ̨ ¿ÉÒÔ´òÓ¡´¿Îı¾µÄ´òÓ¡»úÉÏʹÓᣠÎÒÃǽ«Îª´òÓ¡»ú teak °²×°Õâ¸ö¹ýÂËÆ÷£º
#!/bin/sh # # hprf - FORTRAN text filter for LaserJet 3si: # Installed in /usr/local/libexec/hprf # printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0 exit 2
¡¡¡¡È»ºóÎÒÃÇÒªÔÚ /etc/printcap ÖÐΪ´òÓ¡»úÄܹ» teak ÆôÓÃÕâ¸ö¹ýÂËÆ÷Ìí¼ÓÏÂÃæµÄÄÚÈÝ£º
:rf=/usr/local/libexec/hprf:
¡¡¡¡×îºó£¬ ÔÙ¸ø³öÒ»¸öÓÐЩ¸´ÔÓµÄÀý×Ó¡£ ÎÒÃǽ«¸øÒÔǰ½éÉܹýµÄ teak Õą̂¼¤¹â´òÓ¡»úÌí¼ÓÒ»¸ö DVI ¹ýÂËÆ÷¡£ Ê×ÏÈ£¬ ×îÈÝÒ׵IJ¿·Ö£º ¸üР/etc/printcap ¼ÓÈë DVI ¹ýÂËÆ÷µÄ·¾¶£º
:df=/usr/local/libexec/hpdf:
¡¡¡¡ÏÖÔÚ£¬ ¸ÃÀ§ÄѵIJ¿·ÖÁË£º ±àд¹ýÂËÆ÷¡£ ΪÁËʵÏÖ¹ýÂËÆ÷£¬ ÎÒÃÇÐèÒªÒ»¸ö DVI-µ½-LaserJet/PCL ת»»³ÌÐò¡£ FreeBSD Ports Collection (Ïê¼û Ports Collection ÕâÒ»½Ú) ÖÐÓÐÒ»¸ö£º print/dvi2xx¡£ °²×°Õâ¸ö port ¾Í»áµÃµ½ÎÒÃÇÐèÒªµÄ³ÌÐò£¬ dvilj2p £¬ Ëü¿ÉÒÔ½« DVI Êý¾Ýת»»³É LaserJet IIp£¬ LaserJet III£¬ ºÍ LaserJet 2000 ¼æÈݵÄÊý¾Ý¡£
¡¡¡¡dvilj2p ¹¤¾ßʹµÃ¹ýÂËÆ÷ hpdf ±äµÃÊ®·Ö¸´ÔÓ£¬ ÒòΪ dvilj2p ²»ÄܶÁÈ¡±ê×¼ÊäÈë¡£ ËüÐèÒª´ÓÎļþÖжÁÈ¡Êý¾Ý¡£ ¸üÔã¸âµÄÊÇ£¬ Õâ¸öÎļþµÄÃû×Ö±ØÐëÒÔ .dvi ½áβ¡£ ËùÒÔʹÓà /dev/fd/0 ×÷Ϊ±ê×¼ÊäÈëÊÇÓÐÎÊÌâµÄ¡£ ÎÒÃÇ¿ÉÒÔͨ¹ýÁ¬½Ó (·ûºÅÁ¬½Ó) À´½â¾öÕâ¸öÎÊÌâ¡£ Á¬½ÓÒ»¸öÁÙʱµÄÎļþÃû (Ò»¸öÒÔ .dvi ½áβµÄÎļþÃû) µ½ /dev/fd/0£¬ ´Ó¶øÇ¿ÖÆ dvilj2p ´Ó±ê×¼ÊäÈë¶ÁÈ¡¡£
¡¡¡¡ÏÖÔÚÓÃæ¶øÀ´µÄÊÇÁíÍâÒ»¸öÎÊÌ⣬ ÎÒÃDz»ÄÜʹÓà /tmp ´æ·ÅÁÙʱÁ¬½Ó¡£ ·ûºÅÁ¬½ÓÊDZ»Óû§ºÍ×é bin ÓµÓеġ£ ¶ø¹ýÂËÆ÷ÔòÊÇÒÔ daemon Óû§ÔËÐеġ£ ²¢ÇÒ /tmp Ŀ¼ÉèÖÃÁË sticky λ¡£ ËùÒÔ¹ýÂËÆ÷Ö»Äܽ¨Á¢·ûºÅÁ¬½Ó£¬ µ«Ëü²»ÄÜÔÚÓÃÍêÖ®ºóÇå³ýµôÕâЩÁ¬½Ó¡£ ÒòΪËüÃÇÊôÓÚ²»Í¬µÄÓû§¡£
¡¡¡¡ËùÒÔ¹ýÂËÆ÷½«ÔÚµ±Ç°¹¤×÷Ŀ¼Ï½¨Á¢·ûºÅÁ¬½Ó£¬ ¼´ºǫ́´òÓ¡¶ÓÁÐĿ¼ (ÓñäÁ¿ sd ÔÚ /etc/printcap ÖÐÖ¸¶¨)¡£ ÕâÊÇÒ»¸ö·Ç³£ºÃµÄÈùýÂËÆ÷Íê³ÉËü¹¤×÷µÄµØ·½£¬ ÌØ±ð»¹ÊÇÒòΪ (ÓÐʱ) Õâ¸öĿ¼±ÈÆð /tmp À´Óиü¶àµÄ¿ÉÓôÅÅ̿ռ䡣
¡¡¡¡×îºó£¬ ¸ø³ö¹ýÂËÆ÷µÄ´úÂ룺
#!/bin/sh # # hpdf - Print DVI data on HP/PCL printer # Installed in /usr/local/libexec/hpdf PATH=/usr/local/bin:$PATH; export PATH # # Define a function to clean up our temporary files. These exist # in the current directory, which will be the spooling directory # for the printer. # cleanup() { rm -f hpdf$$.dvi } # # Define a function to handle fatal errors: print the given message # and exit 2. Exiting with 2 tells LPD to do not try to reprint the # job. # fatal() { echo "$@" 1>&2 cleanup exit 2 } # # If user removes the job, LPD will send SIGINT, so trap SIGINT # (and a few other signals) to clean up after ourselves. # trap cleanup 1 2 15 # # Make sure we are not colliding with any existing files. # cleanup # # Link the DVI input file to standard input (the file to print). # ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" # # Make LF = CR+LF # printf "\033&k2G" || fatal "Cannot initialize printer" # # Convert and print. Return value from dvilj2p does not seem to be # reliable, so we ignore it. # dvilj2p -M1 -q -e- dfhp$$.dvi # # Clean up and exit # cleanup exit 0
¡¡¡¡ÒÔÉÏÕâЩת»»¹ýÂËÆ÷»ù±¾ÉϽ¨³ÉÁËÄúµÄ´òÓ¡»·¾³£¬ µ«Ò²Óв»×ã¾ÍÊDZØÐëÓÉÓû§À´Ö¸¶¨ (ÔÚ lpr(1) ÃüÁîÐÐÖÐ) ҪʹÓÃÄÄÒ»¸ö¹ýÂËÆ÷¡£ Èç¹ûÄúµÄÓû§²»ÊǶԼÆËã»úºÜÔÚÐУ¬ ÄÇôѡÓùýÂËÆ÷½«ÊÇÒ»¼þÂé·³µÄÊÂÇé¡£ ¸üÔãµÄÊÇ£¬ µ±¹ýÂËÆ÷É趨µÄ²»Õýȷʱ£¬ ¹ýÂËÆ÷±»ÓÃÔÚÁ˲»Ëü¶ÔÓ¦ÀàÐ͵ÄÎļþÉÏ£¬ ´òÓ¡»úÒ²Ðí»áÅç³öÉϰÙÕÅÖ½¡£
¡¡¡¡±ÈÖ»°²×°×ª»»¹ýÂËÆ÷¸üºÃµÄ·½·¨£¬ ¾ÍÊÇÈÃÎı¾¹ýÂËÆ÷ (ÒòΪËüÊÇĬÈϵĹýÂËÆ÷) À´¼ì²âÒª´òÓ¡ÎļþµÄÀàÐÍ£¬ È»ºó×Ô¶¯ÔËÐÐÕýÈ·µÄת»»¹ýÂËÆ÷¡£ Ïñ file ÕâÑùµÄ¹¤¾ß¿ÉÒÔ¸øÎÒÃÇÒ»¶¨µÄ°ïÖú¡£ µ±È»£¬ 񻂿·Ö¿ª ÓÐЩ ÎļþµÄÀàÐÍ»¹ÊÇÓÐÀ§ÄÑµÄ ©¤©¤ µ«ÊÇ£¬ µ±È»£¬ Äú¿ÉÒÔ½öΪËüÃÇÌṩת»»¹ýÂËÆ÷¡£
¡¡¡¡FreeBSD µÄ Ports Ì×¼þÌṩÁËÒ»¸ö¿ÉÒÔ×Ô¶¯½øÐÐת»»µÄÎı¾¹ýÂËÆ÷£¬ Ãû×Ö½Ð×ö apsfilter (print/apsfilter)¡£ Ëü¿ÉÒÔ¼ì²â´¿Îı¾¡¢ PostScript¡¢ DVI ÒÔ¼°¼¸ºõÈκθñʽµÄÎļþ£¬ ²¢ÔÚÖ´ÐÐÏàÓ¦µÄת»»Ö®ºóÍê³É´òÓ¡¹¤×÷¡£
¡¡¡¡LPD ºǫ́´òӡϵͳ»¹Ö§³ÖÒ»ÖÖÎÒÃÇ»¹Ã»ÓÐÌÖÂÛ¹ýµÄ¹ýÂËÆ÷£º Êä³ö¹ýÂËÆ÷¡£ Êä³ö¹ýÂËÆ÷Ö»ÊÇÓÃÀ´´òÓ¡´¿Îı¾µÄ£¬ ÀàËÆÓÚÎı¾¹ýÂËÆ÷£¬ µ«¼ò»¯ÁËÐí¶àµØ·½¡£ Èç¹ûÄúÕýÔÚʹÓÃÊä³ö¹ýÂËÆ÷¶ø²»ÊÇÎı¾¹ýÂËÆ÷£¬ ÄÇô£º
LPD ΪÕû¸öÈÎÎñÆô¶¯Ò»¸öÊä³ö¹ýÂËÆ÷£¬ ¶ø²»ÊÇΪÈÎÎñÖеÄÿ¸öÎļþ¶¼Æô¶¯Ò»´Î¡£
LPD ²»»áÌṩÈÎÎñÖÐÎļþ¿ªÊ¼ºÍ½áÊøµÄÐÅÏ¢¸øÊä³ö¹ýÂËÆ÷¡£
LPD ²»»áÌṩÓû§Ãû»òÕßÖ÷»úÃû¸ø¹ýÂËÆ÷£¬ ËùÒÔËüÊÇÎÞ·¨×ö´òÓ¡¼ÇÕʵġ£ ÊÂʵÉÏËüÖ»ÓÐÁ½¸ö²ÎÊý£º
¹ýÂËÆ÷-Ãû×Ö -w¿í¶È -l³¤¶È
¿í¶È À´×ÔÓÚ pw ±äÁ¿£¬ ¶ø length À´×ÔÓÚ pl ±äÁ¿£¬ ÕâЩֵ¶¼ÊÇʵ¼ÊÎÊÌâÖиø´òÓ¡»úÉèÖõġ£
¡¡¡¡²»ÒªÈÃÊä³ö¹ýÂËÆ÷µÄ¼ò»¯Ëùµ¢Îó¡£ Èç¹ûÏëÒªÊä³ö¹ýÂËÆ÷Íê³ÉÈÃÈÎÎñÖеÄÿ¸öÎļþ¶¼ÖØÐ¿ªÊ¼Ò»Ò³´òÓ¡ÊÇ ²»¿ÉÄÜ µÄ¡£ ÇëʹÓÃÎı¾¹ýÂËÆ÷ (Ò²½ÐÊäÈë¹ýÂËÆ÷)£» Ïê¼û °²×°Îı¾¹ýÂËÆ÷¡£ ´ËÍ⣬ ʵ¼ÊÉÏ£¬ Êä³ö¹ýÂËÆ÷ ¸ü¸´ÔÓ £¬ ËüÒª¼ì²é·¢¸øËüµÄ×Ö½ÚÁ÷ÖÐÊÇ·ñÓÐÌØÊâµÄ±êÖ¾×Ö·û£¬ ²¢ÇÒ¸ø×Ô¼º·¢ËÍÐźÅÀ´´úÌæ LPD µÄ¡£
¡¡¡¡¿ÉÊÇ£¬ Èç¹û´òËãÒª±¨Í·Ò³»òÕßÐèÒª·¢ËÍ¿ØÖÆ×Ö·û»òÕ߯äËûµÄ³õʼ»¯×Ö·û´®À´Íê³É´òÓ¡±¨Í·Ò³£¬ ÄÇôÊä³ö¹ýÂËÆ÷ÔòÊÇ ±ØÐèµÄ¡£ (µ«ÊÇËüÒ²ÊÇ ÎÞÓÃµÄ Èç¹û´òËã¶Ô´òÓ¡µÄÓû§¼Æ·Ñ£¬ ÒòΪ LPD ²»»á¸øÊä³ö¹ýÂËÆ÷ÈκÎÓû§»òÕßÖ÷»úµÄÐÅÏ¢¡£)
¡¡¡¡ÔÚһ̨µ¥¸öµÄ´òÓ¡»úÉÏ£¬ LPD ͬʱÔÊÐíÊä³ö¹ýÂËÆ÷¡¢ Îı¾¹ýÂËÆ÷ºÍÆäËûµÄ¹ýÂËÆ÷¡£ ÔÚijЩÇé¿öÏ£¬ LPD ½«½ö»áÆô¶¯Êä³ö¹ýÂËÆ÷À´´òÓ¡±¨Í·Ò³ (Ïê¼û ±¨Í·Ò³)¡£ È»ºó LPD »áÒªÇóÊä³ö¹ýÂËÆ÷ ×Ô¼ºÍ£Ö¹ÔËÐÐ £¬ Ëü·¢Ë͸ø¹ýÂËÆ÷Á½¸ö×Ö½Ú£º ASCII 031¸ú×ÅÒ»¸ö ASCII 001¡£ µ±Êä³ö¹ýÂËÆ÷¿´¼ûÕâÁ½¸ö×Ö½Ú (031, 001)£¬ ËüÓ¦¸Ãͨ¹ý·¢ËÍ SIGSTOP ÐźÅÀ´Í£Ö¹×Ô¼ºµÄÔËÐС£ µ± LPD ÒѾÔËÐкÃÁËÆäËûµÄ¹ýÂËÆ÷£¬ Ëü»áͨ¹ý¸øÊä³ö¹ýÂËÆ÷·¢ËÍ SIGCONT ÐźÅÀ´ÈÃÊä³ö¹ýÂËÆ÷ÖØÐÂÔËÐС£
¡¡¡¡Èç¹û½öÓÐÒ»¸öÊä³ö¹ýÂËÆ÷¶ø ûÓÐ Îı¾¹ýÂËÆ÷£¬ ²¢ÇÒ LPD ÕýÔÚ´¦ÀíÒ»¸ö´¿Îı¾ÈÎÎñ£¬ LPD »áʹÓÃÊä³ö¹ýÂËÆ÷À´Íê³ÉÕâ¸öÈÎÎñ¡£ ÏñÒÔǰÔËÐÐÒ»Ñù£¬ Êä³ö¹ýÂËÆ÷»á°´Ë³Ðò´òÓ¡ÈÎÎñÖеÄÎļþ£¬ ¶ø²»»á²åÈëËÍÖ½»òÆäËû½øÖ½µÄÃüÁ µ«ÕâÒ²Ðí²¢ ²»ÊÇ ÄúÏëÒªµÄ½á¹û¡£ ÔÚ´ó¶àÊýÇé¿öÏ£¬ Äú»¹ÊÇÐèÒªÒ»¸öÎı¾¹ýÂËÆ÷¡£
¡¡¡¡lpf Õâ¸öÎÒÃÇÇ°Ãæ½éÉܹýµÄÎı¾¹ýÂËÆ÷³ÌÐò£¬ Ò²¿ÉÒÔÓÃÀ´×öÊä³ö¹ýÂËÆ÷¡£ Èç¹ûÐèҪʹÓÿìËÙÇÒ»ìÂÒµÄÊä³ö¹ýÂËÆ÷£¬ µ«ÓÖ²»Ïëд×Ö½Ú¼ì²âºÍÐźŷ¢ËÍ´úÂ룬 ÄÇôÊÔÊÔ lpf¡£ lpf Ò²¿ÉÒÔ°üº¬ÔÚÒ»¸ö shell ½Å±¾ÖÐÀ´´¦ÀíÈκδòÓ¡»ú¿ÉÄÜÐèÒªµÄ³õʼ»¯´úÂë¡£
¡¡¡¡/usr/libexec/lpr/lpf Õâ¸ö³ÌÐò°üº¬ÔÚ FreeBSD
µÄ¶þ½øÖƳÌÐòÖУ¬ ËüÊÇÒ»¸öÎı¾¹ýÂËÆ÷ (ÊäÈë¹ýÂËÆ÷)¡£ Ëü¿ÉÒÔËõÅÅÊä³ö (Óà lpr -i
ÃüÁîÌá½»µÄÈÎÎñ)£¬
¿ÉÒÔ´òÓ¡¿ØÖÆ×Ö·û½ûÖ¹¶ÏÒ³Óà lpr -l
Ìá½»µÄÈÎÎñ)£¬ ¿ÉÒÔµ÷ÕûÈÎÎñÖÐÍ˸ñºÍÖÆ±í·û´òÓ¡µÄλÖ㬠»¹¿ÉÒÔ¶Ô´òÓ¡½øÐмÇÕÊ¡£
ËüͬÑù¿ÉÒÔÏñÊä³ö¹ýÂËÆ÷Ò»Ñù¹¤×÷¡£
¡¡¡¡lpf ÊÊÓÃÓںܶà´òÓ¡»·¾³¡£ ¾¡¹ÜËü±¾ÉíûÓÐÏò´òÓ¡»ú·¢Ëͳõʼ»¯´úÂëµÄ¹¦ÄÜ£¬ µ«Ð´Ò»¸ö shell ½Å±¾À´Íê³ÉËùÐèµÄ³õʼ»¯²¢Ö´ÐÐ lpf ÊǺÜÈÝÒ׵ġ£
¡¡¡¡ÎªÁËÈà lpf ¿ÉÒÔÕýÈ·µÄ½øÐдòÓ¡¼ÇÕÊ£¬ ÄÇôÐèÒª /etc/printcap ÖÐµÄ pw ºÍ pl ±äÁ¿¶¼ÌîÈëÕýÈ·µÄÖµ¡£ ËüÓÃÕâЩֵÀ´²â¶¨Ò»Ò³ÄÜ´òÓ¡¶àÉÙÎı¾£¬ ²¢¼ÆËã³öÈÎÎñÓжàÉÙÒ³¡£ ÏëµÃµ½¸ü¶à¹ØÓÚ´òÓ¡¼ÇÕʵÄÐÅÏ¢£¬ Çë²Î¼û ¶Ô´òÓ¡»úʹÓýøÐмÇÕÊ¡£
¡¡¡¡Èç¹ûÄúÓÐ ºÜ¶à Óû§£¬ ËûÃÇÕýÔÚʹÓø÷ʽ¸÷ÑùµÄ´òÓ¡»ú£¬ ÄÇôÄú»òÐíÒª¿¼ÂÇÒ»Ï塄 ±¨Í·Ò³ µ±×÷Î޿ɱÜÃâÖ®ÔÖ»öÁË¡£
¡¡¡¡±¨Í·Ò³£¬ Ò²½Ð banner »òÕß burst Ò³£¬ ¿ÉÒÔÓÃÀ´±æ±ð´òÓ¡³öµÄÎļþÊÇË´òÓ¡µÄ¡£ ËüÃÇͨ³£ÓôóºÅµÄ´ÖÌå×Öĸ´òÓ¡³öÀ´£¬ Ò²¿ÉÄÜÓÃ×°ÊÎÏßÎ§ÈÆËÄÖÜ£¬ ËùÒÔÔÚÒ»¶Ñ´òÓ¡³öµÄÎļþÖУ¬ Í»³öµÄÏÔʾÁËÕâ¸öÎļþÊôÓÚÄĸöÓû§µÄÄĸöÈÎÎñ¡£ Õâ¿ÉÒÔÈÃÓû§¿ìËÙµÄÕÒµ½ËûÃǵÄÈÎÎñ¡£ ¶ø±¨Í·Ò³Ò»¸öÃ÷ÏÔµÄȱµã¾ÍÊÇ£¬ ÔÚÿ¸öÈÎÎñÖж¼ÒªÓÐÒ»ÕÅ»òÕß¼¸ÕÅÖ½×÷Ϊ±¨Í·Ò³Ó¡³öÀ´£¬ ¿ÉÊÇËüÃǵÄÓÐÓõĵط½Ö»·¢»Ó¼¸·ÖÖÓµÄ×÷Ó㬠×îºóËüÃǻᱻ·Å½ø»ØÊÕÕ¾»òÕßÈÓ½øÀ¬»ø¶Ñ¡£ (×¢ÒⱨͷҳֻÊÇÒ»¸öÈÎÎñÒ»¸ö£¬ ¶ø²»ÊÇÈÎÎñÖеÄÿ¸öÎļþ¶¼ÓÐÒ»¸ö£¬ ËùÒÔ¿ÉÄܶÔÖ½ÕÅ»¹²»ËãºÜÀË·Ñ¡£)
¡¡¡¡LPD ϵͳ¿ÉÒÔ×Ô¶¯ÎªÄúµÄ´òÓ¡Ìṩ±¨Í·Ò³£¬ Èç¹û ÄúµÄ´òÓ¡»ú¿ÉÒÔÖ±½Ó´òÓ¡´¿Îı¾¡£ Èç¹ûÄúµÄ´òÓ¡»úÊÇһ̨ PostScript ´òÓ¡»ú£¬ Äú½«ÐèÒªÒ»¸öÍⲿµÄ³ÌÐòÀ´Éú³É±¨Í·Ò³£» Ïê¼û ÔÚ PostScript ´òÓ¡»úÉÏ´òÓ¡±¨Í·Ò³¡£
¡¡¡¡ÔÚ ¼òµ¥´òÓ¡ÉèÖà Õâ½Ú£¬ ÎÒÃÇͨ¹ýÔÚ /etc/printcap ÎļþÖÐÖ¸¶¨ sh (¡°½ûÖ¹±¨Í·Ò³¡±) À´°Ñ±¨Í·Ò³¹¦ÄܹصôÁË¡£ ÒªÖØÐÂΪ´òÓ¡»ú¿ªÆô±¨Í·Ò³¹¦ÄÜ£¬ Ö»ÐèҪɾ³ýµô sh¡£
¡¡¡¡ÌýÆðÀ´ºÜÈÝÒ×£¬ ²»ÊÇô£¿
¡¡¡¡Êǵġ£ Äú ¿ÉÄÜ ²»µÃ²»ÈÃÊä³ö¹ýÂËÆ÷À´¸ø´òÓ¡»ú·¢Ëͳõʼ»¯×Ö·û´®¡£ ÏÂÃæÊÇÒ»¸öÓÃÔÚ Hewlett Packard PCL-¼æÈÝ´òÓ¡»úÉϵÄÊä³ö¹ýÂËÆ÷µÄÀý×Ó£º
#!/bin/sh # # hpof - Output filter for Hewlett Packard PCL-compatible printers # Installed in /usr/local/libexec/hpof printf "\033&k2G" || exit 2 exec /usr/libexec/lpr/lpf
¡¡¡¡Óà of ±äÁ¿Ö¸¶¨Êä³ö¹ýÂËÆ÷µÄ·¾¶¡£ ²Î¼û Êä³ö¹ýÂËÆ÷ ÕâÒ»½ÚÀ´µÃµ½¸ü¶àÐÅÏ¢¡£
¡¡¡¡ÏÂÃæÊÇÒ»¸öΪÎÒÃÇÒÔǰ½éÉܵĽÐ×ö teak µÄ´òÓ¡»úÅäÖÃµÄ /etc/printcap Îļþ£» ÔÚÅäÖõ±ÖÐÎÒÃÇ¿ªÆôÁ˱¨Í·Ò³²¢ÇÒ¼ÓÈëÁËÉÏÊöµÄ´òÓ¡¹ýÂËÆ÷£º
# # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:\ :of=/usr/local/libexec/hpof:
¡¡¡¡ÏÖÔÚ£¬ µ±Óû§ÔÙ·¢ÈÎÎñ¸ø´òÓ¡»ú teak µÄʱºò£¬
ÿ¸öÈÎÎñ¶¼»áÓÐÒ»¸ö±¨Í·Ò³¡£ Èç¹ûÓû§ÏëÒª»¨Ê±¼äÀ´Ñ°ÕÒËûÃÇ×Ô¼º´òÓ¡µÄÎļþ£¬ ÄÇôËûÃÇ¿ÉÒÔͨ¹ý
lpr -h
ÃüÁîÀ´Ìá½»ÈÎÎñ£» ²Î¿¼
±¨Í·Ò³Ñ¡Ïî
ÕâÒ»½ÚÀ´µÃµ½¸ü¶à¹ØÓÚ lpr(1) µÄÑ¡Ïî¡£
×¢Òâ: LPD ÔÚ±¨Í·Ò³Ö®ºó·¢³öÒ»¸ö»»Ö½×Ö·û¡£ Èç¹ûÄúµÄ´òÓ¡»úʹÓÃÒ»¸ö²»Í¬µÄ×Ö·û»òÕß×Ö·û´®µ±×÷ÍËÖ½Ö¸Á ÔÚ /etc/printcap ÖÐÓà ff ±äÁ¿Ö¸¶¨¼´¿É¡£
¡¡¡¡Í¨¹ýÆôÓñ¨Í·Ò³£¬ LPD ½«Éú³É³öÒ»¸ö ³¤±¨Í·£¬ Ò»ÕûÒ³µÄ´ó×Öĸ£¬ ±ê×ÅÓû§£¬ Ö÷»úºÍÈÎÎñÃû¡£ ÏÂÃæÊÇÒ»¸öÀý×Ó (kelly ´ÓÖ÷»ú rose ´òÓ¡ÁËÒ»¸ö½Ð×ö ¡°outline¡± µÄÈÎÎñ)£º
k ll ll k l l k l l k k eeee l l y y k k e e l l y y k k eeeeee l l y y kk k e l l y y k k e e l l y yy k k eeee lll lll yyy y y y y yyyy ll t l i t l oooo u u ttttt l ii n nnn eeee o o u u t l i nn n e e o o u u t l i n n eeeeee o o u u t l i n n e o o u uu t t l i n n e e oooo uuu u tt lll iii n n eeee r rrr oooo ssss eeee rr r o o s s e e r o o ss eeeeee r o o ss e r o o s s e e r oooo ssss eeee Job: outline Date: Sun Sep 17 11:04:58 1995
¡¡¡¡LPD »á¸½¼ÓÒ»¸ö»»Ò³·ûÔÚÕâ¶ÎÎı¾Ö®ºó£¬ ËùÒÔÈÎÎñ»áÔÚеÄÒ»Ò³ÉÏ¿ªÊ¼ (³ý·ÇÉèÖÃÁË sf (½ûÖ¹»»Ö½) ÔÚ /etc/printcap ÎļþÀïÄ¿±ê´òÓ¡»úµÄ¼Ç¼ÖÐ)¡£
¡¡¡¡Èç¹ûÄúϲ»¶£¬ LPD ¿ÉÒÔÉú³ÉÒ»¸ö ¶Ì±¨Í·£» Ö¸¶¨ sb (¶Ì banner) ÔÚÎļþ /etc/printcap ÖС£ ±¨Í·Ò³¾Í»á¿´ÆðÀ´ÏñÏÂÃæÕâÑù£º
rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
¡¡¡¡Í¬ÑùÊÇĬÈϵģ¬ LPD Ò²ÊÇÏÈ´òÓ¡±¨Í·Ò³£¬ È»ºó²ÅÊÇÈÎÎñ¡£ ÒªÏë·´¹ýÀ´£¬ ÔÚ /etc/printcap ÖÐÖ¸¶¨ hl (×îºó±¨Í·)¡£
¡¡¡¡Ê¹Óà LPD ÄÚÖõı¨Í·Ò³»áÔÚ½øÐдòÓ¡¼ÇÕʵÄʱºò²úÉúÒ»ÖÖÌØÊâÇé¿ö£º ±¨Í·Ò³¿Ï¶¨ÊÇ Ãâ·Ñ µÄ¡£
¡¡¡¡ÎªÊ²Ã´£¿
¡¡¡¡ÒòΪÊä³ö¹ýÂËÆ÷ÊǽöÓеÄÒ»¸öÔÚ´òÓ¡±¨Í·Ò³Ê±ÄܽøÐмÇÕʵÄÍⲿ³ÌÐò£¬
µ«È´Ã»ÓÐÌṩ¸øËüÈκΠÓû§»òÕßÖ÷»ú
µÄÐÅÏ¢»òÕß¼ÇÕÊÎļþ£¬ ËùÒÔËüÎÞ·¨ÖªµÀËÓ¦¸ÃΪ´òÓ¡»úµÄʹÓø¶·Ñ¡£ Èç¹û½ö½öÊÇ ¡°Ôö¼ÓÒ»Ò³¼ÆÊý¡±
¸øÎı¾¹ýÂËÆ÷»òÕ߯äËû¹ýÂËÆ÷ (ËüÃÇÓÐÓû§ºÍÖ÷»úµÄÐÅÏ¢) ÊDz»¹»µÄ£¬ ÒòΪÓû§¿ÉÒÔÓà lpr -h
ÃüÁîÌø¹ý±¨Í·Ò³¡£
Ëû»¹ÊÇÐèҪΪ×Ô¼º²¢Ã»ÓдòÓ¡µÄ±¨Í·Ò³¸¶Ç®¡£ »ù±¾ÉÏ£¬ lpr -h
ÊÇÃ÷ÖªÓû§µÄÊ×Ñ¡£¬ µ«Ò²²»ÄÜÇ¿ÖÆÈñðÈËʹÓÃËü¡£
¡¡¡¡ÈÃÿ¸ö¹ýÂËÆ÷Éú³É×Ô¼ºµÄ±¨Í·Ò³ (Òò´Ë¿ÉÒÔΪËüÃǼƷÑ) ÊÇ ÈÔÈ»²»¹»µÄ¡£ Èç¹ûÓû§ÏëÒªÓà lpr -h
ÃüÁî½ûÖ¹±¨Í·Ò³£¬
ËüÃǽ«ÈÔȻӡ³ö±¨Í·Ò³²¢ÇÒΪËüÃǸ¶·Ñ¡£ ÒòΪ LPD ²»»á°Ñ
-h
Õâ¸ö²ÎÊý´«¸øÈκιýÂËÆ÷¡£
¡¡¡¡ÕâÑù£¬ Äú¸ÃÔõô°ìÄØ£¿
¡¡¡¡Äú¿ÉÒÔ£º
ÈÏ¿É LPD µÄÕâ¸öÎÊÌ⣬ ²¢ÇÒÃâ·ÑÌṩ±¨Í·Ò³´òÓ¡¡£
°²×°Ò»¸öÌæ´ú LPD µÄÈí¼þ£¬ ±ÈÈç LPRng¡£ ²Î¿¼ Ìæ»»±ê×¼µÄºǫ́´òÓ¡Èí¼þ À´µÃµ½¸ü¶à¹ØÓÚ¿ÉÒÔÌæ´ú LPD µÄÈí¼þµÄÐÅÏ¢¡£
дһ¸ö ´ÏÃ÷µÄ Êä³ö¹ýÂËÆ÷¡£ ͨ³££¬ Êä³ö¹ýÂËÆ÷²»Ó¦¸ÃÈ¥Íê³É³ýÁ˳õʼ»¯´òÓ¡»ú»òÕß½øÐÐһЩ¼òµ¥×Ö·ûת»»ÒÔÍâµÄÈκÎÊÂÇé¡£ ËüÊʺÏÍê³É±¨Í·Ò³ºÍ´¿Îı¾ÈÎÎñ (µ±Ã»ÓÐÎı¾ (ÊäÈë) ¹ýÂËÆ÷ʱ)¡£ µ«ÊÇ£¬ Èç¹ûÓÐÎı¾¹ýÂËÆ÷Ϊ´¿Îı¾ÈÎÎñ·þÎñ£¬ ÄÇô LPD ½«½öΪ´òÓ¡±¨Í·Ò³Æô¶¯Êä³ö¹ýÂËÆ÷¡£ ¶øÇÒ£¬ Õâ¸öÊä³ö¹ýÂËÆ÷¿ÉÒÔÀí½â±¨Í·Ò³Àï LPD Éú³ÉµÄÐÅÏ¢£¬ È»ºó¾ö¶¨ÄÄλÓû§ºÍÖ÷»úÓ¦¸ÃΪ±¨Í·Ò³¸¶·Ñ¡£ ÕâÖÖ·½·¨½öÓеÄÎÊÌâÊÇÊä³ö¹ýÂËÆ÷ÈÔÈ»²»ÖªµÀÓ¦¸ÃʹÓÃʲô¼ÇÕÊÎļþ (af ±äÁ¿µÄÄÚÈݲ¢Ã»Óб»´«µÝ¹ýÀ´)£¬ µ«ÊÇÈç¹ûÄúÓÐÒ»¸öÖÚËùÖÜÖªµÄ¼ÇÕÊÎļþ£¬ ¾Í¿ÉÒÔÖ±½Ó°ÑÎļþÃûд½øÊä³ö¹ýÂËÆ÷¡£ ΪÁ˼ò»¯½âÊͱ¨Í·µÄ²½Ö裬 ÎÒÃǶ¨Òå sh (¶Ì±¨Í·) ±äÁ¿ÔÚ /etc/printcap ÎļþÖС£ µ«ÕâЩ»¹ÊÇÌ«Âé·³ÁË£¬ ¶øÇÒÓû§Ò²¸üϲ»¶ÈÃËûÃÇÃâ·Ñ´òÓ¡±¨Í·Ò³µÄ¿¶¿®µÄϵͳ¹ÜÀíÔ±¡£
¡¡¡¡ÏñÉÏÃæÃèÊöµÄÄÇÑù£¬LPD ¿ÉÒÔÉú³ÉÒ»¸ö´¿Îı¾µÄ±¨Í·Ò³À´ÊÊÓ¦¶àÖÖ´òÓ¡»ú¡£ µ±È»£¬ PostScript ²»ÄÜÖ±½Ó´òÓ¡´¿Îı¾£¬ ËùÒÔ LPD ûʲôÓ餩¤»òÕß˵´ó¶àʱºòÊÇÕâÑù¡£
¡¡¡¡Ò»¸öÏÔ¶øÒ×¼ûµÄ·½·¨À´µÃµ½±¨Í·Ò³¾ÍÊÇÈÃÿ¸öת»»¹ýÂËÆ÷ºÍÎı¾¹ýÂËÆ÷¶¼À´Éú³É±¨Í·Ò³¡£
ÕâЩ¹ýÂËÆ÷Ó¦¸ÃÓÃÓû§ÃûºÍÖ÷»úµÄ²ÎÊýÀ´Éú³ÉÒ»¸öÏà¶ÔÓ¦µÄ±¨Í·Ò³¡£
ÕâÖÖ·½·¨µÄȱµã¾ÍÊÇÓû§×ÜÊÇ´òÓ¡³ö±¨Í·Ò³£¬ ÎÞÂÛËûÃÇÊÇ·ñÓà lpr
-h
ÃüÁîÀ´Ìá½»µÄÈÎÎñ¡£
¡¡¡¡ÈÃÎÒÃÇÀ´ÉîÈëÉîÈëµÄÑо¿Ò»ÏÂÕâ¸ö·½·¨¡£ ÏÂÃæµÄ½Å±¾ÊäÈëÈý¸ö²ÎÊý (Óû§µÇ¼Ãû£¬ Ö÷»úÃû£¬ ºÍÈÎÎñÃû) È»ºóÉú³ÉÒ»¸ö¼òµ¥µÄ PostScript ±¨Í·Ò³£º
#!/bin/sh # # make-ps-header - make a PostScript header page on stdout # Installed in /usr/local/libexec/make-ps-header # # # These are PostScript units (72 to the inch). Modify for A4 or # whatever size paper you are using: # page_width=612 page_height=792 border=72 # # Check arguments # if [ $# -ne 3 ]; then echo "Usage: `basename $0` <user> <host> <job>" 1>&2 exit 1 fi # # Save these, mostly for readability in the PostScript, below. # user=$1 host=$2 job=$3 date=`date` # # Send the PostScript code to stdout. # exec cat <<EOF %!PS % % Make sure we do not interfere with user's job that will follow % save % % Make a thick, unpleasant border around the edge of the paper. % $border $border moveto $page_width $border 2 mul sub 0 rlineto 0 $page_height $border 2 mul sub rlineto currentscreen 3 -1 roll pop 100 3 1 roll setscreen $border 2 mul $page_width sub 0 rlineto closepath 0.8 setgray 10 setlinewidth stroke 0 setgray % % Display user's login name, nice and large and prominent % /Helvetica-Bold findfont 64 scalefont setfont $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto ($user) show % % Now show the boring particulars % /Helvetica findfont 14 scalefont setfont /y 200 def [ (Job:) (Host:) (Date:) ] { 200 y moveto show /y y 18 sub def } forall /Helvetica-Bold findfont 14 scalefont setfont /y 200 def [ ($job) ($host) ($date) ] { 270 y moveto show /y y 18 sub def } forall % % That is it % restore showpage EOF
¡¡¡¡ÏÖÔÚ£¬ ÿ¸öת»»¹ýÂËÆ÷ºÍÎı¾¹ýÂËÆ÷¶¼Äܵ÷ÓÃÕâ¶Î½Å±¾À´Éú³É±¨Í·Ò³£¬ È»ºó´òÓ¡Óû§µÄÈÎÎñ¡£ ÏÂÃæÊÇÎÒÃÇÔçЩʱºòÔÚÕâ¸öÎĵµÖÐÌáµ½µÄ DVI ת»»¹ýÂËÆ÷£¬ ±»ÐÞ¸ÄÖ®ºóÀ´Éú³ÉÒ»¸ö±¨Í·Ò³£º
#!/bin/sh # # psdf - DVI to PostScript printer filter # Installed in /usr/local/libexec/psdf # # Invoked by lpd when user runs lpr -d # orig_args="$@" fail() { echo "$@" 1>&2 exit 2 } while getopts "x:y:n:h:" option; do case $option in x|y) ;; # Ignore n) login=$OPTARG ;; h) host=$OPTARG ;; *) echo "LPD started `basename $0` wrong." 1>&2 exit 2 ;; esac done [ "$login" ] || fail "No login name" [ "$host" ] || fail "No host name" ( /usr/local/libexec/make-ps-header $login $host "DVI File" /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args
¡¡¡¡¹ýÂËÆ÷ÊÇÔõÑù½âÊͲÎÊýÁбíÀ´¾ö¶¨Óû§ÃûºÍÖ÷»úÃûµÄ¡£ ½âÊ͵ķ½·¨¶ÔÓÚÆäËûת»»¹ýÂËÆ÷À´ËµÒ²ÊÇÒ»ÑùµÄ¡£ ¾¡¹ÜÎı¾¹ýÂËÆ÷ÐèÒªÊäÈëµÄ²ÎÊýÓÐЩСµÄ²»Í¬£¬ (²Î¼û ¹ýÂËÆ÷ÊÇÔõÑù¹¤×÷µÄ)¡£
¡¡¡¡ÏñÎÒÃÇÒÔǰÌáµ½µÄÄÇÑù£¬ ÉÏÃæµÄÅäÖ㬠¾¡¹ÜÏ൱¼òµ¥£¬ ¹ØµôÁË ¡°½ûÖ¹±¨Í·Ò³¡± µÄÑ¡Ïî
(-h
Ñ¡Ïî) ÔÚ lpr ÖС£
Èç¹ûÓû§ÏëÒª±£»¤Ê÷ľ (»òÕßÊǼ¸±ãÊ¿£¬ Èç¹ûÄã¶Ô´òÓ¡±¨Í·Ò³Êշѵϰ)£¬ Ëü»¹²»ÄÜÍê³ÉÕâ¼þÊÂÇ飬
ÒòΪÿ¸ö¹ýÂËÆ÷¶¼ÒªÎªÃ¿¸öÈÎÎñ´òÓ¡Ò»¸ö±¨Í·Ò³¡£
¡¡¡¡ÒªÔÊÐíÓû§¶ÔÓÚÿ¸öÈÎÎñ¶¼¿ÉÒԹرձ¨Í·Ò³£¬ ÄúÐèҪʹÓÃÔÚ Îª±¨Í·Ò³¼ÇÕÊ
Õâ½ÚÖнéÉܵÄÄÇÖÖ¼¼ÇÉ£º дһ¸öÊä³ö¹ýÂËÆ÷À´½âÊÍ LPD- Éú³ÉµÄ±¨Í·Ò³²¢ÇÒÉú³ÉÒ»¸ö PostScript µÄ°æ±¾¡£ Èç¹ûÓû§Óà lpr -h
ÃüÁîÌá½»ÈÎÎñ£¬ ÄÇô LPD
½«²»»áÉú³É±¨Í·Ò³£¬ ²¢ÇÒÊä³ö¹ýÂËÆ÷Ò²²»»áÉú³É±¨Í·Ò³¡£ ·ñÔò£¬ Êä³ö¹ýÂËÆ÷½«´Ó LPD ¶ÁÈ¡Îı¾£¬ È»ºó·¢ËÍÊʵ±µÄ±¨Í·Ò³µÄ PostScript ±àÂë¸ø´òÓ¡»ú¡£
¡¡¡¡Èç¹ûÄúÓеÄÊÇһ̨Á¬ÔÚ´®¿ÚÉ쵀 PostScript ´òÓ¡»ú£¬ Äú¿ÉÒÔʹÓà lprps ÀïµÄÒ»¸öÊä³ö¹ýÂËÆ÷£¬ psof £¬ Ëü¿ÉÒÔÍê³ÉÉÏÊöÈÎÎñ¡£ µ«×¢Òâ psof ²»¶Ô±¨Í·Ò³¼Æ·Ñ¡£
¡¡¡¡FreeBSD Ö§³ÖÍøÂç´òÓ¡£º ·¢ËÍÈÎÎñ¸øÔ¶³Ì´òÓ¡»ú¡£ ÍøÂç´òӡͨ³£Ö¸Á½ÖÖ²»Í¬µÄ·½Ê½£º
·ÃÎÊһ̨Á¬½ÓÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú¡£ ÔÚһ̨Ö÷»úÉϰ²×°Ò»Ì¨³£¹æµÄ´®¿Ú»ò²¢¿Ú´òÓ¡»ú¡£ È»ºó£¬ ÉèÖà LPD À´Í¨¹ýÍøÂç·ÃÎÊÆäËûÖ÷»úÉϵĴòÓ¡»ú¡£ ¾ßÌå¼û °²×°ÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú Õâ½Ú¡£
·ÃÎÊһֱ̨½ÓÁ¬½ÓÔÚÍøÂçÉϵĴòÓ¡»ú¡£ ´òÓ¡»úÁíÓÐÒ»¸öÍøÂç½Ó¿Ú (»òÕßÌæ´ú³£¹æµÄ´®¿Ú»òÕß²¢¿Ú)¡£ ÕâÑùµÄ´òÓ¡»ú¿ÉÄÜÏñÏÂÃæÕâÑù¹¤×÷£º
Ëü»òÐí¿ÉÒÔÀí½â LPD µÄÐÒ飬 ²¢ÇÒÉõÖÁ¿ÉÒÔ½ÓÊÕÔ¶³ÌÖ÷»ú·¢À´µÄÈÎÎñÅŽø¶ÓÁС£ ÕâÑù£¬ Ëü¾ÍÏñÒ»¸öÆÕͨµÄÖ÷»úÔËÐÐ×Å LPD Ò»Ñù¡£ ×öÔÚ °²×°ÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú Àï½éÉܵIJ½Ö裬 ¿ÉÒÔÉèÖúÃÕâÑùµÄ´òÓ¡»ú¡£
Ëü»òÐíÖ§³ÖÍøÂçÊý¾ÝÁ÷¡£ ÕâÑù£¬ °Ñ´òÓ¡»ú ¡°½Ó¡± ÔÚÒ»Ì¨ÍøÂçÉϵÄÖ÷»úÉÏ£¬ ÓÉÕą̂Ö÷»ú¸ºÔð°²ÅÅÈÎÎñ²¢·¢ËÍÈÎÎñµ½´òÓ¡»ú¡£ ²Î¼û ´øÍøÂçÊý¾ÝÁ÷½Ó¿ÚµÄ´òÓ¡»ú Õâ½ÚÀ´µÃµ½¸ü¶à°²×°ÕâÀà´òÓ¡»úµÄ½¨Òé¡£
¡¡¡¡LPD ºǫ́´òӡϵͳÄÚ½¨Á˶ԸøÆäËûÒ²ÔËÐÐ×Å LPD (»òÕßÊÇÓë LPD ¼æÈݵÄ) µÄÖ÷»ú·¢ËÍÈÎÎñµÄ¹¦ÄÜ¡£ Õâ¸ö¹¦ÄÜʹÄú¿ÉÒÔÔÚһ̨Ö÷»úÉϰ²×°´òÓ¡»ú£¬ ²¢ÈÃËü¿ÉÒÔÔÚÆäËûÖ÷»úÉÏ·ÃÎÊ¡£ Õâ¸ö¹¦ÄÜͬÑùÊÊÓÃÔÚÄÇЩÓÐÍøÂç½Ó¿Ú²¢ÇÒ¿ÉÒÔÀí½â LPD ÐÒéµÄ´òÓ¡»úÉÏ¡£
¡¡¡¡Òª¿ªÆôÕâÖÖÔ¶³Ì´òÓ¡µÄ¹¦ÄÜ£¬ Ê×ÏÈÔÚһ̨Ö÷»úÉϰ²×°´òÓ¡»ú£¬ ¾ÍÊÇ ´òÓ¡·þÎñÆ÷£¬ ¿ÉÒÔʹÓÃÔÚ ¼òµ¥´òÓ¡»úÉèÖà Õâ½ÚÖмòµ¥ÉèÖõķ½·¨¡£ ¸ß¼¶µÄÉèÖÿÉÒԲο¼ ¸ß¼¶´òÓ¡»úÉèÖà Õâ½ÚÖÐÄãÐèÒªµÄ²¿·Ö¡£ Ò»¶¨Òª²âÊÔһϴòÓ¡»ú£¬ ¿´¿´ËüÊDz»ÊÇËùÓÐÄú¿ªÆôµÄ LPD µÄ¹¦Äܶ¼Õý³£¹¤×÷¡£ ´ËÍ⻹ÐèҪȷÈÏ ±¾µØÖ÷»ú ÔÊÐíʹÓà Զ³ÌÖ÷»ú É쵀 LPD ·þÎñ (²Î¼û ÏÞÖÆÔ¶³ÌÖ÷´òÓ¡ÈÎÎñ)¡£
¡¡¡¡Èç¹ûÄúÕýÔÚʹÓÃһ̨´øÍøÂç½Ó¿Ú²¢Óë LPD ¼æÈݵĴòÓ¡»ú£¬ ÄÇôÎÒÃÇÄÇÏÂÃæÌÖÂÛÖÐµÄ ´òÓ¡·þÎñÆ÷ ¾ÍÊÇ´òÓ¡»ú±¾Éí£¬ ¶ø ´òÓ¡»úÃû ¾ÍÊÇÄúΪ´òÓ¡»úÅäÖõÄÃû×Ö¡£ ²Î¿¼Ëæ´òÓ¡»úºÍ/»òÕß´òÓ¡»ú-ÍøÂç½Ó¿Ú¹©¸øµÄÎĵµ¡£
Ìáʾ: Èç¹ûÄúÕýʹÓÃ»ÝÆÕµÄ Laserjet£¬ Ôò´òÓ¡»úÃû text ½«×Ô¶¯µØÎªÄúÍê³É LF µ½ CRLF µÄת»»£¬ Òò¶øÒ²¾Í²»ÐèÒª hpif ½Å±¾ÁË¡£
¡¡¡¡È»ºó£¬ ÔÚÁíÍâһ̨ÄãÏëÒª·ÃÎÊ´òÓ¡»úµÄÖ÷»úÉ쵀 /etc/printcap ÎļþÖмÓÈëËüÃǵļǼ£¬ ÏñÏÂÃæÕâÑù£º
¿ÉÒÔËæÒâ¸øÕâ¸ö¼Ç¼ÆðÃû×Ö¡£ ¼òµ¥Æð¼û£¬ Äú¿ÉÒÔ¸ø´òÓ¡·þÎñÆ÷ʹÓÃÏàͬµÄÃû×Ö»òÕß±ðÃû¡£
±£Áô lp ±äÁ¿Îª¿Õ£¬ (:lp=:)¡£
½¨Á¢Ò»¸öºǫ́´òÓ¡¶ÓÁÐĿ¼£¬ ²¢Óà sd ±äÁ¿Ö¸Ã÷ÆäλÖᣠLPD ½«°ÑÈÎÎñÌá½»¸ø´òÓ¡·þÎñÆ÷֮ǰ£¬ »á°ÑÕâЩÈÎÎñ±£´æÔÚÕâÀï¡£
ÔÚ rm ±äÁ¿ÖзÅÈë´òÓ¡·þÎñÆ÷µÄÃû×Ö¡£
ÔÚ rp ÖзÅÈë´òÓ¡·þÎñÆ÷ÉÏ´òÓ¡»úµÄÃû×Ö¡£
¡¡¡¡¾ÍÊÇÕâÑù¡£ ²»ÐèÒªÁгöת»»¹ýÂËÆ÷£¬ Ò³Ãæ´óС£¬ »òÕ߯äËûµÄһЩ¶«Î÷ÔÚ /etc/printcap ÎļþÖС£
¡¡¡¡ÕâÓÐÒ»¸öÀý×Ó¡£ Ö÷»ú rose ÓÐÁ½Ì¨´òÓ¡»ú£¬ bamboo ºÍ rattan¡£ ÎÒÃÇÒªÈÃÖ÷»ú orchid µÄÓû§¿ÉÒÔʹÓÃÕâÁ½Ì¨´òÓ¡»ú¡£ ÏÂÃæÊÇ /etc/printcap Îļþ£¬ ÓÃÔÚÖ÷»ú orchid (Ïê¼û ¿ªÆô±¨Í·Ò³) Éϵġ£ ÎļþÖÐÒѾÓÐÁË´òÓ¡»ú teak µÄ¼Ç¼£» ÎÒÃÇÔÚÖ÷»ú rose ÉÏÔö¼ÓÁËÁ½Ì¨´òÓ¡»ú£º
# # /etc/printcap for host orchid - added (remote) printers on rose # # # teak is local; it is connected directly to orchid: # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: # # rattan is connected to rose; send jobs for rattan to rose: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: # # bamboo is connected to rose as well: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
¡¡¡¡È»ºó£¬ ÎÒÃÇÖ»ÐèÒªÔÚÖ÷»ú orchid ÉϽ¨Á¢Ò»¸öºǫ́´òÓ¡¶ÓÁÐĿ¼£º
# mkdir -p
/var/spool/lpd/rattan /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
# chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
¡¡¡¡ÏÖÔÚ£¬ Ö÷»ú orchid ÉϵÄÓû§¿ÉÒÔ´òÓ¡µ½ rattan ºÍ bamboo ÁË¡£ Èç¹û£¬ ±ÈÈ磬 Ò»¸öÓû§ÔÚÖ÷»ú orchid ÉÏÊäÈëÁË£º
% lpr-P
bamboo-d
sushi-review.dvi
¡¡¡¡LPD ϵͳÔÚÖ÷»ú orchid ÉÏ»á¸´ÖÆÕâ¸öÈÎÎñµ½ºǫ́´òÓ¡¶ÓÁÐĿ¼ /var/spool/lpd/bamboo ²¢ÇÒ¼ÇÏÂÕâÊÇÒ»¸ö DVI ÈÎÎñ¡£ µ±Ö÷»ú rose ÉϵĴòÓ¡»ú bamboo µÄºǫ́´òÓ¡¶ÓÁÐĿ¼ÓпռäµÄʱ£¬ ÕâÁ½¸ö LPD ϵͳ½«»á´«ÊäÕâ¸öÎļþµ½Ö÷»ú rose ÉÏ¡£ Îļþ½«ÅÅÔÚÖ÷»ú rose µÄ¶ÓÁÐÖÐÖ±µ½×îÖÕ±»´òÓ¡³öÀ´¡£ Ëü½«±»´Ó DVI ת»»³É PostScript (ÒòΪ bamboo ÊÇһ̨ PostScript ´òÓ¡»ú) ÔÚÖ÷»ú rose¡£
¡¡¡¡Í¨³££¬ µ±ÄúΪ´òÓ¡»ú¹ºÂòÁËÒ»¿éÍø¿¨£¬ ¿ÉÒԵõ½Á½¸ö°æ±¾£º Ò»¸öÊÇÄ£Äâºǫ́´òÓ¡ (¹óһЩµÄ°æ±¾)£¬ »òÕßÒ»¸öÖ»·¢ËÍÊý¾Ý¸ø´òÓ¡»ú¾ÍÏñÔÚʹÓô®¿Ú»òÕß²¢¿ÚÒ»Ñù (±ãÒËһЩµÄ°æ±¾)¡£ Õâ½Ú½²ÊöÈçºÎʹÓÃÕâ¸ö±ãÒËһЩµÄ°æ±¾¡£ ÒªµÃµ½¹óһЩ°æ±¾µÄ¸ü¶àÐÅÏ¢£¬ ²Î¼ûÇ°ÃæÕÂ½Ú °²×°ÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú¡£
¡¡¡¡/etc/printcap ÎļþµÄ¸ñʽÈÃÄúÖ¸¶¨Ê¹ÓÃÄĸö´®¿Ú»ò²¢¿Ú£¬ ²¢ÇÒ»¹ÒªÖ¸¶¨ (Èç¹ûÄúÕýÔÚʹÓô®¿Ú)£¬ ʹÓöà¿ìµÄ²¨ÌØ£¬ ÊÇ·ñʹÓÃÁ÷Á¿¿ØÖÆ£¬ ÎªÖÆ±í·ûÑÓ³Ù£¬ ת»»»»ÐУ¬ µÈµÈ¡£ µ«ÊÇûÓÐÒ»ÖÖ·½·¨Ö¸¶¨Ò»¸öÁ¬½Óµ½Ò»Ì¨ÕýÔÚ¼àÌý TCP/IP µÄ»òÕ߯äËûÍøÂç½Ó¿ÚµÄ´òÓ¡»ú¡£
¡¡¡¡Òª·¢ËÍÊý¾Ýµ½ÍøÂç´òÓ¡»ú£¬ ¾ÍÐèÒª¿ª·¢Ò»¸öͨѶ³ÌÐò£¬ Ëü¿ÉÒÔ±»Îı¾»òÕßת»»¹ýÂËÆ÷µ÷ÓᣠÏÂÃæÊÇһЩÀý×Ó£º ½Å±¾ netprint ½«±ê×¼ÊäÈëµÄËùÓÐÊý¾Ý·¢Ë͵½Ò»¸öÁ¬ÔÚÍøÂçÉϵĴòÓ¡»ú¡£ ÎÒÃǽ«´òÓ¡»úµÄÃû×Ö×÷ΪµÚÒ»¸ö²ÎÊý£¬ ¶Ë¿ÚºÅ¸úÔÚºóÃæ×÷ΪµÚ¶þ¸ö²ÎÊý£¬ ´«¸ø netprint¡£ ×¢ÒâËüÖ»Ö§³Öµ¥ÏòͨѶ (FreeBSD µ½´òÓ¡»ú)£» ºÜ¶àÍøÂç´òÓ¡»úÖ§³ÖË«ÏòͨѶ£¬ ²¢ÇÒÕâÊÇÄú¿ÉÄÜÀûÓõ½µÄ (µÃµ½´òÓ¡»ú״̬£¬ ½øÐдòÓ¡¼ÇÕÊ£¬ µÈµÈµÄʱºò¡£)¡£
#!/usr/bin/perl # # netprint - Text filter for printer attached to network # Installed in /usr/local/libexec/netprint # $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; $printer_host = $ARGV[0]; $printer_port = $ARGV[1]; require 'sys/socket.ph'; ($ignore, $ignore, $protocol) = getprotobyname('tcp'); ($ignore, $ignore, $ignore, $ignore, $address) = gethostbyname($printer_host); $sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address); socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) || die "Can't create TCP/IP stream socket: $!"; connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!"; while (<STDIN>) { print PRINTER; } exit 0;
¡¡¡¡È»ºóÎÒÃǾͿÉÒÔÔÚ¶àÖÖ¹ýÂËÆ÷ÀïʹÓÃÕâ¸ö½Å±¾ÁË¡£ ¼ÓÈëÎÒÃÇÓÐһ̨ Diablo 750-N ÐÐʽ´òÓ¡»úÁªÔÚÍøÂçÉÏ¡£ ´òÓ¡»úÔÚ 5100 ¶Ë¿ÚÉϽÓÊÕÒª´òÓ¡µÄÊý¾Ý¡£ ´òÓ¡»úµÄÖ÷»úÃûÊÇ scrivener¡£ ÕâÀïÊÇΪÕâ¸ö´òÓ¡»úдµÄÎı¾¹ýÂËÆ÷£º
#!/bin/sh # # diablo-if-net - Text filter for Diablo printer `scrivener' listening # on port 5100. Installed in /usr/local/libexec/diablo-if-net # exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
¡¡¡¡Õâ½Ú½«½²Êö¹ØÓÚÏÞÖÆ´òÓ¡»úʹÓõÄÎÊÌâ¡£ LPD ϵͳÈÃÄú¿ÉÒÔ¿ØÖÆË¿ÉÒÔ·ÃÎÊ´òÓ¡»ú£¬ ÎÞÂÛ±¾µØ»òÊÇÔ¶³ÌµÄ£¬ ÊÇ·ñËûÃÇ¿ÉÒÔ´òÓ¡»ú¶à·Ý¸±±¾£¬ ÈÎÎñ¿ÉÒÔÓжà´ó£¬ ÒÔ¼°´òÓ¡¶ÓÁеijߴçµÈ¡£
¡¡¡¡LPD ϵͳÄܹ»¼ò»¯Óû§ÔÚ´òÓ¡¶à·Ý¸±±¾Ê±µÄ¹¤×÷¡£ Óû§¿ÉÒÔÓÃ
lpr -#5
(¾ÙÀý) À´Ìá½»´òÓ¡ÈÎÎñ£¬
Ôò»á½«ÈÎÎñÖÐÿ¸öÎļþ¶¼´òÓ¡Îå·Ý¸±±¾¡£ ÕâÊDz»ÊÇÒ»¼þºÜ°ôµÄÊÂÇéÄØ¡£
¡¡¡¡Èç¹ûÄú¸Ð¾õ¶à·Ý¸±±¾»á¶Ô´òÓ¡»úÔì³É²»±ØÒªµÄÄ¥ËðºÍËðºÄ£¬ Äú¿ÉÒÔÆÁ±Îµô lpr(1) µÄ -#
Ñ¡Ï Õâ¿ÉÒÔͨ¹ýÔÚ /etc/printcap ÎļþÖÐÔö¼Ó
sc ±äÁ¿À´Íê³É¡£ µ±Óû§Óà -#
Ñ¡ÏîÌá½»ÈÎÎñʱ£¬ ËûÃǽ«¿´µ½£º
lpr: multiple copies are not allowed
¡¡¡¡×¢Ò⵱Ϊһ̨Զ³Ì´òÓ¡»ú½øÐÐÉèÖÃʱ (²Î¼û °²×°ÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú ÕâÒ»½Ú) Äú»¹ÐèҪͬʱÔÚÔ¶³ÌÖ÷»úµÄ /etc/printcap ÎļþÖÐ Ôö¼Ósc ±äÁ¿£¬ ·ñÔòÓû§»¹ÊÇ¿ÉÒÔ´ÓÆäËûÖ÷»úÉÏÌύʹÓöà·Ý¸±±¾µÄÈÎÎñ¡£
¡¡¡¡ÏÂÃæÊÇÒ»¸öÀý×Ó¡£ Õâ¸öÊÇ /etc/printcap ÎļþÔÚÖ÷»ú rose ÉÏ¡£ ´òÓ¡»ú rattan ·Ç³£ÇáÏУ¬ ËùÒÔÎÒÃǽ«ÔÊÐí¶à·Ý¸±±¾£¬ µ«ÊǼ¤¹â´òÓ¡»ú bamboo ÔòÓÐЩæ£¬ ËùÒÔÎÒÃǽûÖ¹¶à·Ý¸±±¾£¬ ͨ¹ýÔö¼Ó sc ±äÁ¿£º
# # /etc/printcap for host rose - restrict multiple copies on bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
¡¡¡¡ÏÖÔÚ£¬ ÎÒÃÇ»¹ÐèÒªÔö»ú sc ±äÁ¿ÔÚÖ÷»ú orchid µÄ /etc/printcap ÎļþÖÐ (˳±ãÎÒÃÇÒ²½ûÖ¹´òÓ¡»ú teak ¶à·Ý´òÓ¡) £º
# # /etc/printcap for host orchid - no multiple copies for local # printer teak or remote printer bamboo teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
¡¡¡¡Í¨¹ýʹÓà sc ±äÁ¿£¬ ÎÒÃÇ×èÖ¹ÁË lpr
-#
ÃüÁîµÄʹÓ㬠µ«ÈÔȻûÓнûÖ¹Óû§¶à´ÎÔËÐÐ lpr(1) £¬
»òÕß¶à´ÎÌá½»ÈÎÎñÖÐͬÑùµÄÎļþ£¬ ÏñÏÂÃæÕâÑù£º
% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
¡¡¡¡ÕâÀïÓкܶàÖÖ·½·¨¿ÉÒÔ×èÖ¹ÕâÖÖÐÐΪ (°üÀ¨ºöÂÔËü)£¬ ²¢ÇÒÊÇÃâ·ÑµÄ¡£
¡¡¡¡Äú¿ÉÒÔ¿ØÖÆË¿ÉÒÔ´òÓ¡µ½ÄĄ̈´òÓ¡»úͨ¹ý UNIX® µÄ×é»úÖÆºÍÎļþ /etc/printcap ÖÐµÄ rg ±äÁ¿¡£ Ö»Òª°Ñ¿ÉÒÔ·ÃÎÊ´òÓ¡»úµÄÓû§·Å½øÊʵ±µÄ×éÖУ¬ È»ºóÔÚ rg ±äÁ¿ÖÐдÉÏ×éµÄÃû×Ö¡£
¡¡¡¡Èç¹ûÕâ×éÒÔÍâµÄÓû§ (°üÀ¨ root) ÊÔͼ´òÓ¡µ½±»ÏÞÖÆµÄ´òÓ¡»ú£¬½«»áµÃµ½ÕâÑùµÄÌáʾ£º
lpr: Not a member of the restricted group
¡¡¡¡ÏñʹÓà sc (½ûÖ¹¶à·Ý¸±±¾) ±äÁ¿Ò»Ñù£¬ ÄúÐèÒªÖ¸¶¨ rg ÔÚÔ¶³ÌͬÑù¶Ô´òÓ¡»úÓзÃÎÊÏÞÖÆµÄÖ÷»úÉÏ£¬ Èç¹ûÄú¸Ð¾õºÏÊʵϰ (²Î¿¼ °²×°ÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú ÕâÒ»½Ú)¡£
¡¡¡¡±ÈÈ磬 ÎÒÃǽ«ÈÃÈκÎÈ˶¼¿ÉÒÔ·ÃÎÊ´òÓ¡»ú rattan£¬ µ«Ö»ÓÐÔÚ artists ×éÖеÄÈË¿ÉÒÔʹÓôòÓ¡»ú bamboo¡£ ÕâÀïÊÇÀàËÆµÄÖ÷»ú rose É쵀 /etc/printcap Îļþ£º
# # /etc/printcap for host rose - restricted group for bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
¡¡¡¡Let us leave the other example /etc/printcap file (for the host orchid) alone. Of course, anyone on orchid can print to bamboo. It might be the case that we only allow certain logins on orchid anyway, and want them to have access to the printer. Or not.
×¢Òâ: ÕâÀïÿ̨½öÄÜÓÐÒ»¸öÏÞÖÆµÄ×é¡£
¡¡¡¡Èç¹ûÄúÓкܶàÓû§·ÃÎÊ´òÓ¡»ú£¬ ¿ÉÄÜÐèÒª¶ÔÓû§¿ÉÒÔÌá½»µÄÎļþ³ß´çÉèÖÃÒ»¸öÉÏÏÞ¡£ ±Ï¾¹£¬ ÎļþϵͳÖкǫ́´òÓ¡¶ÓÁÐĿ¼µÄ¿Õ¼äÊÇÓÐÏ޵ģ¬ ÄúÐèÒª±£Ö¤ÕâÀïÓпռäÀ´´æ·ÅÆäËûÓû§µÄÈÎÎñ¡£
¡¡¡¡LPD ÔÊÐíͨ¹ýʹÓà mx ±äÁ¿À´ÏÞÖÆÈÎÎñÖÐÎļþµÄ×î´ó×Ö½ÚÊý£¬ ·½·¨ÊÇÖ¸¶¨µ¥Î»Îª¿éµÄ BUFSIZ Êý£¬ ÿ¿é±íʾ 1024 ×Ö½Ú¡£ Èç¹ûÔÚÕâ¸ö±äÁ¿µÄÖµÊÇ 0£¬ Ôò±íʾ²»½øÐÐÏÞÖÆ£» ²»¹ý£¬ Èç¹û²»Ö¸¶¨ mx ±äÁ¿µÄ»°£¬ Ôò»áʹÓÃĬÈÏÖµ 1000 ¿é¡£
×¢Òâ: Õâ¸öÏÞÖÆÊǶÔÓÚÈÎÎñÖÐ Îļþ µÄ£¬ ¶ø ²»ÊÇ ÈÎÎñ×ܹ²µÄ´óС¡£
¡¡¡¡LPD ²»»á¾Ü¾ø±ÈÏÞÖÆ´óС´óµÄÎļþ¡£ µ«ËüÊǽ«ÏÞÖÆ´óСÒÔÄڵIJ¿·ÖÅÅÈë¶ÓÁУ¬ ²¢ÇÒ´òÓ¡³öÀ´µÄÖ»ÓÐÕâЩ¡£ ʣϵIJ¿·Ö½«±»¶ªÆú¡£ Õâ¸öÐÐΪÊÇ·ñÕýÈ·»¹ÐèÌÖÂÛ¡£
¡¡¡¡ÈÃÎÒÃÇÀ´ÎªÀý×Ó´òÓ¡»ú rattan ºÍ bamboo Ôö¼ÓÏÞÖÆ¡£ ÓÉÓÚÄÇЩ artists µÄ PostScript Îļþ¿ÉÄÜ»áºÜ´ó£¬ ÎÒÃǽ«ÏÞÖÆ´óСΪ 5 Õ××Ö½Ú¡£ ÎÒÃǽ«²»¶Ô´¿Îı¾ÐÐʽ´òÓ¡»ú×öÏÞÖÆ£º
# # /etc/printcap for host rose # # # No limit on job size: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:mx#0:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: # # Limit of five megabytes: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
¡¡¡¡Í¬Ñù£¬ ÏÞÖÆÖ»¶Ô±¾µØÓû§Æð×÷ÓᣠÈç¹ûÉèÖÃÁËÔÊÐíÔ¶³ÌÓû§Ê¹ÓÃÄúµÄ´òÓ¡»ú£¬ Ô¶³ÌÓû§½«²»»áÊܵ½ÕâЩÏÞÖÆ¡£ ÄúÒ²ÐèÒªÖ¸¶¨ mx ±äÁ¿ÔÚÔ¶³ÌÖ÷»úµÄ /etc/printcap ÎļþÖС£ ²Î¼û °²×°ÔÚÔ¶³ÌÖ÷»úÉϵĴòÓ¡»ú ÕâÒ»½ÚÀ´µÃµ½¸ü¶àÓйØÔ¶³Ì´òÓ¡µÄÐÅÏ¢¡£
¡¡¡¡³ý´ËÖ®Í⣬ »¹ÓÐÁíÒ»ÖÖÏÞÖÆÔ¶³ÌÈÎÎñ´óСµÄ·½·¨£» ²Î¼û ÏÞÖÆÔ¶³ÌÖ÷»ú´òÓ¡ÈÎÎñ¡£
¡¡¡¡LPD ºǫ́´òӡϵͳÌṩÁ˶àÖÖ·½·¨À´ÏÞÖÆ´ÓÔ¶³ÌÖ÷»úÌá½»µÄÈÎÎñ£º
Äú¿ÉÒÔ¿ØÖƱ¾µØ LPD ½ÓÊÕÄĄ̈Զ³ÌÖ÷»ú·¢À´µÄÇëÇó£¬ Í¨¹ý /etc/hosts.equiv ÎļþºÍ /etc/hosts.lpd Îļþ¡£ LPD ²é¿´ÊÇ·ñµ½À´µÄÈÎÎñÇëÇóÀ´×Ô±»ÕâÁ½¸öÎļþÖÐÁгöµÄÖ÷»ú¡£ Èç¹ûûÓУ¬ LPD »á¾Ü¾øÕâ¸öÇëÇó¡£
ÕâЩÎļþµÄ¸ñʽ·Ç³£¼òµ¥£º ÿÐÐÒ»¸öÖ÷»úÃû¡£ ×¢Òâ /etc/hosts.equiv ÎļþÒ²±» ruserok(3) ÐÒéʹÓ㬠²¢Ó°Ïì×Å rsh(1) and rcp(1) µÈ³ÌÐò£¬ ËùÒÔҪСÐÄ¡£
¾Ù¸öÀý×Ó£¬ ÏÂÃæÊÇ /etc/hosts.lpd ÎļþÔÚÖ÷»ú rose ÉÏ£º
orchid violet madrigal.fishbaum.de
Òâ˼ÊÇÖ÷»ú rose ½«½ÓÊÕÀ´×Ô orchid£¬ violet£¬ ºÍ madrigal.fishbaum.de µÄÇëÇó¡£ Èç¹ûÈÎºÎÆäËûµÄÖ÷»úÊÔͼ·ÃÎÊÖ÷»ú rose µÄ LPD£¬ ÈÎÎñ½«±»¾Ü¾ø¡£
Äú¿ÉÒÔ¿ØÖƺǫ́´òÓ¡¶ÓÁÐĿ¼ÐèÒª±£Áô¶àÉٿռ䡣 ½¨Á¢Ò»¸ö½Ð×ö minfree µÄÎļþÔÚºǫ́´òÓ¡¶ÓÁÐĿ¼ÏÂΪ±¾µØ´òÓ¡»ú¡£ ÔÚÕâ¸öÎļþÖвåÈëÒ»¸öÊý×ÖÀ´´ú±í¶àÉÙ´ÅÅÌ¿éÊý (512 ×Ö½Ú) µÄÊ£Óà¿Õ¼äÀ´½ÓÊÕÔ¶³ÌÈÎÎñ¡£
ÕâÈÃÄú¿ÉÒÔ±£Ö¤Ô¶³ÌÓû§²»»áÌîÂúÄúµÄÎļþϵͳ¡£ ÄúÒ²¿ÉÒÔÓÃËüÀ´¸ø±¾µØÓû§Ò»¸öÓÅÏÈ£º ËûÃÇ¿ÉÒÔÔÚ´ÅÅÌÊ£Óà¿Õ¼äµÍÓÚ minfree ÎļþÖеÄÖ¸¶¨ÖµºóÈÔÈ»¿ÉÒÔÌá½»ÈÎÎñ¡£
±ÈÈ磬 ÈÃÎÒÃÇÔö¼ÓÒ»¸ö minfree ÎļþΪ´òÓ¡»ú bamboo¡£ ÎÒÃǼì²é /etc/printcap ÎļþÀ´ÕÒµ½Õâ¸ö´òÓ¡»úµÄºǫ́´òÓ¡¶ÓÁÐĿ¼£» ÕâÀïÊÇ´òÓ¡»ú bamboo µÄ¼Ç¼£º
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyu5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
ºǫ́´òÓ¡¶ÓÁÐĿ¼ÔÚ sd ±äÁ¿Öиø³ö¡£ ÎÒÃÇÉèÖà 3 Õ××Ö½Ú (6144 ´ÅÅÌ¿é) ΪÎļþϵͳÉϱØÐë´æÔÚµÄ×ܹ²Ê£Óà¿Õ¼ä£¬ Èà LPD ¿ÉÒÔ½ÓÊÜÔ¶³ÌÈÎÎñ£º
# echo 6144 > /var/spool/lpd/bamboo/minfree
Äú¿ÉÒÔ¿ØÖÆÄÄЩԶ³ÌÓû§¿ÉÒÔ´òÓ¡µ½±¾µØ´òÓ¡»ú£¬ ͨ¹ýÖ¸¶¨ rs ±äÁ¿ÔÚ /etc/printcap ÎļþÖС£ µ± rs ³öÏÖÔÚÒ»¸ö±¾µØ´òÓ¡»úµÄ¼Ç¼ÖÐʱ£¬ LPD ½«½ÓÊÕÀ´×ÔÔ¶³ÌÖ÷»ú ²¢ ÔÚ±¾µØÓÐͬÑùµÇ¼ÃûµÄÓû§Ìá½»µÄÈÎÎñ¡£ ·ñÔò£¬ LPD »á¾Ü¾øÕâ¸öÈÎÎñ¡£
Õâ¸ö¹¦ÄÜÔÚÒ»¸ö (±ÈÈç) ÓÐÐí¶à²¿ÃʲÏíÒ»¸öÍøÂçµÄ»·¾³ÖÐÌØ±ðÓÐÓ㬠²¢ÇÒÓÐЩÓû§¿ÉÒÔÔ½¹ý²¿Ãŵı߽硣 ͨ¹ýΪËûÃÇÔÚÄúµÄϵͳÉϽ¨Á¢Õʺţ¬ ËûÃÇ¿ÉÒÔËûÃÇ×Ô¼ºµÄ²¿ÃŵÄϵͳÀïʹÓÃÄúµÄ´òÓ¡»ú¡£ Èç¹û Ö» ÔÊÐíËûÃÇÄúµÄ´òÓ¡»ú£¬ ¶ø²»ÊÇÄúµÄ¼ÆËã»ú×ÊÔ´£¬ Äú¿ÉÒÔ¸øËûÃÇ ¡°ÏóÕ÷¡± ÕÊ»§£¬ ²»´øÖ÷Ŀ¼²¢ÇÒÉèÖÃÒ»¸öûÓÃµÄ shell £¬ ±ÈÈç /usr/bin/false¡£
¡¡¡¡µ±È»£¬ ÄãÐèÒª¶Ô´òÓ¡¸¶·Ñ¡£ Ϊʲô²»£¿ Ö½ÕźÍīˮ¶¼ÐèÒª»¨Ç®µÄ¡£ ²¢ÇÒÕâÀﻹÓÐά»¤µÄ·ÑÓà ©¤©¤ ´òÓ¡»úÊÇÓɺܶಿ¼þ×é×°³ÉµÄ£¬ ²¢ÇÒÁã¼þ»á»µµô¡£ Äú¿ÉÒÔ¼ì²éÄúµÄ´òÓ¡»ú£¬ ʹÓÃÐÎʽ£¬ ºÍά»¤·ÑÓÃÀ´µÃ³öÿҳ (»òÕßÿ³ß£¬ ÿÃ×£¬ »òÕßÿʲô) µÄ·ÑÓᣠÏÖÔÚ£¬ ÄúÔõÑùÆô¶¯´òÓ¡¼ÇÕÊÄØ£¿
¡¡¡¡ºÃÁË£¬ »µÏûÏ¢ÊÇ LPD ºǫ́´òӡϵͳÔÚÕâ¸ö²¿·ÖûÓÐÌṩºÜ¶à°ïÖú¡£ ¼ÇÕÊÊÇÒ»¸ö¶ÔʹÓõĴòÓ¡»úµÄÖÖÀ࣬ ´òÓ¡µÄ¸ñʽ£¬ ºÍ ÄúµÄ ÔÚ¶Ô´òÓ¡»úµÄʹÓüƷѵÄÐèÇóÒÀÀµÐԺܸߵġ£
¡¡¡¡ÒªÊµÏÖ¼ÇÕÊ£¬ Äú±ØÐë¸ü¸Ä´òÓ¡»úµÄÎı¾¹ýÂËÆ÷ (¶Ô´¿Îı¾ÈÎÎñ¼Ç·Ñ) ºÍת»»¹ýÂËÆ÷ (¶ÔÆäËû¸ñʽµÄÎļþ¼Æ·Ñ)£¬ Ҫͳ¼ÆÒ³Êý»òÕß²éѯ´òÓ¡Á˶àÉÙÒ³µÄ»°¡£ Äú²»¿ÉÒÔͨ¹ýʹÓüòµ¥µÄÊä³ö¹ýÂËÆ÷À´ÌÓÍѼƷѣ¬ ÒòΪËü²»ÄܽøÐмÇÕÊ¡£ ²Î¼û ¹ýÂËÆ÷ Õâ½Ú¡£
¡¡¡¡Í¨³££¬ ÓÐÁ½ÖÖ·½·¨À´½øÐмÇÕÊ£º
¶¨ÆÚ¼ÇÕÊ ÊǸü³£Óõķ½·¨£¬ ¿ÉÄÜÒòΪËü¸ü¼òµ¥¡£ ÎÞÂÛºÏÊʺÎÈË´òÓ¡Ò»¸öÈÎÎñ£¬ ¹ýÂËÆ÷¶¼½«¼Ç¼Óû§Ãû£¬ Ö÷»úÃû£¬ ºÍ´òÓ¡µÄÒ³Êýµ½Ò»¸ö¼ÇÕÊÎļþ¡£ ÿ¸öÔ£¬ ѧÆÚ£¬ Ä꣬ »òÕßÈκÎÄúÏëÉ趨µÄʱ¼ä¶Î£¬ ÊÕ¼¯ÕâЩ²»Í¬´òÓ¡»úÉϵļÇÕÊÎļþ£¬ °´Óû§¶Ô´òÓ¡µÄÒ³Êý½øÐнáË㣬 ²¢¶ÔʹÓýøÐи¶·Ñ¡£ È»ºóɾµôËùÓмǼÎļþ£¬ ¿ªÊ¼Ò»¸öеļƷÑÖÜÆÚ¡£
ʵʱ¼ÇÕÊ ²»Ì«³£Ó㬠¿ÉÄÜÒòΪËü±È½ÏÄÑ¡£ ÕâÖÖ·½·¨ÈùýÂËÆ÷¶ÔÓû§µÄ´òÓ¡½øÐÐʵʱµÄ¼ÇÕÊ¡£ Ïñ´ÅÅÌÅä¶î£¬ ¼ÇÕÊÊÇʵʱµÄ¡£ Äú¿ÉÒÔ×éÖ¯Óû§´òÓ¡µ±ËûÃǵÄÕÊ»§³¬¶îµÄʱºò£¬ ²¢ÇÒ¿ÉÄÜÌṩһÖÖ·½·¨ÈÃÓû§¼ì²é²¢µ÷ÕûËûÃÇµÄ ¡°´òÓ¡Åä¶î¡£¡± µ«Õâ¸ö·½·¨ÐèҪһЩÊý¾Ý¿â´úÂëÀ´¸ú×ÙÓû§ºÍËûÃǵÄÅä¶î¡£
¡¡¡¡LPD ºǫ́´òӡϵͳ¶ÔÁ½ÖÖ·½·¨¶¼Ö§³ÖÇҺܼòµ¥£º ËùÒÔÄúÐèÒªÌṩ¹ýÂËÆ÷ (´ó¶àÊýʱºò)£¬ »¹ÒªÌṩ¼ÇÕÊ´úÂë¡£ µ«ÕâºÃµÄ·½ÃæÊÇ£º Äú¿ÉÒÔÓзdz£Áé»îµÄ¼ÇÕÊ·½·¨¡£ ±ÈÈ磬 Äú¿ÉÒÔÑ¡ÔñʹÓý׶μÇÕÊ»¹ÊÇʵʱ¼ÇÕÊ¡£ Äú¿ÉÒÔÑ¡Ôñ¼Ç¼ÄÄЩÐÅÏ¢£º Óû§Ãû£¬ Ö÷»úÃû£¬ ÈÎÎñÀàÐÍ£¬ ´òÓ¡Ò³Êý£¬ ʹÓÃÁ˶àÉÙÆ½·½³ßµÄÖ½£¬ ÈÎÎñ´òÓ¡Á˶೤ʱ¼ä£¬ µÈµÈ¡£ Äú¿ÉÒÔͨ¹ýÐ޸ĹýÂËÆ÷À´´æ´¢ÕâЩÐÅÏ¢¡£
¡¡¡¡FreeBSD °üº¬Á½¸ö¿ÉÒÔÈÃÄúÁ¢¿Ì¿ÉÒÔ½¨Á¢Æð¼òµ¥µÄ½×¶Î¼ÇÕʵijÌÐò¡£ ËüÃÇÊÇÎı¾¹ýÂËÆ÷ lpf£¬ ÔÚ lpf£º Ò»¸öÎı¾¹ýÂËÆ÷ Õâ½ÚÖÐÃèÊö£¬ ºÍ pac(8)£¬ Ò»¸öÊÕ¼¯²¢Í³¼Æ´òÓ¡»ú¼ÇÕÊÎļþÖмǼµÄ³ÌÐò¡£
¡¡¡¡ÏñÔÚÇ°ÃæÕ½ÚÌáµ½µÄ¹ýÂËÆ÷Ò»Ñù (¹ýÂËÆ÷)£¬ LPD Æô¶¯Îı¾»òÕßת»»¹ýÂËÆ÷²¢ÔÚ¹ýÂËÆ÷ÃüÁîÐÐÀï´øÉϼÇÕÊÎļþµÄÃû×Ö¡£ ¹ýÂËÆ÷¿ÉÒÔʹÓÃÕâ¸ö²ÎÊýÖªµÀ¸ÃÍùÄÄд¼ÇÕʼǼ¡£ Õâ¸öÎļþµÄÃû×ÖÀ´×ÔÓÚ af ±äÁ¿ÔÚ /etc/printcap ÎļþÀ ²¢ÇÒÈç¹ûûÓÐÖ¸¶¨¾ø¶Ô·¾¶£¬ ÔòĬÈÏÊÇÏà¶ÔÓÚºǫ́´òÓ¡¶ÓÁÐĿ¼µÄ¡£
¡¡¡¡LPD Æô¶¯ lpf ´ø×ÅÒ³¿íºÍÒ³³¤µÄ²ÎÊý (ͨ¹ý pw ºÍ pl ±äÁ¿)¡£ lpf ʹÓÃÕâЩ²ÎÊýÀ´Åж¨½«Ê¹ÓöàÉÙÕÅÖ½¡£ ÔÚÎļþ·¢Ë͵½´òÓ¡»úÖ®ºó£¬ Ëü¾Í»áÔÚ¼ÇÕÊÎļþÖÐдÈë¼Ç¼¡£ ¼Ç¼ÏñÏÂÃæÕâ¸öÑù×Ó£º
2.00 rose:andy 3.00 rose:kelly 3.00 orchid:mary 5.00 orchid:mary 2.00 orchid:zhang
¡¡¡¡ÄúÓ¦¸ÃÈÃÿ¸ö´òÓ¡»ú¶¼Ê¹ÓÃÒ»¸ö¶ÀÁ¢µÄ¼ÇÕÊÎļþ£¬ Ïñ lpf ¾ÍûÓÐÄÚ½¨ÎļþËøÂß¼£¬ ÕâÑùÁ½¸ö lpf ¿ÉÄܻᷢÉú±Ë´Ë¼Ç¼»ìºÏµÄÇé¿ö£¬ Èç¹ûËüÃÇͬʱҪÔÚͬһ¸öÎļþдÈëÄÚÈݵÄʱºò¡£ Ò»¸ö×î¼òµ¥µÄ±£Ö¤Ã¿¸ö´òÓ¡»ú¶¼Ê¹ÓÃÒ»¸ö¶ÀÁ¢µÄ¼ÇÕÊÎļþµÄ·½·¨¾ÍÊǽ« af=acct дÔÚ /etc/printcap ÎļþÖС£ È»ºó£¬ ÿ¸ö´òÓ¡»úµÄ¼ÇÕÊÎļþ¶¼»áÔÚÕą̂´òÓ¡»úµÄºǫ́´òÓ¡¶ÓÁÐĿ¼ÖУ¬ ÎļþµÄÃû×Ö½Ð×ö acct¡£
¡¡¡¡µ±Äú×¼±¸¶ÔÓû§µÄ´òÓ¡½øÐÐÊÕ·Ñʱ£¬ ÔËÐÐ pac(8) ³ÌÐò¡£ ֻҪת»»µ½ÒªÊÕ¼¯ÐÅÏ¢µÄÕą̂´òÓ¡»úµÄºǫ́´òÓ¡¶ÓÁÐĿ¼£¬ È»ºóÊäÈë pac¡£ Äú½«»áµÃµ½Ò»¸öÃÀÔª¼Æ·ÑµÄÕªÒªÏñÏÂÃæÕâÑù£º
Login pages/feet runs price orchid:kelly 5.00 1 $ 0.10 orchid:mary 31.00 3 $ 0.62 orchid:zhang 9.00 1 $ 0.18 rose:andy 2.00 1 $ 0.04 rose:kelly 177.00 104 $ 3.54 rose:mary 87.00 32 $ 1.74 rose:root 26.00 12 $ 0.52 total 337.00 154 $ 6.74
¡¡¡¡ÕâЩÊÇ pac(8) ÐèÒªµÄ²ÎÊý£º
-P´òÓ¡»ú
ÄĄ̈ ´òÓ¡»ú Òª½áÕÊ¡£ Õâ¸öÑ¡Ïî½öÔÚÓà af ±äÁ¿ÔÚ /etc/printcap ÎļþÖÐÖ¸¶¨Á˾ø¶Ô·¾¶µÄÇé¿öÏÂÆð×÷Óá£
-c
ÒÔ½ð¶îÀ´ÅÅÐòÊä³öÀ´´úÌæÒÔÓû§Ãû×Ö×ÖĸÅÅÐò¡£
-m
ºöÂÔ¼ÇÕÊÎļþÖеÄÖ÷»úÃû¡£ ´øÉÏÕâ¸öÑ¡Ï Óû§ smith ÔÚÖ÷»ú alpha ÉÏÓëͬÑùµÄÓû§ smith ÔÚÖ÷»ú gamma ÉÏÒ»Ñù¡£ ²»´øÕâ¸öÑ¡ÏîµÄ»°£¬ ËûÃÇÔòÊDz»Í¬µÄÓû§¡£
-pµ¥¼Û
ʹÓà price ×÷Ϊÿҳ»òÿ³ßÃÀÔªµÄµ¥¼ÛÀ´Ìæ´ú pc ±äÁ¿Ö¸¶¨µÄµ¥¼ÛÔÚ /etc/printcap ÎļþÖУ¬ »òÕßÁ½·Ö (ĬÈÏ)¡£ price ¿ÉÒÔÓÃÒ»¸ö¸¡µãÊýÀ´Ö¸¶¨¡£
-r
·´ÏòÅÅÐò¡£
-s
½¨Á¢Ò»¸ö¼ÇÕÊÕªÒªÎļþ£¬ ²¢Çҽض̼ÇÕÊÎļþ¡£
Ö»´òÓ¡Ö¸¶¨ Ãû×Ö Óû§µÄ¼ÇÕÊÐÅÏ¢¡£
¡¡¡¡ÔÚ pac(8) ĬÈϲúÉúµÄÕªÒªÖУ¬
¿ÉÒÔ¿´µ½ÔÚ²»Í¬Ö÷»úÉϵÄÿ¸öÓû§´òÓ¡Á˶àÉÙÒ³¡£ Èç¹ûÔÚÄúÕâÀ Ö÷»ú²»¿¼ÂÇ
(ÒòΪÓû§¿ÉÒÔʹÓÃÈκÎÖ÷»ú)£¬ ÔËÐÐ pac -m
£¬ À´µÃµ½ÏÂÃæµÄÕªÒª£º
Login pages/feet runs price andy 2.00 1 $ 0.04 kelly 182.00 105 $ 3.64 mary 118.00 35 $ 2.36 root 26.00 12 $ 0.52 zhang 9.00 1 $ 0.18 total 337.00 154 $ 6.74
¡¡¡¡ÒªÒÔÃÀÔª¼ÆËãÓ¦¸¶Ç®Êý£¬ pac(8) Ö¸¶¨ pc ±äÁ¿ÔÚ /etc/printcap ÎļþÖÐ (ĬÈÏÊÇ 200£¬
»òÕß 2 ·Öÿҳ). Õâ¸ö²ÎÊýµÄµ¥Î»ÊǰٷÖÖ®Ò»·Ö£¬ ÔÚÕâ¸ö±äÁ¿ÖÐÖ¸¶¨Ã¿Ò³»òÕßÿ³ßµÄ¼Û¸ñ¡£
Äú¿ÉÒÔ¸²¸ÇÕâ¸öÖµµ±ÔËÐÐ pac(8) ´ø×ŲÎÊý -p
µÄʱºò¡£ ²ÎÊý -p
µÄµ¥Î»ÊÇÃÀÔª£¬
¶ø²»ÊǰٷÖÖ®Ò»·Ö¡£ ÀýÈ磬
# pac -p1.50
¡¡¡¡É趨ÿҳµÄ¼Û¸ñÊÇ 1 ÃÀÔª 5 ÃÀ·Ö¡£ Äú¿ÉÒÔͨ¹ýÕâ¸öÑ¡ÏîÀ´´ïµ½Ä¿±êÀûÈó¡£
¡¡¡¡×îÖÕ£¬ ÔËÐÐ pac -s
½«´æ´¢ÕâЩÐÅÏ¢ÔÚÒ»¸ö¼ÇÕÊÎļþÀ ÎļþÃûºÍ´òÓ¡»úÕÊ»§µÄÃû×ÖÏàͬ£¬ µ«ÊÇ´ø×Å _sum µÄºó׺¡£ È»ºó½Ø¶Ì¼ÇÕÊÎļþ¡£ µ±ÄúÔÙ´ÎÔËÐÐ pac(8) µÄʱºò£¬
ËüÔٴζÁÈ¡¼ÇÕÊÎļþÀ´µÃµ½³õʼµÄ×ܼƣ¬ È»ºóÔÚ¼ÇÕÊÎļþÖÐÔö¼ÓÐÅÏ¢¡£
¡¡¡¡ÎªÁ˽øÐÐÔ¶³ÌµÄ¾«È·¼ÇÕÊ£¬ ÐèÒªÅжÏÒ»¸öÈÎÎñ½«»áÏûºÄ¶àÉÙÕÅÖ½¡£ ÕâÊÇ´òÓ¡¼ÇÕÊÎÊÌâµÄ¹Ø¼ü¡£
¡¡¡¡¶ÔÓÚ´¿Îı¾ÈÎÎñ£¬ Õâ¸öÎÊÌâ²»ÊÇÌ«Äѽâ¾ö£º ¶ÔÈÎÎñÖеÄÐÐÊý½øÐмÆÊýÈ»ºóÓë´òÓ¡»úÖ§³ÖµÄÿҳÐÐÊý½øÐбȽϡ£ ±ðÍüÁËÒ²¶ÔÌíÓ¡µÄÐУ¬ »òÕߺܳ¤µÄÂß¼ÉϵÄÒ»Ðе«ÔÚ´òÓ¡»úÉÏ»áÕÛ³ÉÁ½ÐеÄÕâÀà½øÐмÇÕÊ¡£
¡¡¡¡Îı¾¹ýÂËÆ÷ lpf (ÔÚ lpf£ºÒ»¸öÎı¾¹ýÂËÆ÷ Õâ½ÚÖнéÉÜ) »áÔÚ¼ÇÕÊʱ¿¼ÂÇÕâЩÎÊÌâ¡£ Èç¹ûÕýÔÚ±àдһ¸ö¿ÉÒÔ½øÐмÇÕʵÄÎı¾¹ýÂËÆ÷£¬ Äú¿ÉÄÜÐèÒª²é¿´ lpf µÄÔ´´úÂë¡£
¡¡¡¡ÔõÑù´¦ÀíÆäËû¸ñʽµÄÎļþ£¿
¡¡¡¡ºÃ£¬ ¶ÔÓÚ DVI- µ½ -LaserJet »òÕß DVI- µ½ -PostScript ת»»£¬ ¿ÉÒÔÈÃÄúµÄ¹ýÂËÆ÷Êä³öÕï¶ÏÐÅÏ¢£¬ ¹ØÓÚ dvilj »òÕß dvips ÃüÁ ²¢ÇÒ¿´µ½¶àÉÙÒ³±»×ª»»ÁË¡£ ÄúÒ²Ðí¿ÉÒÔ¶ÔÓÚÆäËûÀàÐ͵ÄÎļþºÍת»»³ÌÐò½øÐÐÀàËÆ²Ù×÷¡£
¡¡¡¡µ«ÊÇÕâЩ·½·¨µÄÈõµã¾ÍÊÇÊÂʵÉÏ´òÓ¡»ú²¢²»ÊÇ´òÓ¡ÁËËùÓеÄÒ³¡£ ±ÈÈ磬 ¿¨Ö½£¬ ȱ »òÕßÕ¨µôÁË ©¤©¤ µ«Óû§»¹ÊÇҪΪûÓдòÓ¡µÄ²¿·Ö¸¶Ç®¡£
¡¡¡¡Äú¸ÃÔõÑù×ö£¿
¡¡¡¡Ö»ÓÐÒ»Ìõ ¿Ï¶¨ µÄ·½·¨À´½øÐÐ ¾«È· µÄ¼ÇÕÊ¡£ ¹ºÂòһ̨¿ÉÒÔ¸æËßÄúËüʹÓÃÁ˶àÉÙÖ½µÄ´òÓ¡»ú£¬ ²¢ÇÒ½«ËüÁ¬½Óµ½´®¿Ú»òÕßÍøÂçÉÏ¡£ ¼¸ºõËùÓÐ PostScript ´òÓ¡»ú¶¼Ö§³ÖÕâ¸öС¹¦ÄÜ¡£ ÆäËûÖÆÔì³§»òÆäËûÐͺÅÒ²¿ÉÒÔÓÐÕâ¸ö¹¦ÄÜ (±ÈÈç Imagen ¼¤¹âÍøÂç´òÓ¡»ú)¡£ ΪÕâЩ´òÓ¡»ú¸ü¸Ä¹ýÂËÆ÷ʹËüÔÚ´òÓ¡Íêÿ¸öÈÎÎñÖ®ºó½ÓÊÕÖ½ÕÅÓÃÁ¿£¬ ²¢ ½ö »ùÓÚÕâ¸öÖµ½øÐмÇÕÊ¡£ ²»ÐèÒª¼ÆËãÐÐÊý£¬ Ò²²»ÐèÒªÈÝÒ׳ö´íµÄÎļþ¼ì²é¡£
¡¡¡¡µ±È»£¬ ÄúÒ²×ÜÊÇ¿ÉÒÔ´ó·½µÄʹ´òÓ¡Ãâ·Ñ¡£
±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.