11 ¿Cómo puedo convertir una ruta de archivo a un URI en la línea de comandos? Ejemplo : /home/MHC/directory with spaces and ümläuts a file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts bash filenames Glutanimato fuente 2 stackoverflow.com/q/11876353/486504 un CVn el 2 stackoverflow.com/q/296536/486504 un CVn el Respuestas: 5 Una forma de hacerlo es usando urlencode(instalarlo en Ubuntu a través de sudo apt-get install gridsite-clients). urlencode -m "$filepath" convertirá la ruta a un URI. La parte "file: //" del URI se omitirá, pero puede agregarla fácilmente a través de un bash one-liner: uri=$(urlencode -m "$1"); echo "file://$uri" o directamente echo "file://$(urlencode -m "$1")" o echo -n file://; urlencode -m "$1" ¡Muchas gracias a Michael Kjörling por las referencias! Glutanimato fuente ¡No olvides las citas! ¡Probablemente quieras encodeduri=$(urlencode -m "$uri") con $uricomillas dobles! gniourf_gniourf @gniourf_gniourf Gracias, modificó el código en consecuencia. Glutanimate 4 También puede usar el módulo URI del módulo Perl :: directamente desde la línea de comandos: $ 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 $ fuente 1 Se puede acortar a echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10 (del año 2007) o más reciente Daniel Böhmer 2 En CentOS, no se necesitan dependencias adicionales: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallita fuente Con el pathlibmódulo se podría hacer a través depython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibsolo está disponible en Python 3, que no está instalado de manera predeterminada en CentOS. Rockallite
5 Una forma de hacerlo es usando urlencode(instalarlo en Ubuntu a través de sudo apt-get install gridsite-clients). urlencode -m "$filepath" convertirá la ruta a un URI. La parte "file: //" del URI se omitirá, pero puede agregarla fácilmente a través de un bash one-liner: uri=$(urlencode -m "$1"); echo "file://$uri" o directamente echo "file://$(urlencode -m "$1")" o echo -n file://; urlencode -m "$1" ¡Muchas gracias a Michael Kjörling por las referencias! Glutanimato fuente ¡No olvides las citas! ¡Probablemente quieras encodeduri=$(urlencode -m "$uri") con $uricomillas dobles! gniourf_gniourf @gniourf_gniourf Gracias, modificó el código en consecuencia. Glutanimate 4 También puede usar el módulo URI del módulo Perl :: directamente desde la línea de comandos: $ 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 $ fuente 1 Se puede acortar a echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10 (del año 2007) o más reciente Daniel Böhmer 2 En CentOS, no se necesitan dependencias adicionales: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallita fuente Con el pathlibmódulo se podría hacer a través depython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibsolo está disponible en Python 3, que no está instalado de manera predeterminada en CentOS. Rockallite
4 También puede usar el módulo URI del módulo Perl :: directamente desde la línea de comandos: $ 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 $ fuente 1 Se puede acortar a echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10 (del año 2007) o más reciente Daniel Böhmer 2 En CentOS, no se necesitan dependencias adicionales: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallita fuente Con el pathlibmódulo se podría hacer a través depython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibsolo está disponible en Python 3, que no está instalado de manera predeterminada en CentOS. Rockallite
2 En CentOS, no se necesitan dependencias adicionales: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallita fuente Con el pathlibmódulo se podría hacer a través depython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibsolo está disponible en Python 3, que no está instalado de manera predeterminada en CentOS. Rockallite
Respuestas:
Una forma de hacerlo es usando
urlencode
(instalarlo en Ubuntu a través desudo apt-get install gridsite-clients
).convertirá la ruta a un URI. La parte "file: //" del URI se omitirá, pero puede agregarla fácilmente a través de un bash one-liner:
o directamente
o
¡Muchas gracias a Michael Kjörling por las referencias!
fuente
encodeduri=$(urlencode -m "$uri")
con$uri
comillas dobles!También puede usar el módulo URI del módulo Perl :: directamente desde la línea de comandos:
fuente
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
Perl 5.10 (del año 2007) o más recienteEn CentOS, no se necesitan dependencias adicionales:
fuente
pathlib
módulo se podría hacer a través depython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
solo está disponible en Python 3, que no está instalado de manera predeterminada en CentOS.