在macOS终端或shell脚本中对字符串进行URL编码

z2acfund  于 2023-01-31  发布在  Shell
关注(0)|答案(1)|浏览(259)

我需要在macOS终端或shell脚本中对Unix文件路径进行URL编码,以便使用此作为输入:

"/Volumes/Macintosh HD/Music/1-01 デ ジタルライフ.mp3"

输出如下:

"file:///Volumes/Macintosh%20HD/Music/1-01%20%E3%83%86%E3%82%99%E3%82%B7%E3%82%99%E3%82%BF%E3%83%AB%E3%83%A9%E3%82%A4%E3%83%95.mp3"

基本上和在浏览器窗口中拖动所述文件然后复制其URL相同。我怎样才能做到这一点?谢谢。

0qx6xfy6

0qx6xfy61#

可能有更好的方法来做这件事,但我最终设法这样做:

printf %s "/Volumes/Macintosh HD/Music/1-01 デ ジタルライフ.mp3" |
curl -Gso /dev/null -w %{url_effective} --data-urlencode @- "" | #urlencoding
cut -c3- | #cut the "/?" at the beginning
sed 's=%2F=\/=g' | #change "%2F" back to slash
sed 's=+=%20=g' | #replace "+" to urlencoded space (%20)
sed 's=^=file:\/\/=' #prepend "file://"

结果:

"file:///Volumes/Macintosh%20HD/Music/1-01%20%E3%83%86%E3%82%99%E3%82%B7%E3%82%99%E3%82%BF%E3%83%AB%E3%83%A9%E3%82%A4%E3%83%95.mp3"

相关问题