Chuyển đổi đường dẫn tệp thành URI trong bash


Câu trả lời:


5

Một cách để làm điều này là sử dụng urlencode(cài đặt nó trên Ubuntu thông qua sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

sẽ chuyển đổi đường dẫn thành một URI. Phần "file: //" của URI sẽ bị bỏ lại, nhưng bạn có thể dễ dàng thêm phần đó qua bash one-liner:

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

hoặc trực tiếp

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

hoặc là

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

Rất cám ơn Michael Kjorling đã tham khảo!


Đừng quên dấu ngoặc kép! Bạn có thể muốn encodeduri=$(urlencode -m "$uri") với $uridấu ngoặc kép!
gniourf_gniourf

@gniourf_gniourf Cảm ơn bạn, đã sửa đổi mã cho phù hợp.
Glutimate

4

Bạn cũng có thể sử dụng tệp URI :: mô-đun Perl trực tiếp từ dòng lệnh:

$ 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
Có thể rút ngắn thành echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10 (từ năm 2007) hoặc mới hơn
Daniel Böhmer

2

Trên CentOS, không cần phụ thuộc thêm:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"

Với pathlibmô-đun, nó có thể được thực hiện thông quapython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
umi

pathlibchỉ có sẵn trong Python 3, không được cài đặt theo mặc định trên CentOS.
Rockallite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.