7 命令行工具
命令行工具(CLI)是一类通过文字命令操作的程序。它们没有图形界面,但往往比图形软件更快、更灵活。对社科研究者来说,你不需要学习这些命令——Claude Code 会自动调用它们。本章帮你理解这些工具的原理,并确保它们已安装在你的系统上。
7.1 什么是命令行工具?
在图形界面(GUI)出现之前,所有计算机操作都通过输入文字命令完成。这种方式看起来”原始”,但它有两个 GUI 做不到的优势:
- 可组合:命令行工具可以像积木一样拼接。比如”从 PDF 提取文字 → 搜索关键词 → 统计出现次数”,三个小工具串起来就能完成,不需要一个大型软件。
- 可自动化:文字命令可以被程序调用。Claude Code 正是利用这一点——它在终端里运行,能直接调用这些工具处理你的文件。
你只需确保这些工具已安装。当你对 Claude Code 说”帮我看看这个 CSV 有多少行”,它会自动选择合适的工具执行,并把结果告诉你。
7.2 一键安装所有工具
如果你已经完成了第1章的环境配置(包括第6步安装的 Miniconda),可以在 Claude Code 聊天框中输入以下内容,一次性安装本章介绍的所有命令行工具:
帮我安装以下命令行工具:
1. 用 pip 安装 csvkit
2. 用 conda 从 conda-forge 安装 duckdb-cli、poppler、qpdf、ripgrep、fd-find、jq、tesseract、aria2、p7zip、xsv
3. 安装 GitHub CLI(gh):Windows 用 winget install GitHub.cli,macOS/Linux 用 conda install -c conda-forge gh
4. 安装 sd:Windows 用 winget install chmln.sd,macOS 用 brew install sd,Linux 用 conda install -c conda-forge sd
请先检测当前系统,选择对应的安装命令执行。Claude Code 会自动在终端中执行对应的安装命令,遇到问题时会自动尝试备用方案。安装完成后,你就可以开始使用本章介绍的所有功能了。
7.3 文件搜索工具
社科研究项目往往包含几十到几百个文件——数据集、分析脚本、文献 PDF、访谈记录。当你让 Claude Code”帮我找一下哪个文件用到了 income 变量”或”把所有提到某政策的 PDF 列出来”,它需要一个能快速翻查大量文件的工具。以下两个工具让 Claude Code 在海量文件中精准定位目标。
7.3.1 rg:快速全文搜索
原理: 传统的文本搜索工具(如 grep)逐字节扫描文件,速度较慢。rg(ripgrep)利用现代 CPU 的并行处理能力,同时搜索多个文件,搜索速度可比传统工具快十到百倍。它还能自动忽略 .git 等无关目录,聚焦在真正的项目文件上。
安装:
帮我用 conda 从 conda-forge 安装 ripgrepClaude Code 能做什么:
- 在整个项目中搜索某个变量名、函数名或关键词出现在哪些文件里
- 查找所有包含特定关键词的访谈记录或文献段落
- 统计某个词语在多篇文章中出现的频率
- 在数百个 R 脚本中定位某行代码的所有用处
7.3.2 fd:快速查找文件
原理: find(系统自带的文件查找命令)语法复杂,搜索速度也慢。fd 以更直观的语法完成同样的工作,速度快数倍,并默认忽略隐藏文件和版本控制目录。Claude Code 用它按文件名、扩展名或修改时间定位目标文件。
安装:
帮我用 conda 从 conda-forge 安装 fd-findClaude Code 能做什么:
- 找出项目中所有
.csv数据文件或所有.R脚本 - 查找最近修改过的文件(如上周新增的分析输出)
- 定位某个具体文件名(如”2021年调查”)在哪个子目录下
- 列出某个文件夹下所有特定格式的图片或 PDF
7.4 数据查看工具
在正式用 R 分析之前,研究者经常需要快速回答一些基本问题:这个数据有多少行?有哪些列?缺失值多不多?用 R 打开一个大文件可能要等几十秒,而命令行工具通常一两秒就能给出答案。
7.4.1 csvkit:CSV 瑞士军刀
原理: CSV(逗号分隔值)是社科研究中最常见的数据交换格式——几乎所有统计软件、问卷平台和政府数据库都支持导出 CSV。csvkit 是一套专门处理 CSV 的小工具集合,每个工具做一件事:csvstat 算统计量、csvlook 格式化预览、csvgrep 按条件筛选、in2csv 把 Excel 转成 CSV。
安装:
帮我用 pip 安装 csvkitClaude Code 能做什么:
- 查看数据的行数、列名、每列的类型和缺失值比例
- 按条件筛选特定子集(如只看某个性别或年龄段)
- 将 Excel 文件批量转换为 CSV
- 快速对比两个 CSV 文件的结构差异
7.4.2 DuckDB:用 SQL 查询数据文件
原理: SQL 是数据库的通用查询语言,功能强大但通常需要先把数据导入数据库服务器。DuckDB 不同——它是一个”嵌入式”数据库引擎,不需要安装服务器,可以直接对你硬盘上的 CSV 或 Parquet 文件运行 SQL 查询。这就像给你的数据文件装了一个即时搜索引擎。
安装:
帮我用 conda 从 conda-forge 安装 duckdb-cliClaude Code 能做什么:
- 对 CSV 文件运行分组统计(如按地区算平均收入)
- 用 SQL 的 JOIN 合并多个数据文件
- 统计缺失值、去重、排序等数据清洗操作
- 处理 Parquet 格式的大型数据集(比 CSV 快很多)
7.4.3 xsv:大型 CSV 极速处理
原理: csvkit 功能丰富,但处理百万行以上的大型调查数据(如 CFPS、CHFS 全样本)时速度明显下降。xsv 用 Rust 编写,专注于速度:在同样的数据上,它的运行速度往往比 csvkit 快一个数量级。当研究项目的数据文件超过几百 MB 时,Claude Code 会优先调用 xsv 完成统计和筛选任务。
安装:
帮我安装 xsv,优先用 conda 从 conda-forge 安装,如果失败则用 cargo install xsvClaude Code 能做什么:
- 在秒级内统计千万行数据的每列摘要(均值、标准差、缺失率)
- 从超大 CSV 中快速提取指定列,生成轻量版数据文件
- 对大型数据集按条件筛选出子样本
- 合并多个大型 CSV 文件(如不同年份的追踪调查)
7.4.4 jq:JSON 数据处理
原理: 越来越多的数据源——政府开放数据平台、问卷 API、社交媒体采集接口——以 JSON 格式返回数据。JSON 结构灵活,但嵌套复杂,直接用文本编辑器很难处理。jq 是专为 JSON 设计的查询和转换工具,可以从嵌套结构中提取字段、过滤记录、重新组织数据。
安装:
帮我用 conda 从 conda-forge 安装 jqClaude Code 能做什么:
- 从 API 返回的 JSON 中提取特定字段(如只取问卷的回答项,忽略元数据)
- 将嵌套 JSON 展平为适合 R 读取的表格结构
- 筛选满足条件的 JSON 记录(如只保留特定地区或时段的条目)
- 处理 Claude Code 自身
--output-format json输出,用于自动化工作流
7.5 文档处理工具
社科研究离不开大量 PDF 论文。以下工具让 Claude Code 能够读取和操作 PDF 文件。
7.5.1 pdftotext:提取 PDF 文本
原理: PDF 文件的设计目的是”看起来一样”——无论在什么设备上打开,排版都不变。但这也意味着 PDF 内部存储的是排版指令(字体、位置、颜色),而非纯文本。pdftotext 能从这些排版信息中提取出纯文字内容,让 Claude Code 可以阅读和分析论文。
安装: pdftotext 包含在 poppler 工具包中。
帮我用 conda 从 conda-forge 安装 popplerClaude Code 能做什么:
- 提取论文全文用于摘要、分析或翻译
- 批量提取多篇论文的文字内容
- 从 PDF 中搜索特定关键词或段落
7.5.2 qpdf:拆分与合并 PDF
原理: qpdf 是一个轻量级 PDF 操作工具。它不需要”打开”或”渲染” PDF(不像 Adobe Acrobat 那样),而是直接操作 PDF 的内部结构,所以速度极快。适合从长文档中提取特定页码,或将多个文件合并。
安装:
帮我用 conda 从 conda-forge 安装 qpdfClaude Code 能做什么:
- 从长篇报告中提取指定页码范围
- 将多篇论文合并为一个 PDF 文件
- 拆分大型 PDF 以便逐部分处理
7.5.3 tesseract:扫描件文字识别
原理: 许多重要的社科数据来源——历史统计年鉴、老版政府报告、纸质调查表扫描件——以图片形式存储,PDF 内没有可提取的文字层。tesseract 是谷歌开源的 OCR(光学字符识别)引擎,能从图片或扫描 PDF 中识别出文字内容,支持中英文及多种语言。
安装:
帮我用 conda 从 conda-forge 安装 tesseract,同时安装中文语言包 tesseract-langClaude Code 能做什么:
- 将扫描的问卷、报告或年鉴转换为可搜索的文本
- 批量识别一批扫描 PDF,生成对应的文本文件
- 从历史档案图片中提取数字或文字数据,用于后续编码
- 结合 qpdf,先拆分大型扫描件,再逐页识别文字
7.6 实用工具
以下工具处理的是研究流程中的”杂活”:下载大型数据集、解压各种格式的压缩包、批量修改脚本中的文本、以及与 GitHub 协作。这些任务手动操作繁琐且容易出错,交给 Claude Code 配合这些工具自动完成,可以大幅节省时间。
7.6.1 aria2c:高速下载大型数据集
原理: 浏览器下载文件时,只建立一个连接通道。aria2c 同时建立多个下载连接,并行传输文件的不同分段,最终合并——这让下载速度在网络允许的情况下提升数倍。对于几 GB 的大型调查数据(如 CGSS、CFPS、CHFS 全样本),这意味着下载时间从一小时压缩到十几分钟。
安装:
帮我用 conda 从 conda-forge 安装 aria2Claude Code 能做什么:
- 高速下载政府数据平台、Dataverse 或数据仓库中的大型数据文件
- 批量下载多个文件(如多年度调查数据),同时进行多任务并行下载
- 在网络不稳定时自动断点续传,避免重头下载
- 下载完成后自动核验文件完整性(如有 MD5 校验值)
7.6.2 7z:解压各类压缩文件
原理: 数据提供方使用的压缩格式各不相同——有 .zip、.7z、.rar、.tar.gz、.tar.bz2 等十余种格式。系统自带的解压工具通常只支持 .zip,遇到其他格式就需要安装额外软件。7z(7-Zip 的命令行版本)支持所有主流压缩格式,Claude Code 只需一个工具就能处理任何来源的压缩包。
安装:
帮我用 conda 从 conda-forge 安装 p7zipClaude Code 能做什么:
- 解压任意格式的数据压缩包,无论来自哪个数据平台
- 将多个数据文件打包压缩,方便归档或传输
- 查看压缩包内容,确认文件结构后再决定是否解压
- 批量处理多个压缩文件,逐一解压到指定目录
7.6.3 sd:批量文本替换
原理: 研究过程中经常需要对多个脚本做相同的文本修改——比如变量重命名、路径更新、编码风格统一。传统的 sed 命令语法晦涩,转义规则复杂,容易出错。sd 提供了更直观的语法,Claude Code 可以精确地在一个或多个文件中完成批量替换,不会误改不相关内容。
安装:
帮我用 winget 安装 sd,包名是 chmln.sd帮我用 brew 安装 sd帮我用 conda 从 conda-forge 安装 sdClaude Code 能做什么:
- 在所有分析脚本中统一替换变量名(如将旧版变量名批量更新)
- 修改多个文件中的数据路径(如项目迁移后更新路径前缀)
- 统一修正编码问题(如将特定字符序列替换为正确形式)
- 对一批输出文件做文本后处理,如替换表格中的中英文标签
7.6.4 gh:GitHub 协作
原理: GitHub 是社科研究团队协作和代码版本管理的主流平台。通常操作 GitHub 需要打开浏览器,而 gh 是 GitHub 官方命令行工具,可以在终端中完成几乎所有 GitHub 操作。当你和同事共同维护分析代码,或者向开放数据项目提交问题时,Claude Code 可以通过 gh 直接操作 GitHub 仓库。
安装:
帮我用 winget 安装 GitHub CLI,包名是 GitHub.cli;安装完成后提示我运行 gh auth login 完成账号授权帮我用 conda 从 conda-forge 安装 gh;安装完成后提示我运行 gh auth login 完成账号授权Claude Code 能做什么:
- 克隆 GitHub 上的公开数据仓库或代码模板
- 查看项目的议题(Issues)列表,了解当前问题和进展
- 为开源项目或数据集提交问题报告(Issues)
- 在团队协作时,查看同事提交的代码修改并进行讨论
这些命令行工具覆盖了研究工作流的四个环节:搜索定位(rg、fd)、数据初探(csvkit、DuckDB、xsv、jq)、文档处理(pdftotext、qpdf、tesseract)和杂务自动化(aria2c、7z、sd、gh)。它们都是 Claude Code 在幕后调用的”工具箱”,你无需记住任何命令——只需确保它们已安装,然后用自然语言告诉 Claude Code 你想做什么。