Konversi jalur file ke URI di bash

Jawaban:

5

Salah satu cara untuk melakukannya adalah menggunakan urlencode(instal di Ubuntu via sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

akan mengubah jalur menjadi URI. Bagian "file: //" dari URI akan ditinggalkan, tetapi Anda dapat dengan mudah menambahkannya melalui bash one-liner:

uri=$(urlencode -m "$1"); echo "file://$uri"

atau langsung

echo "file://$(urlencode -m "$1")"

atau

echo -n file://; urlencode -m "$1"

Terima kasih banyak kepada Michael Kjörling untuk referensi!

Glutanimate
sumber
Jangan lupa tanda kutip! Anda mungkin ingin encodeduri=$(urlencode -m "$uri") dengan $uritanda kutip ganda!
gniourf_gniourf
@ gniourf_gniourf Terima kasih, modifikasi kodenya.
Glutanimate
4

Anda juga dapat menggunakan modul Perl URI :: file langsung dari baris perintah:

$ 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
$

sumber
1
Dapat disingkat menjadi echo $path | perl -MURI::file -E 'say URI::file->new(<>)'dengan Perl 5.10 (dari tahun 2007) atau lebih baru
Daniel Böhmer
2

Pada CentOS, tidak ada ketergantungan tambahan yang dibutuhkan:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
Rockallite
sumber
Dengan pathlibmodul itu bisa dilakukan viapython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
umi
pathlibhanya tersedia di Python 3, yang tidak diinstal secara default di CentOS.
Rockallite