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!


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
$

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"

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.