(gelöst) drucken/druckdialog per kommandozeile

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
michaa7
Beiträge: 5035
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

(gelöst) drucken/druckdialog per kommandozeile

Beitrag von michaa7 » 14.04.2010 13:42:58

eben erstelle ich mit nano ein textdokument und stelle fest, dass ich nun einen anderen editor öffnen müßte um dies auszudrucken. Daher nun die frage: wie komme ich auf der kommandozeile am schnellsten zu einem druckdialog und/oder zum direkten druck einer textdatei?
Zuletzt geändert von michaa7 am 16.04.2010 10:01:59, insgesamt 1-mal geändert.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: drucken/druckdialog per kommandozeile

Beitrag von ThorstenS » 14.04.2010 13:51:08

Code: Alles auswählen

1. Schritt
  Herausfinden welcher Drucker im System verfügbar ist:
  lpstat -p

2. Schritt drucken
  cat $DATEI | lpr -P $DRUCKERNAME
  e.g.
  cat courierimapsubscribed | lpr -P kyocera

Benutzeravatar
Meillo
Moderator
Beiträge: 9279
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: drucken/druckdialog per kommandozeile

Beitrag von Meillo » 14.04.2010 14:04:52

Evtl. `lp' (System V Drucksystem) statt `lpr' (BSD Drucksystem) verwenden. Bei mir läuft Cups und ich drucke mit `lp' von der Kommandozeile aus.
Use ed once in a while!

michaa7
Beiträge: 5035
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: drucken/druckdialog per kommandozeile

Beitrag von michaa7 » 14.04.2010 14:55:19

Danke euch beiden.
Vom prinzip hier funktioniert das wie beschrieben, bei "lp" mit etwas anderer syntax ( cat $DATEI | lpr -d $DRUCKERNAME ).

Leider habe ich weder unter "man lpr" noch unter "man lp" eine möglichkeit gefunden, den text beim drucken umbrechen zu lassen. Geht das doch irgendwie oder prinzipbedingt nicht?
Und auch wenn's nicht mehr wirklich dazugehört: wie erzwinge ich einen automatischen zeilenumbruch mit "nano" (meinem präferierten editor)? Muß ich das immer manuell machen (bei hineinkopiertem text)?


BTW: hat vllt jemand ein kleines script, das mich nach der zu druckenden datei fragt (bei einmaliger definition des einzigen druckers im script) und loslegt?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
Meillo
Moderator
Beiträge: 9279
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: drucken/druckdialog per kommandozeile

Beitrag von Meillo » 14.04.2010 15:39:29

michaa7 hat geschrieben: Leider habe ich weder unter "man lpr" noch unter "man lp" eine möglichkeit gefunden, den text beim drucken umbrechen zu lassen. Geht das doch irgendwie oder prinzipbedingt nicht?
Das ist nicht die Aufgabe von lp/lpr und deshalb auch nicht darin enthalten. Dafür sind `fold' oder `fmt' zuständing. Schau in deren Manpages nach.

Code: Alles auswählen

fold foo | lp
BTW: hat vllt jemand ein kleines script, das mich nach der zu druckenden datei fragt (bei einmaliger definition des einzigen druckers im script) und loslegt?
Du kannst auch irgendwie den Standarddrucker setzen, dann brauchst du ihn nicht immer angeben und kannst somit lp/lpr direkt verwenden. Ich weiß nur nicht auswenig wie.

Ansonsten ein Script in der Art:

Code: Alles auswählen

#!/bin/sh
lp -d foobar "$@"
Scripte die fragen sind schlechter Stil in Unix.
Use ed once in a while!

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: drucken/druckdialog per kommandozeile

Beitrag von ThorstenS » 14.04.2010 15:44:40

Meillo hat geschrieben:
michaa7 hat geschrieben: Leider habe ich weder unter "man lpr" noch unter "man lp" eine möglichkeit gefunden, den text beim drucken umbrechen zu lassen. Geht das doch irgendwie oder prinzipbedingt nicht?
Das ist nicht die Aufgabe von lp/lpr und deshalb auch nicht darin enthalten. Dafür sind `fold' oder `fmt' zuständing. Schau in deren Manpages nach.

Code: Alles auswählen

fold foo | lp
Oder im vim einfach gqq drücken
Meillo hat geschrieben:
BTW: hat vllt jemand ein kleines script, das mich nach der zu druckenden datei fragt (bei einmaliger definition des einzigen druckers im script) und loslegt?
Du kannst auch irgendwie den Standarddrucker setzen, dann brauchst du ihn nicht immer angeben und kannst somit lp/lpr direkt verwenden. Ich weiß nur nicht auswenig wie.
den default drucker anlegen mit: lpadmin -d "Kyocera_FS-C5030N_de_duplex"
Überprüfen mittels lpstat -d

verfügbare Drucker anzeigen über lpstat -a oder lpstat -p

oder mit cups-printer-manager setzen.

Oder einfach eine ~/.cups/lpoptions erzeugen mit folgendem Inhalt:
Default Kyocera_FS-C5030N_de_duplex

und systemweit als Vorgabe wird der Drucker in der /etc/cups/lpoptions eingetragen
Meillo hat geschrieben: Ansonsten ein Script in der Art:

Code: Alles auswählen

#!/bin/sh
lp -d foobar "$@"
Scripte die fragen sind schlechter Stil in Unix.
Ich würde das auch eher als alias in der ~/.bashrc definieren alias drucken="lp -d foobar "$1"

michaa7
Beiträge: 5035
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: drucken/druckdialog per kommandozeile

Beitrag von michaa7 » 14.04.2010 18:58:48

nun, wenn ich da noch "fold" benötige, wie sieht dann das script/alias aus? Der drucker ist bereits systemweit gesetzt und dies ist mit " lpstat -d" auch überprüft. Ich wollte also zuerst nach einer datei gefragt werden (egal ob von einem script oder dem alias) welches dann den text umbricht und druckt ( fold --width=72 <diesen text> | lp $? )

@ thorsten
Ich schließe aliasse immer mit einfachen anführungszeichen ein. Ob und wie die variable eingeschlossen werden muß ist mir nicht klar. Bei deinem alias komme ich mit den anführungszeichen nicht zurecht, das sind entweder zu viele oder zu wenige. Und wie wird die variable übergeben? Werde ich gefragt oder muß ich die mit dem alias zusammen angeben, also "drucken foo"?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: drucken/druckdialog per kommandozeile

Beitrag von ThorstenS » 15.04.2010 07:40:51

anstelle des zweiten Anführungszeichen hätte es ein Backslash sein sollen - sorry.

Code: Alles auswählen

alias drucken="lp \$1"
Ich hatte zwar $1 geschrieben, aber das würde nicht mit Dateien mit Leer oder Sonderzeichen funktionieren. Also ist Meillos Tipp mit dem $@ natürlich wesentlich sauberer. Dann schliessen wir noch $@ in Anführungszeichen ein, die wir mittels backslash escapen und du bist fertig:

Code: Alles auswählen

alias drucken="lp \"\$@\""
Überprüfe das mit alias drucken.
Du rufst dann zum Drucken nur drucken DateiName auf. Klar könntest du mit Debiandialog noch ein 'echtes' Dialogfenster mit Dateiauswahl drumherumbauen, aber soweit bist du augenscheinlich noch nicht. Und schneller ist das in der Bedienung auch nicht.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: drucken/druckdialog per kommandozeile

Beitrag von ThorstenS » 15.04.2010 11:16:46

Ich hab grade nochmal deinen letzten Post gelesen. Auf das fold bin ich heute früh gar nicht eingegangen.
Schreib das in deine ~/.bashrc - dann geht das auch mit fold zusammen

Code: Alles auswählen

function drucken() {
        fold --width=72 "$@" |
        lp -d kyocera-duplex
}

michaa7
Beiträge: 5035
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: drucken/druckdialog per kommandozeile

Beitrag von michaa7 » 15.04.2010 18:31:32

danke, funktioniert so wunderbar.
Den drucker mußte ich nicht mehr definieren, da er systemweit definiert ist, so konnte ich also "-d <mein drucker>" weglassen.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Antworten