थंडरबर्ड का उपयोग करते हुए, कमांड लाइन से कोई फ़ाइल अपने नाम में अल्पविराम (,) कैसे संलग्न कर सकता है?


1

thunderbird -compose "attachment='$HOME/test test.txt'" काम करता है। thunderbird -compose "attachment='$HOME/test, test.txt'" काम नहीं करता है और एक देता है file does not exist त्रुटि संदेश।

थंडरबर्ड कमांड लाइन तर्क को संभालने के तरीके के कारण यह होना चाहिए; उदाहरण के लिए,

thunderbird -compose "to='name@mail.com',attachment='~/file.txt'"

compose तर्क अलग हो जाते हैं , और यह होना चाहिए कि क्यों एक होने , फ़ाइल नाम में चीजों को तोड़ता है। हालाँकि, मैं फ़ाइल नाम में अल्पविराम से "बचने" का तरीका नहीं सोच सकता।

ध्यान दें:

  • थंडरबर्ड 3+ में, प्रोटोकॉल का उपयोग करते हुए file:// किसी भी अधिक आवश्यक नहीं है।

दोनों

thunderbird -compose "attachment='$HOME/test test.txt'"

तथा

thunderbird -compose "attachment='file://$HOME/test test.txt'"

काम।

thunderbird -compose "attachment='$HOME/test, test.txt'"

thunderbird -compose "attachment='file://$HOME/test, test.txt'"

काम करता है।


1
एक अनुमान पर मैं भागने की कोशिश करने का सुझाव दूंगा \, या url सांकेतिक शब्दों में बदलना %2C यह।
Etan Reisner

भागने अल्पविराम ( \, ) काम नहीं करता; यह वही देता है file does not exist error। किरदार , तथा % दोनों फ़ाइल नाम में वैध हैं तो मुझे नहीं लगता कि URL एन्कोडिंग एक विकल्प है क्योंकि test,test तथा test%2Ctest दोनों वैध फ़ाइल नाम हैं।
Omid

2
जबकि सच है test%2Ctest बन जाएगा test%252Ctest जब url एन्कोड हो गया। यह कोशिश करने लायक है (इसे स्पष्ट की आवश्यकता हो सकती है file:// काम करने के लिए उपसर्ग मुझे लगता है लेकिन मुझे नहीं पता)।
Etan Reisner

रैपर स्क्रिप्ट में एक बग की तरह लगता है।
Ignacio Vazquez-Abrams

जवाबों:


0

@Etan Reisner (ऊपर मेरे प्रश्न के लिए एक टिप्पणी में) द्वारा सुझाए गए फ़ाइल नामों को URL एनकोडिंग के विचार का उपयोग करते हुए, मैंने एक समाधान हैक किया जिसे मैं समुदाय में दूसरों के लाभ के लिए यहां रिकॉर्ड करता हूं। नीचे दिए गए स्निपेट में, ${filename} संलग्न करने के लिए पूर्ण फ़ाइल नाम (पथ सहित) है।

#!/bin/bash

# "A safe way to URL encode is to encode every single byte, even
# those that would've been allowed." This is done by first
# converting every byte to its 2-byte hex code using `hexdump' and
# then adding the prefix `%' to each 2-byte hex code pair using
# `sed'.
#
# Attribution: https://stackoverflow.com/a/7506695

filenameurlencoded=$(echo -ne "${filename}" | \
hexdump -v -e '/1 "%02x"' | \
sed 's/\(..\)/%\1/g')

filenamenopath="$(basename ${filename})"
emailsubject="${filenamenopath}"
emailbody="\"${filenamenopath}\" is attached."
emailattachment="file:///${filenameurlencoded}"

# Syntax of -compose command line option: double-quotes enclose
# full comma-separated list of arguments passed to -compose,
# whereas single quotes are used to group items for the same
# argument.
#
# Attribution: http://kb.mozillazine.org/Command_line_arguments_(Thunderbird)

thunderbird -compose "subject='${emailsubject}',body='${emailbody}',attachment='${emailattachment}'"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.