Konwertuj ścieżkę pliku na URI w bash

Odpowiedzi:

5

Jednym ze sposobów na to jest użycie urlencode(zainstaluj na Ubuntu przez sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

przekształci ścieżkę na identyfikator URI. Część „file: //” identyfikatora URI zostanie pominięta, ale możesz łatwo dodać to za pomocą bash-one-liner:

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

lub bezpośrednio

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

lub

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

Ogromne podziękowania dla Michaela Kjörlinga za referencje!

Glutanimate
źródło
Nie zapomnij o cytatach! Prawdopodobnie chcesz encodeduri=$(urlencode -m "$uri") z $uripodwójnymi cytatami!
gniourf_gniourf
@gniourf_gniourf Dziękujemy, odpowiednio zmodyfikowałem kod.
Glutanimate,
4

Możesz także użyć pliku URI modułu Perla :: plik bezpośrednio z wiersza poleceń:

$ 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
$

źródło
1
Można go skrócić za echo $path | perl -MURI::file -E 'say URI::file->new(<>)'pomocą Perla 5.10 (od roku 2007) lub nowszego
Daniel Böhmer
2

W CentOS nie są wymagane żadne dodatkowe zależności:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
Rockallite
źródło
Z pathlibmodułu można to zrobić poprzezpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
Umi
pathlibjest dostępny tylko w Pythonie 3, który nie jest domyślnie instalowany w CentOS.
Rockallite,