Перетворити шлях файлу до URI в bash


Відповіді:


5

Один із способів зробити це - використовувати urlencode(встановити його на Ubuntu через sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

перетворить шлях до URI. Частина "file: //" URI буде залишена, але ви можете легко додати це через bash one-liner:

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

або безпосередньо

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

або

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

Велике спасибі Майклу Кьорлінгу за довідки!


Не забувайте цитати! Ви , ймовірно , хочете encodeduri=$(urlencode -m "$uri") з $uriв подвійних лапках!
gniourf_gniourf

@gniourf_gniourf Дякую, змінив код відповідно.
Glutanimate

4

Ви також можете використовувати URI :: файл модуля Perl безпосередньо з командного рядка:

$ 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
Можна скоротити до echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10 (з 2007 року) або новіше
Даніель

2

У CentOS не потрібні додаткові залежності:

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

З pathlibмодулем це може бути зроблено з допомогоюpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
UMI

pathlibдоступний лише в Python 3, який не встановлений за замовчуванням у CentOS.
Rockallite
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.