Converte o caminho do arquivo para o URI no bash

7

Como posso converter um caminho de arquivo para um URI na linha de comando?

Exemplo :

/home/MHC/directory with spaces and ümläuts

para

file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
    
por Glutanimate 26.12.2012 / 22:25

3 respostas

4

Uma maneira de fazer isso é usar urlencode (instalá-lo 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 facilmente adicionar isso por meio de um one-liner bash:

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!

    
por 26.12.2012 / 22:47
3

Você também pode usar o módulo Perl URI :: file diretamente da linha de comando:

$ 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
$
    
por 27.12.2012 / 01:38
0

No CentOS, nenhuma dependência extra é necessária:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
    
por 09.02.2017 / 09:18