在 bash 中将文件路径转换为 ​​URI

在 bash 中将文件路径转换为 ​​URI

如何在命令行中将文件路径转换为 ​​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);

相关内容