Jak przekonwertować ścieżkę pliku na identyfikator URI w wierszu polecenia?
Przykład :
/home/MHC/directory with spaces and ümläuts
do
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
Jak przekonwertować ścieżkę pliku na identyfikator URI w wierszu polecenia?
Przykład :
/home/MHC/directory with spaces and ümläuts
do
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
Odpowiedzi:
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!
encodeduri=$(urlencode -m "$uri")
z $uri
podwójnymi cytatami!
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
$
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
pomocą Perla 5.10 (od roku 2007) lub nowszego
W CentOS nie są wymagane żadne dodatkowe zależności:
$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
pathlib
modułu można to zrobić poprzezpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
jest dostępny tylko w Pythonie 3, który nie jest domyślnie instalowany w CentOS.