More utils-没有人想过要编写的Unix工具

2020-08-22 14:59:31

More utils是越来越多的Unix工具集合,很久以前当Unix还很年轻的时候,没有人会想到要编写这些工具。

我是Unix工具哲学的粉丝,但有时我想知道是否有很多空间可以将新工具添加到这个工具箱中。我一直想要想出我自己的通用新Unix工具。

嗯,在我的博客的许多后续文章(12,3)中记录了很多反馈之后,我得出了以下结论:

也许问题不在于没有人在编写它们,或者除了专门的工具之外,单一工具空间被覆盖了,而是最基本的工具都落入了缝隙,从来没有被那些本可以从中受益的人注意到。

于是,“更多实用程序”收藏应运而生,目的是防止这些程序从裂缝中坠落。

到目前为止,可能在更多实用工具中最通用的工具是海绵(1),它允许您执行以下操作:

下面列出了更多的工具,我总是有兴趣增加更多的收藏,只要它们是合适的通用工具,并且不要重复其他著名的工具。

Debian包以及更多实用程序的源代码tarball可以从Packages.debian.org下载,也可以使用apt下载。它也在Ubuntu中,我在其他几个Linux发行版中也听说过。

Vipe:即使临时文件因错误退出,也要清理该文件。谢谢,斯蒂格·帕姆奎斯特。

海绵:修复错误-当临时文件位于不同的文件系统上时,该模式会使文件的原始内容加倍。

PEE:忽略SIGPIPE和由于命令未使用其所有输入而导致的写入错误。结束语:#697052谢谢,奥莱·约尔根·布朗纳。

Vidir:重新编写手册页以更明确地提到文件args。结束语:#885221谢谢,丹尼尔·沙哈夫。

PEE应支持非阻塞I/O写入管道,以允许程序并发处理数据。或者,切换到喷泉http://hea-www.cfa.harvard.edu/~dj/tmp/fountain-1.0.2.tar.gz.。

或者,如果没有给定文件,则将海绵缓冲区设置为stdout,并使用它来缓冲来自pee的数据。虽然这会降低效率,并且对于非常大的流也不能很好地工作,除非在这种情况下海绵避免缓冲内存中的全部内容。

这里有一些正在考虑中,但还没有包括在内。可以自由地建议其他的。我也欢迎反馈意见,说明应该包括哪些内容。

很难判断一个目录在shell中是否为空,而且,虽然test-e对于单个文件可以正常工作,但是如果您想要查看通配符是否匹配任何内容,它就会失败。

允许将仍在更改(即正在下载)的文件复制到程序。文件的新位将继续提供给程序,直到下载完成。

由贾斯汀·阿佐夫提交,并附有代码。然而,它必须使用启发式来猜测下载(或其他)何时完成。目前的启发式方法,10秒无增长,在拨号时对我来说不太管用。

使用inotify可能是最好的方法。Fsniper是一种不太通用的工具,它使用inotify检测文件何时关闭。

运行它一次以存储文件的散列,第二次运行它将检查该文件是否已更改。Http://blog.steve.org.uk/the_traffic_is_waiting_outside.html。

如果操作非常简单,这对于将协同进程编写为需要来回通信的流水线非常方便。

您可以使用一个很棒的shell(如bash或zsh)来完成其中的一些任务;其余的几乎都可以通过一组mkfio命令加上简单的eredirection来完成,但是会增加复杂性和大量的手动步骤。

如果您给这个命令本质上提供了一个FD';s的网表来连接,那么这个命令可能会更加强大。我确信命令行句法可以改进,但是您明白我的想法。非常复杂的示例仅用于说明:connect';cmd1';<;>;#0:3>;4';cmd2';';3>;';\';cmd3';';3<;>;3#0:0>;';';cmd4&##。*规范指定相邻CMD之间的连接*限定规范(w/';#';)允许更复杂的连接*某些正常的默认设置,但可以覆盖*stdin转到不重定向的第一个进程*stdout来自不重定向的每个人*stderr来自不重定向的每个人*cmd1&>cmd2&39。S FD3*cmd2;s FD3*cmd3;s标准din*cmd3;s FD3*cmd4;cmd3;s FD3*stdin->;cmd4*cmd4';s FD3*cmd4;cmd1;s FD3*cmd4';s FD3*cmd4;cmd1。

如果你认为这是个好主意,请告诉我。我有一个基本的connectcommand,但它只执行两个命令。不过,如果有兴趣的话,我很乐意把它编出来。(事实上,我想我无论如何都可以,所以我不会一直做这种特别的事情)。--来自韦斯利·J·兰德克

应该可以通过添加一种方法来标记要返回的命令退出状态,从而将错误管道上卷到这个位置。

输入数字列表并输出它们的分布、值以及它在输入http://baruch.ev-en.org/files/todist中出现的次数。

输入数字列表并输出有关枚举数的一些统计信息:Average、Stddev、Min、Max、Medium Point http://baruch.ev-en.org/files/tostats。

随机化文件的行数。完美的候选者,但是bogoort和rl(来自随机化-line包)已经在这么做了。

Http://savannah.nongnu.org/projects/shuffle/也是一个类似的东西,它的作者说它几乎已经准备好了,但它的记忆力很强,是一个很大的NONO&34;。(显然,coreutils 6具有Shouf和Sort--Random-Sort。)。

MimeInfo Perl模块具有如下工作方式的mimetype,并使用freedesktop.org MIME数据库,与GNOME相同。

将sed模式应用于文件列表以重命名它们。被拒绝的原因是,perl有一个工作方式几乎相同的重命名程序。