11 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 bash filenames Glutanimate źródło 2 stackoverflow.com/q/11876353/486504 CVn 2 stackoverflow.com/q/296536/486504 CVn 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,
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,
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,
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,
Odpowiedzi:
Jednym ze sposobów na to jest użycie
urlencode
(zainstaluj na Ubuntu przezsudo apt-get install gridsite-clients
).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:
lub bezpośrednio
lub
Ogromne podziękowania dla Michaela Kjörlinga za referencje!
źródło
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ń:
źródło
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
pomocą Perla 5.10 (od roku 2007) lub nowszegoW CentOS nie są wymagane żadne dodatkowe zależności:
źródło
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.