补充说明
tsort 是 GNU coreutils 中的拓扑排序工具。它从标准输入或文件读取一系列“先后关系”,每行两个词,表示前者必须先于后者,然后输出一个满足全部约束的线性顺序。
输入格式很宽松:以空白分隔的记号成对读取,奇数个记号会报错。输出顺序不唯一,只要满足所有依赖即可;如果依赖关系里存在环,tsort 会输出已排序的部分并报告 input contains a loop,退出码非零。
典型用途是排列编译目标、安装顺序或任务依赖:把 Makefile 中的依赖对喂给它,就能得到一个可行的执行顺序。它只做排序,不执行命令,也不处理权重、并行度等更复杂的需求。
语法
tsort [选项] [文件]
选项
--help:显示帮助--version:显示版本信息
实例
# 基本用法:a 先于 b,b 先于 c
printf 'a b\nb c\n' | tsort
# 从文件读取依赖关系
tsort deps.txt
# 从 Makefile 中提取依赖并排序(示意)
make -pn 2>/dev/null | awk '/^[^#].*:/{print}' | tsort
# 存在环时会报告错误
printf 'a b\nb a\n' | tsort