如何从命令行下载数据 URL?

如何从命令行下载数据 URL?

我只找到了通过浏览器控制台执行此操作的 JavaScript 代码。

例如,如果我从 Google 图像搜索结果网格的第一张图像中复制图像地址,我会得到一个数据 URL。

我尝试过的命令和错误:

$curl '数据:东西' -o 文件名 
curl: (3) URL 使用错误/非法格式或缺少 URL
$curl'数据:东西'>文件名
curl: (3) URL 使用错误/非法格式或缺少 URL
$ wget '数据:东西' -O 文件名
解析数据(数据)...失败:名称或服务未知。
wget:无法解析主机地址“数据”

如何通过命令行下载Data URL?

答案1

data:方案在网页上下文中是本地的,而两者都wget适用curl于远程数据。也许您真正需要的是base64 -d能够解码此类数据。

最后,数据 URI 方案可能比 shell 允许的更长/更大,请参阅:https://stackoverflow.com/a/41755526我怀疑你想在 shell 历史记录中保留那么多随机数据。

答案2

在 Artem 的答案中添加一点。

您可以通过包管理器下载 xclip 并使用 shell 脚本(您应该复制数据 URL):

#! /usr/bin/bash

data=$(xclip -out -selection clipboard)

ext=${data#*/}
ext=${ext%%;*}
ext=${ext/jpeg/jpg}

if [ $1 ]; then
        filename=$1
else
        filename=file
fi

echo "${data#*,}" | base64 -d > $filename.$ext

如果没有参数,文件名将保存为文件,否则它是您的第一个参数。

编辑:改进的脚本——感谢弗雷迪的精彩评论。

相关内容