Uma maneira de fazer isso é usando urlencode(instale-o no Ubuntu via sudo apt-get install gridsite-clients).
urlencode -m "$filepath"
irá converter o caminho para um URI. A parte "file: //" do URI será deixada de fora, mas você pode adicioná-lo facilmente através de uma única linha de base:
uri=$(urlencode -m "$1"); echo "file://$uri"
ou diretamente
echo "file://$(urlencode -m "$1")"
ou
echo -n file://; urlencode -m "$1"
Muito obrigado a Michael Kjörling pelas referências!
Respostas:
Uma maneira de fazer isso é usando
urlencode
(instale-o no Ubuntu viasudo apt-get install gridsite-clients
).irá converter o caminho para um URI. A parte "file: //" do URI será deixada de fora, mas você pode adicioná-lo facilmente através de uma única linha de base:
ou diretamente
ou
Muito obrigado a Michael Kjörling pelas referências!
fonte
encodeduri=$(urlencode -m "$uri")
entre$uri
aspas duplas!Você também pode usar o módulo Perl URI :: file diretamente da linha de comando:
fonte
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
com Perl 5.10 (do ano 2007) ou mais recenteNo CentOS, nenhuma dependência extra é necessária:
fonte
pathlib
módulo, isso poderia ser feito viapython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
está disponível apenas no Python 3, que não é instalado por padrão no CentOS.