Converti il ​​percorso del file in URI in bash


Risposte:


5

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!


Non dimenticare le citazioni! Probabilmente vuoi encodeduri=$(urlencode -m "$uri") con $uritra virgolette!
gniourf_gniourf,

@gniourf_gniourf Grazie, modificato il codice di conseguenza.
Glutanimate,

4

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
$

1
Può essere abbreviato echo $path | perl -MURI::file -E 'say URI::file->new(<>)'con Perl 5.10 (dall'anno 2007) o più recente
Daniel Böhmer,

2

Su CentOS, non sono necessarie dipendenze extra:

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

Con il pathlibmodulo potrebbe essere eseguito tramitepython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
umi

pathlibè disponibile solo in Python 3, che non è installato per impostazione predefinita su CentOS.
Rockallite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.