11 Как я могу преобразовать путь к файлу в URI в командной строке? Пример : /home/MHC/directory with spaces and ümläuts в file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts bash filenames Glutanimate источник 2 stackoverflow.com/q/11876353/486504 CVn 2 stackoverflow.com/q/296536/486504 CVN Ответы: 5 Одним из способов сделать это является использование urlencode(установите его в Ubuntu через sudo apt-get install gridsite-clients). urlencode -m "$filepath" преобразует путь в URI. Часть «file: //» URI будет пропущена, но вы можете легко добавить это через однострочник bash: uri=$(urlencode -m "$1"); echo "file://$uri" или напрямую echo "file://$(urlencode -m "$1")" или echo -n file://; urlencode -m "$1" Большое спасибо Michael Kjörling за рекомендации! Glutanimate источник Не забывайте цитаты! Вы , вероятно , хотите encodeduri=$(urlencode -m "$uri") с $uriв двойных кавычках! gniourf_gniourf @gniourf_gniourf Спасибо, изменили код соответствующим образом. Glutanimate 4 Вы также можете использовать URI :: file модуля 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 года) или новее Daniel Böhmer 2 В CentOS не требуется никаких дополнительных зависимостей: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallite источник С pathlibмодулем это можно сделать черезpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibдоступно только в Python 3, который не установлен по умолчанию в CentOS. Rockallite
5 Одним из способов сделать это является использование urlencode(установите его в Ubuntu через sudo apt-get install gridsite-clients). urlencode -m "$filepath" преобразует путь в URI. Часть «file: //» URI будет пропущена, но вы можете легко добавить это через однострочник bash: uri=$(urlencode -m "$1"); echo "file://$uri" или напрямую echo "file://$(urlencode -m "$1")" или echo -n file://; urlencode -m "$1" Большое спасибо Michael Kjörling за рекомендации! Glutanimate источник Не забывайте цитаты! Вы , вероятно , хотите encodeduri=$(urlencode -m "$uri") с $uriв двойных кавычках! gniourf_gniourf @gniourf_gniourf Спасибо, изменили код соответствующим образом. Glutanimate 4 Вы также можете использовать URI :: file модуля 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 года) или новее Daniel Böhmer 2 В CentOS не требуется никаких дополнительных зависимостей: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallite источник С pathlibмодулем это можно сделать черезpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibдоступно только в Python 3, который не установлен по умолчанию в CentOS. Rockallite
4 Вы также можете использовать URI :: file модуля 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 года) или новее Daniel Böhmer 2 В CentOS не требуется никаких дополнительных зависимостей: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallite источник С pathlibмодулем это можно сделать черезpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibдоступно только в Python 3, который не установлен по умолчанию в CentOS. Rockallite
2 В CentOS не требуется никаких дополнительных зависимостей: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallite источник С pathlibмодулем это можно сделать черезpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url" umi pathlibдоступно только в Python 3, который не установлен по умолчанию в CentOS. Rockallite
Ответы:
Одним из способов сделать это является использование
urlencode
(установите его в Ubuntu черезsudo apt-get install gridsite-clients
).преобразует путь в URI. Часть «file: //» URI будет пропущена, но вы можете легко добавить это через однострочник bash:
или напрямую
или
Большое спасибо Michael Kjörling за рекомендации!
источник
encodeduri=$(urlencode -m "$uri")
с$uri
в двойных кавычках!Вы также можете использовать URI :: file модуля Perl непосредственно из командной строки:
источник
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
Perl 5.10 (с 2007 года) или новееВ CentOS не требуется никаких дополнительных зависимостей:
источник
pathlib
модулем это можно сделать черезpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
доступно только в Python 3, который не установлен по умолчанию в CentOS.