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.