如何在命令行中将文件路径转换为 URI?
例子:
/home/MHC/directory with spaces and ümläuts
到
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
答案1
一种方法是使用urlencode
(通过在 Ubuntu 上安装sudo apt-get install gridsite-clients
)。
urlencode -m "$filepath"
会将路径转换为 URI。 URI 的“file://”部分将被省略,但您可以通过 bash 单行代码轻松添加它:
uri=$(urlencode -m "$1"); echo "file://$uri"
或直接
echo "file://$(urlencode -m "$1")"
或者
echo -n file://; urlencode -m "$1"
非常感谢 Michael Kjörling 提供的参考资料!
答案2
在 CentOS 上,不需要额外的依赖项:
$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
答案3
您还可以使用 Perl 模块URI::文件直接从命令行:
$ 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
$
答案4
您可以将路径作为参数传递给以下脚本:
#!/usr/bin/env gjs
const { Gio } = imports.gi;
let path = Gio.File.new_for_path(ARGV[0]);
let uri = path.get_uri();
print(uri);
要将 uri 转换为路径,请使用以下脚本:
#!/usr/bin/env gjs
const { Gio } = imports.gi;
let uri = Gio.File.new_for_uri(ARGV[0]);
let path = uri.get_path();
print(path);