我正在尝试设置一个功能,允许我打开离线 Google 文档。问题是,如果 Chrome 是默认浏览器,它们只能通过 Finder 工作,因为 Google Drive 应用程序将打开该文件,然后将所需的 URL 传递到默认浏览器。由于离线文档无法在 Safari 中打开,我需要更改我的默认浏览器(不,谢谢!)或将提供给 Safari 的 URL 复制并粘贴到 Chrome 中,这样可以正确打开文件。
当运行离线 Google 文档/工作表的 cat 时,会返回如下输出:
{"url": "https://docs.google.com/open?id=31234123fdasdfsg412341", "doc_id":"31234123fdasdfsg412341", "email": "[email protected]", "resource_id": "document:31234123fdasdfsg412341"}
我已经设法使用 sed 提取其中的 https 部分,
sed 's/.*\(https[^"]*\)".*/\1/' myfile.gsheet
一个例子是,
echo '{"url": "https://docs.google.com/open?id=31234123fdasdfsg412341", "doc_id": "31234123fdasdfsg412341", "email": "[email protected]", "resource_id": "document:31234123fdasdfsg412341"}' | sed 's/.*\(https[^"]*\)".*/\1/'
然而,要在 Chrome 中打开它并实际离线查看该文件,我现在需要将其传递给,
open -a 'Google Chrome' <sed_output>
最后,更棘手的部分(!),我需要将整个过程变成一个函数,以便我可以设置别名和类型,
chromeopen myfile.gsheet
并让它从该文件中提取 url 并将其传递给打开。
谢谢!
更新
根据 mmusante 的建议,我创建了一个别名函数来执行此操作,
chromeopenfunc() {
open -a 'Google Chrome' "$(sed 's/.*\(https[^"]*\)".*/\1/' $1)"
}
alias chrome=chromeopenfunc
答案1
您可以使用 $() 运算符将 sed 输出直接放在命令行上。例如open -a 'Google Chrome' "$(sed 'blah blah blah')"