【busybox记录】【shell指令】tsort

devtools/2024/10/19 6:23:37/

目录

内容来源:

【GUN】【tsort】指令介绍

【busybox】【tsort】指令介绍

linux%E3%80%91%E3%80%90tsort%E3%80%91%E6%8C%87%E4%BB%A4%E4%BB%8B%E7%BB%8D-toc" style="margin-left:0px;">【linux】【tsort】指令介绍

使用示例:

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【tsort】指令介绍

tsort:拓扑排序
tsort 对给定文件执行拓扑排序,如果没有给定输入文件,则执行标准输入排序,或者对` - `文件执行拓扑排序。有关更多细节和历史,请参阅7.6.1节[tsort背景],第71页。
简介:
tsort [option] [file]
Tsort将其输入读取为由空格分隔的字符串对,表示偏序。输出是与给定的偏序相对应的总序。
例如
tsort << EOF
A b c
d
e f
B c d e
EOF
将产生输出
a
b
c
d
e
f
考虑一个更现实的例子。你在一个文件中有一大堆函数,除了一个函数外,其他函数都可能被声明为静态函数。
目前,这个函数(比如main)是文件中定义的第一个函数,它调用的函数紧随其后,然后是它们调用的函数,以此类推。假设你决心利用原型,那么你必须在声明所有这些函数(这意味着从定义中复制大量信息)和重新排列这些函数之间做出选择,以便尽可能多地在使用它们之前定义。
自动化后一个过程的一种方法是直接获取它调用的每个函数的列表。许多程序都可以生成这样的列表。
它们描述了一个调用图。考虑下面的列表,其中给定的一行表明左边的函数直接调用了右边的函数。
main parse_options
main tail_file
main tail_forever
tail_file pretty_name
tail_file write_header
tail_file tail
tail_forever recheck
tail_forever pretty_name
tail_forever write_header
tail_forever dump_remainder
tail tail_lines
tail tail_bytes
tail_lines start_lines
tail_lines dump_remainder
tail_lines file_lines
tail_lines pipe_lines
tail_bytes xlseek
tail_bytes start_bytes
tail_bytes dump_remainder
tail_bytes pipe_bytes
file_lines dump_remainder
recheck pretty_name
然后,你可以使用 tsort 来生成满足需求的函数排序。
示例
$ tsort call-graph | tac
dump_remainder
start_lines
file_lines
pipe_lines
xlseek
start_bytes
pipe_bytes
tail_lines
tail_bytes
pretty_name
write_header
tail
recheck
parse_options
tail_file
tail_forever
main
Tsort检测输入中的任何循环,并将遇到的第一个循环写入标准错误。
对于给定的偏序,一般没有唯一的全序。在上述调用图的上下文中,函数 parse_options 可以放在列表中的任何位置,只要它在main之前。
唯一的选项是--help和--version。参见第2章[常见选项],第2页。
退出状态为零表示成功,非零值表示失败。tsort:后台排序
之所以存在tsort,是因为Unix链接器的早期版本只处理一次归档文件,而且是按顺序处理的。当ld读取存档中的每个对象时,它根据该对象是否定义了在链接中未定义的任何符号来决定该对象是否在程序中需要。
这意味着必须特别处理归档文件中的依赖关系。例如,Scanf可能调用read。这意味着在对存档的一次遍历中,scanf.o出现在read.o之前是很重要的,,因为否则,调用scanf而不调用read的程序可能会以一个意外的未解决的引用结束。
解决这个问题的方法是首先在一个目标文件上生成一组依赖关系。这是通过一个名为lorder的shell脚本完成的。据我所知,GNU工具没有提供lorder的版本,但您仍然可以在BSD发行版中找到它。
然后对lorder输出运行tsort,并使用得到的排序来定义将对象添加到归档中的顺序。
整个过程在1980年左右就已经过时了,因为Unix存档现在包含一个符号表(传统上由ranlib构建,现在一般由ar自身构建),Unix链接器使用符号表有效地对存档文件进行多次传递。总之,tsort就是这么来的。来解决链接器处理归档文件方式的一个旧问题,该问题已经以不同的方式解决了。

【busybox】【tsort】指令介绍

NA

linux%E3%80%91%E3%80%90tsort%E3%80%91%E6%8C%87%E4%BB%A4%E4%BB%8B%E7%BB%8D" style="margin-left:.0001pt;">linux】【tsort】指令介绍

[root@localhost bin]# tsort --help
Usage: tsort [OPTION] [FILE]
写符合文件偏序的完全有序列表。
如果没有指定文件,或者文件为"-",则从标准输入读取。--help		显示此帮助信息并退出--version		显示版本信息并退出GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 tsort 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/tsort>
或者在本地使用:info '(coreutils) tsort invocation'

使用示例:

可以理解为已经遗弃了

常用组合指令:

NA

指令不常用/组合用法还需继续挖掘:


http://www.ppmy.cn/devtools/37513.html

相关文章

【RabbitMQ 二】RabbitMQ基本组成、交换器类型、RabbitMQ生产消费消息流程、信道Channel、AMQP协议

RabbitMQ入门 1.RabbitMQ基本组成 RabbitMQ有一些基本的组成单元&#xff1a; Producer&#xff1a;消息的生产者Consumer&#xff1a;消息的消费者Broker&#xff1a;RabbitMQ的服务节点。形象一点说就是一个Broker等同于一台RabbitMQ服务器&#xff0c;可以接收Producer的…

理解Oracle闪回级别【Oracle闪回技术】(一)

Oracle闪回技术是数据恢复技术&#xff0c;具有恢复时间快&#xff0c;不适用备份文件。可以使数据库回到某个状态。 可以满足用户的逻辑处理的快速恢复。 但是闪回技术只是逻辑数据恢复&#xff0c;如果是数据文件损坏&#xff0c;必须依赖介质才能恢复。 闪回技术的特性&…

Android Studio之ImageView

ImageView是图像显示控件&#xff0c;与图形显示有关的属性说明如下: scaleType&#xff1a;指定图形的拉伸类型&#xff0c;默认是fitCenter。src&#xff1a;指定图形来源&#xff0c;src图形按照scaleType拉伸。 注意背景图不按scaleType指定的方式拉伸&#xff0c;背景默…

使用DependencyCheck工具检测JAR依赖包的安全漏洞

引言 Dependency-Check 是一个开源工具,用于检测软件项目中使用的第三方库和组件是否存在已知的安全漏洞。它可以帮助开发团队及时发现和解决项目中的潜在安全风险,从而提高软件的安全性。 该工具通过分析项目的依赖关系,识别其中使用的第三方库和组件,并与已知的漏洞数据…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行&#xff0c;建议电脑配置…

风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系

随着智慧电厂成为未来电力企业发展的必然趋势&#xff0c;深圳华锐视点紧跟时代步伐&#xff0c;引领技术革新&#xff0c;推出了能源3D可视化智慧管理系统。该系统以企业现有的数字化、信息化建设为基础&#xff0c;融合云平台、大数据、物联网、移动互联、机器人、VR虚拟现实…

Springboot 集成 Consul 实现服务注册中心-05

因为后续很多模块都要用到注册中心&#xff0c;所以此处先实现此模块。 Consul简介 Consul是一个开源的服务发现和配置管理工具&#xff0c;具有跨平台、运行高效等特点。它由HashiCorp公司开发&#xff0c;并使用Go语言编写。Consul主要用于实现分布式系统中的服务发现、健康…

【AI大模型】用指令层级的方法提高LLM的安全性

本文参考论文为&#xff1a; Eric Wallace, Kai Xiao, Reimar Leike, Lilian Weng, Johannes Heidecke, Alex Beutel. The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions. arXiv:2404.13208v1, 2024. https://doi.org/10.48550/arXiv.2404.132…