Siduction Forum
Siduction Forum => Scripting & Kernelhacking => Topic started by: wodga on 2014/10/07, 23:22:51
-
Ich möchte aus dolphin (kde) heraus per Rechtsklick eine oder mehrere Dateien mit icedove versenden.
Mein Skript sieht so aus: http://pastebin.com/L9uz82br (http://pastebin.com/L9uz82br)
Es funktioniert leider nur mit einer Datei. Wie übernimmt das skript auch mehrere Dateien?
-
Hi wodga,
Probier mal statt %F %N.
-
Leider funktioniert %N genausowenig.
-
Ohne das ich jetzt verstehe was horo da macht :o, aber hilft dir vielleicht das studieren des Posts Sending images from shotwell to icedove (http://forum.siduction.org/index.php?topic=4379.0) ?
-
@wodga: funktioniert der Aufruf von der Kommandozeile aus mit mehreren Anhängen?
EDIT: das habe ich noch im Netz zum Thema gefunden, vielleicht hilft es weiter http://www.kbrandt.com/2008/05/quick-tip-tunderbird-email-from-command.html
-
@bluelupo
hab jetzt nochmals gegoogelt und folgenden Befehl ausgegraben:
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\/\\//g')'"
Funktioniert! Nur leider kenne ich mich zu wenig aus um diese ganzen slashes und backslashes zu verstehen ...
-
@bluelupo
hab jetzt nochmals gegoogelt und folgenden Befehl ausgegraben:
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\/\\//g')'"
Funktioniert! Nur leider kenne ich mich zu wenig aus um diese ganzen slashes und backslashes zu verstehen ...
Hi wodga,
sieht komplizierter aus als es ist, KDE liefert in %F einen String "/pfad1/datei1 /pfad2/datei2 /pfad3/datei mit leerzeichen3"
und icedove wird in dieser Form aufgerufen: icedove -compose "attachment='/pfad1/datei1,/pfad2/datei2,/pfad3/datei mit leerzeichen3'"
Der Streameditor sed wandelt dabei " /" in ",/" um. Da aber Slash und Space spezielle Bedeutungen haben, müssen sie per Backslash maskiert (escaped) werden - und da das ganze durch die Shell geschleust wird, die den Backslash auch gesondert behandelt, muss der Backslash auch nochmal "escaped" werden, daher die doppelten \\
Dein Code hat übrigens am Ende ein "\\/" zuviel, also statt
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\/\\//g')'"
das sowas erzeugt "/pfad1/datei1,//pfad2/datei2,//pfad3/datei mit leerzeichen3"
ist es so korrekt:
Exec=icedove -compose "attachment='$(echo %F | sed 's/\\ \\//,\\//g')'"
Ciao, Martin
P.S.: Man kann sich die Sache natürlich auch einfacher machen, indem man statt des Delimiters "/" fürs Ersetzen ein anderes Zeichen nimmt, z.B. ":". Von perl kannte ich's, ist aber auch bei sed möglich.
Exec=icedove -compose "attachment='$(echo %F | sed 's: /:,/:g')'"
siehe auch: http://en.wikipedia.org/wiki/Leaning_toothpick_syndrome
-
Danke für die Ausführungen! Werd ich mal in Ruhe studieren :-)