Come posso convertire un percorso di file in un URI nella riga di comando?
Esempio :
/home/MHC/directory with spaces and ümläuts
per
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
Come posso convertire un percorso di file in un URI nella riga di comando?
Esempio :
/home/MHC/directory with spaces and ümläuts
per
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
Risposte:
Un modo per farlo è usare urlencode
(installalo su Ubuntu tramite sudo apt-get install gridsite-clients
).
urlencode -m "$filepath"
convertirà il percorso in un URI. La parte "file: //" dell'URI verrà tralasciata, ma puoi facilmente aggiungerla tramite un bash one-liner:
uri=$(urlencode -m "$1"); echo "file://$uri"
o direttamente
echo "file://$(urlencode -m "$1")"
o
echo -n file://; urlencode -m "$1"
Mille grazie a Michael Kjörling per i riferimenti!
encodeduri=$(urlencode -m "$uri")
con $uri
tra virgolette!
Puoi anche usare l' URI :: file del modulo Perl direttamente dalla riga di comando:
$ 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
$
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
con Perl 5.10 (dall'anno 2007) o più recente
Su CentOS, non sono necessarie dipendenze extra:
$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
pathlib
modulo potrebbe essere eseguito tramitepython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
è disponibile solo in Python 3, che non è installato per impostazione predefinita su CentOS.