ABSTRACT: die grundlagen des druckens unter unix werden erklaert (lpr, lpq, psutils, a2ps, ... ) AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt drucker einrichten unter unix ist nicht immer leicht (hauptsaechlich weil die hersteller von druckern meist nur windows user direkt supporten). aber wenn ein drucker mal eingerichtet ist geht alles ganz leicht. druckereinrichtung behandel wir daher heute noch nicht. aber ein kurezr ueberlbick wie alles zuammenhaengt und dich wichtigsten anwendungsprogramme zum drucken. zu den grundlagen: hat man einen drucker der direkt am prallelport angeschlossen ist und wird dieser von einem unix treiber unterstuetzt so kann man direkt rohe daten an diesen drucker schreiben. z.b.: echo blabla > /dev/lp0 (die namen des drucker devices sind von unix zu unix leicht verschieden. im linux heisst der erste drucker /dev/lp0) dorthin schreiben darf i.a. natuerlich nur der root user. ) aber das blabla sollte dann direkt ausgedruckt werden. (ein drucker der nur ganze seiten druckt (z.b. laserdrucker) wartet dann noch auf das seitenende. das kann man ihm mit einem control-L zeichen schicken: echo ^L > /dev/lp0 (control zeichen kann man in der shell eingeben in dem man zuerst control-v drueckt und dann den control den man senden will. also z.b. control-v control-l hier) besonders bequem ist diese art zu drucken nicht. man will ja z.b. auch uebers netzwerk drucken oder wenn der drucker gerade belegt ist soll der druckauftrag zwischengespeichert ("ge-queued") werden. etc.. dazu laueft auf ein sogenannter drucker daemon (meist lpd ) es gibt inzwischen verschieden arten dieses drucker daemons (lpd, lpr-ng, cups, ...) am verbreitetsten ist aber noch der alte BSD lpd. der lpd uebernimmt jetzt das zwischenspeichern, das rauschicken der daten an das /dev/lp port. er stellt den drucker anderen computern im netz zur verfuegung und erlaubt das drucken auf andere netzwerkdrucker. weiters koenenn die daten bevor sie gedruckt werden noch durch programme aufbereitet werden (z.b. weil man daten in einem format drucken will das der drucker nicht direkt unterstuetzt.) die vorhanden drucker auf einem system sind beim BSD lpd in /etc/printcap definiert. hat man einen richtig eingerichtetn drucker so kann man dann einen druckauftrag mit dem "lpr" kommando an den lpd weitergeben. echo blabla^L | lpr das lpr druckt dabei auf den standard printer mit dem namen "lp". hat man mehrere drucker so kann man den namen des druckers angeben: echo blabla^l| lpr -Pbrother wuerde auf einem drucker mit dem namen "brother" drucken sofern dieser eingerichtet ist. mit lpq -Pbrother sieht man alle druckauftraege die zur bearbeitung in der "queue" stehen. lprm 1234 wuerde den druckauftrag mit der nummer 1234 aus der queue des standarddruckers "lp" entfernen. (man kann hier wieder mit -P einen anderen druckernamen angeben) in welchem datenformat muessen die daten sein damit sie ausgedruckt werden? das haengt vom drucker ab un davon ob der lpd so eingestellt ist dass er daten in anderen formaten in das format umwandelt dass der drucker spricht. die meisten drucker heutzutage sprechen entweder ein "laserjet" (PCL) format oder "deskjet". gute drucker koennen direkt die seitenbeschreibungssprache "postscript" verstehen. da die meisten programme im unix erwarten mit einem postscript drucker zu sprechen sollte der lpd so eingestellt sein dass er postscript daten in jedem falle drucken kann. (ein gutes programm dafuer ist "apsfilter") wir gehen im folgenden davon aus dass der lpd gut eingerichtet ist und postscript versteht. wir koennen dann mit dem befehl: lpr tiger.ps oder cat tiger.ps | lpr die datei postscript datei tiger.ps ausdrucken. (die datei tiger.ps liegt normalerweise dem programm "gs" (ghostscript) bei und sollte auf jedem unix zufinden sein. am besten "locate" benutzen. programme wie netscape, xv, etc... rufen intern das programm lpr zum drucken auf koennen aber alternativ auch in ein file drucken. dieses file ist dann ein .ps file. hat man die grafische X11 oberflaeche zur verfuegung kann man sich die postscript datein mit gv tiger.ps oder: ghostscript tiger.ps anschaun bevor man sie ausdruckt. zum ausdrucken von normalen text dateien auf einem postscript drucker ist das programm a2ps sehr zu empfehlen: a2ps -2 blabla.txt wuerde die datei blabla.txt in ein mit 2 spalten pro seite formatiertes postscript uwmandel und zum standarddrucker schicken. a2ps -2 -oblabla.ps blabla.txt wuerde die ausgabe nicht direkt zum drucker schicken sondern in die datei blabla.ps speichern. (die wir dann vor dem echten ausdrucken noch mal mit gv anschaun koennen) a2ps versucht je nach art der textdatei diese speziell fomatiert auszudrucken. (so z.b. email oder C progrmme etc..) (das kann manchmal stoerend sein. mit der option --pretty-print=text schaltet man auf normalen text ausdruck zurueck.) will man direkt aus dem mail programm mutt heraus mit der p taste drucken koennen kann man z.b. folgendes in sein .muttrc file eintragen: set print=ask-yes # ask me if I really want to print messages set print_command="/usr/bin/a2ps -=mail -2 " ebenfalls zum ausdrucken von textdatein geeignet ist enscript: enscript -oblabla.ps -2 blabla.txt (ich finde aber a2ps besser) zum interaktiven ausdrucken von bildern ist "xv" sehr praktisch. fuer webseiten kann man seinen browser verwenden. (a2ps kann bei html seiten auch netscape aufrufen um die umwandlung durchzufuehren) die GNU version von "man" (bzw. "groff") kann man pages auch schoen formatiert als postscript ausgeben: man -Tps lpr > bla.ps wuerde die manpage zum "lpr" programm in die datei bla.ps speichern. zum umgang mit postscript datein gibt es eine menge nuetzlicher tools. (das "psutils" packet ist hier besonders zu empfehlen). ich will hier kurz die wichtigsten auflisten: psnup -2 bla.ps bla2.ps macht aus einem postscript file bla.ps ein neues wobei immer 2 seitens verkleinert auf eine geschrieben werden. (aktion "rettet den regenwald") ps2pdf wandelt ps deiten in pdf um (meist aber nicht so gut wie programme die direkt pdfs erzeugen koennen) pstopdf ebenfalls. (.pdf files kannst du dir unter unix mit acroread oder xpdf ansehen) pdftops und pdf2ps wandeln pdf in ps um pstops ist ein sehr leistungsfaehgis programm um ps datein in andere umzuwandeln (kann wie psnub verkleinern aber auch seiten umordnen etc.. damit kann man sich z.b. die seiten so formatieren dass sie als kleinest "booklet" zusammenheftbar sind etc...) psselect -p 1-3,7 bla.ps bla2.ps erlaubt es einzelene seiten aus einem postscript dokument herauszufiltern. (im obigen fall die seiten 1 bis 3 und die seite 7) werden aus bla.ps gelesen und in bla2.ps gespeichert. pstoedit versucht postscript daten in editierbare vektor grafiken umzuwandeln (xfig, fig, ai, hpgl, dxf, ....) EXERCISES: * wenn du einen direkt angeschlossenen drucker hast und root bist dann versuche einige zeichen probehalber direkt auf das /dev/lp0 (o.ae.) zu schreiben. * schau dir dein /etc/printcap file an oder informier dich bei deinem sysadmin welche drucker eingerichtet sind. * drucke eine kurze textdatei direkt mit lpr * verwende lpq und lprm um einen druckjob zu loeschen. * erzeuge mit a2ps und/oder enscript postscript ausdrucke von text files (zum papierschonen am besten nicht gleich auf den drucker sondern zuerst in ein .ps file schreiben). * betrachte postscript files mit "gv" oder "ghostscript" * verwende psnup um eine postscript datei mit vielen seiten in eine umzuwandeln die nur halb soviele seiten hat. * verwende ps2pdf um eine postscript datei in ein pdf umzuwandeln. sieh dir das entstandene pdf file an. REFERENCES: man lpr lpr --help man lpq man lprm man lpd man printcap man a2ps info a2ps a2ps --help a2ps --list topics man enscript man psnup man psselect man psmerge man pstoedit man man