फ़ाइल पथ को URI को बश में बदलें


11

मैं कमांड-लाइन में एक फ़ाइल पथ को URI में कैसे बदल सकता हूं?

उदाहरण :

/home/MHC/directory with spaces and ümläuts

सेवा

file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts


जवाबों:


5

इसका उपयोग करने का एक तरीका है urlencode(इसे Ubuntu पर इंस्टॉल करें sudo apt-get install gridsite-clients)।

urlencode -m "$filepath"

एक URI के लिए पथ परिवर्तित करेगा। URI का "फ़ाइल: //" भाग छोड़ दिया जाएगा, लेकिन आप इसे आसानी से बैश वन-लाइनर के माध्यम से जोड़ सकते हैं:

uri=$(urlencode -m "$1"); echo "file://$uri"

या सीधे

echo "file://$(urlencode -m "$1")"

या

echo -n file://; urlencode -m "$1"

संदर्भ के लिए माइकल Kjörling के लिए बहुत धन्यवाद!


उद्धरण मत भूलना! आप शायद चाहते हैं encodeduri=$(urlencode -m "$uri") के साथ $uriदोहरे उद्धरण में!
gourourf_gniourf

@gniourf_gniourf धन्यवाद, तदनुसार कोड को संशोधित किया।
ग्लूटानाट

4

आप कमांड लाइन से सीधे पर्ल मॉड्यूल URI :: फ़ाइल का उपयोग कर सकते हैं :

$ path="/home/MHC/directory with spaces and ümläuts"
$ echo $path | perl -MURI::file -e 'print URI::file->new(<STDIN>)."\n"'
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
$

1
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'पर्ल के साथ छोटा किया जा सकता है 5.10 (वर्ष 2007 से) या नया
डैनियल बॉमर

2

CentOS पर, कोई अतिरिक्त निर्भरता की आवश्यकता नहीं है:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"

साथ pathlibमॉड्यूल यह के माध्यम से किया जा सकता हैpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
umi

pathlibकेवल पायथन 3 में उपलब्ध है, जो सेंटोस पर डिफ़ॉल्ट रूप से स्थापित नहीं है।
रॉकलाईट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.