curl&jq 有意思的小功能
前段时间成功把笔记本上多余的”小爱键”映射出来了(参考),正想着该用这个按键干些什么,然后无意见翻出了在收藏夹里面的hitokoto,就写了这一个好玩的功能
1 | |
1 | |
虽然实现简单,但也很好玩
jq的字符串插值
其中jq的字符串插值部分写了很久,这里简单分析一下
外层的单引号 (
'...'):- 这是给 Shell 看的。
- 在 Shell 中,单引号内的所有字符都会被视为字面量(Literal characters),Shell 不会对它们进行任何解释或替换。这意味着
$,\,(等特殊字符在单引号内都会失去它们的特殊含义。 - 目的:确保
jq程序接收到的参数完全是"\(.hitokoto)\n—— 《\(.from)》"这一整个字符串,防止 Shell 试图解释里面的\或()等。
内层的双引号 (
"..."):- 这是给
jq程序看的。 - 在
jq的语法中,双引号用来定义一个字符串字面量。 - 目的:告诉
jq我们想要构造一个字符串。
- 这是给
字符串插值 (
\(...)):- 这是
jq的一个特性,叫做字符串插值(String Interpolation)。 - 它允许你在一个
jq的字符串字面量(由双引号包围)中嵌入jq表达式的结果。 \.hitokoto&\.from:这是一个jq表达式,用于从输入的 JSON 对象中提取hitokoto和from字段的值。—— 《 》:这些是普通的文本字符,会原样出现在最终的字符串里。
- 这是
The End
虽然你可能听过很多次了,但是我再一次感受到了Linux的伟大而美妙的设计哲学:Do One Thing and Do It Well!,就像一个瑞士军刀,对每一件事情都有一样趁手的工具,利用管道,使用文本流作为通用接口,让这些工具能够协同工作,我要实现这么一个复杂的功能(从一言的接口获取json,并且作为一个通知发送出来),不需要繁琐的编程/查找api,只需要把手头上这些小型的工具像搭积木一样搭起来就好了
curl&jq 有意思的小功能
https://20040702.xyz/2025/04/10/jq/