फ़ाइल पथ को 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.