ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

khard查询语言入门:用1个field:value语法精准定位任意联系人

2026/8/23 10:10:54 拓冰建站 浏览量
khard查询语言入门:用1个field:value语法精准定位任意联系人 khard查询语言入门用1个field:value语法精准定位任意联系人【免费下载链接】khardConsole vcard client项目地址: https://gitcode.com/gh_mirrors/kh/khardkhard 是一个运行在 Unix 终端里的 vcard 地址簿console vcard client用于创建、查看和编辑本地联系人。而它的查询语言是日常使用中最实用的一招只要记住field:value这一个语法就能从成百上千条联系人中精准锁定目标。本文为新手准备了一份 khard 查询语言完整指南无需编程基础十分钟即可上手。如何安装 khard 命令行通讯录khard 已打包进许多 Linux 发行版也可以直接从 PyPI 一键安装pip install khard如果要从源码构建克隆仓库即可git clone https://gitcode.com/gh_mirrors/kh/khard装好后运行khard template会打印一份空联系人的 YAML 模板——模板里的每个字段名正是查询语言可以使用的字段清单模板定义在khard/data/template.yaml。khard 查询语法从普通搜索到 field:value几乎所有需要选中联系人的子命令list、show、edit、remove、merge等都接受搜索词。普通搜索词全字段模糊匹配khard list foofoo会匹配联系人的任意内容姓名、邮箱、电话、地址都算且忽略大小写。缺点是容易误伤——如果某人的邮箱是barfoo-company.com、另一个人名叫Foo两条结果都会出现。field:value 查询只在一个字段里找khard list name:foo khard list emails:foofield:value把搜索限制在指定字段内上面两条各只命中一条。这个解析逻辑位于khard/query.py的parse()函数字符串以冒号分隔前半段是字段名、后半段是搜索值如果字段名无效整个字符串会退化为普通的全文搜索。khard 支持哪些字段名完整清单字段名与 YAML 模板一一对应空格换成下划线全部小写。字段含义示例name所有姓名字段特殊name:alicephone_numbers电话号码数字匹配phone_numbers:1234emails邮箱emails:example.compost_addresses邮寄地址post_addresses:berlinorganisations公司/组织organisations:acmecategories分类/标签categories:familynicknames昵称nicknames:bobnotes备注notes:meetingwebpages网站webpages:githubtitles/roles头衔 / 职位titles:dr.birthday生日ISO 日期birthday:1990-01-01anniversary纪念日anniversary:2000-05-20kind联系人类型kind:orgfirst_name/last_name名 / 姓last_name:smithuid唯一标识uid:abcd1234三个特殊查询字段 name:——同时匹配全名、名姓与姓名各种顺序、昵称和格式化姓名见khard/query.py中的NameQuery。按人名找人时首选它。phone_numbers:——自动剥离以外的格式字符只按数字匹配。phone_numbers:01012345678能命中010-123-45678国际区号49123456789甚至能自动对应本地写法0123456789数字匹配细节在PhoneNumberQuery中实现。kind:——按联系人类型筛选支持 individual、group、org、location、application、device写前缀即可kind:o就等价于org。多条件组合查询用 AND 精准锁定 在命令行上并列写多个搜索词khard 会以 AND 关系组合它们khard/cli.py会把它们归约成一个AndQuerykhard list name:bob emails:acme.com khard show organisations:acme phone_numbers:010意思是姓 bob 且邮箱含 acme.com 的联系人。条件叠加后命中越精确——配合khard edit、khard remove这类有破坏性的命令这是防止误删误改的关键习惯。再用-a限定地址簿搜索范围就只剩一个本子khard list -a work name:bob联系人特别多时加-f让 khard 直接扫描 .vcf 源文件来加速搜索大地址簿下的最快搜索方法。khard 查询常见坑与排查技巧 ⚠️字段名拼错不会报错email:foo少了个 s不是合法字段于是整个email:foo被当成普通搜索词去全文匹配大概率查不到人。查无结果时先核对字段名拼写。不支持嵌套字段-F输出选项里的phone.cell这类点号字段名不能用于查询只能用顶层字段。大小写不敏感NAME:Bob与name:bob完全等价。日期字段要完整 ISO 格式birthday:1990-01-01是精确匹配birthday:1990查不到人。调试技巧任何命令加--debug都能看到 khard 内部的查询解析过程用khard show --formatyaml查看联系人的完整 YAML 结构确认目标字段名和实际值。更多用法可参考仓库内命令行文档doc/source/commandline.rst。小结 记住一个公式field:value字段名 YAML 模板字段名的小写下划线版找人用name:找号码用phone_numbers:找类型用kind:多个搜索词 AND 组合条件越多越安全字段名拼错会静默退化为全文搜索这是最常见的查不到原因掌握这套 khard 查询语言后你就能在纯终端环境下像使用数据库检索一样快速精准地管理全部联系人。【免费下载链接】khardConsole vcard client项目地址: https://gitcode.com/gh_mirrors/kh/khard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考