moulti Logo

moulti

终端输出管理与交互增强工具

Moulti命令行工具脚本输出显示终端界面自定义显示Github开源项目

Moulti是一个终端输出管理工具,主要用于优化shell脚本和Ansible playbook的输出显示。该工具将脚本输出组织为可视化、可折叠的彩色块,并提供进度条和交互式问题功能。Moulti还支持显示man页面和unified diff文件,允许通过Textual CSS和ANSI主题进行定制。基于Python和Textual框架开发,Moulti旨在提升终端操作的清晰度和效率。

MOULTI

Moulti改变了你的shell脚本(bash、zsh等)在终端中显示输出的方式。 Moulti允许你将脚本输出的大量行分配到"步骤"中,即可视化的、可折叠的块,每个块都有自己的标题和颜色。

以下是使用Moulti时升级Debian系统的效果:

Moulti演示:Debian升级(动画PNG)

感兴趣吗?使用docker或podman在容器中运行此演示

还不确信?如果你的Ansible剧本输出看起来像这样呢?

Moulti:Ansible剧本输出

Moulti是为那些编写和执行shell脚本和/或Ansible剧本的人设计的工具。 特别是,如果你发现自己在脚本仍在运行时向上滚动终端以确保一切正常,那么Moulti就是为你而生的。

顺便说一下,Moulti还可以显示man页面和统一差异文件:

Moulti:man页面

Moulti:统一差异输出

安装

简而言之:pipx install moulti; pipx ensurepath

更多详情请查看文档

如何使用?

概要:

  1. 启动Moulti实例:moulti init
  2. 添加步骤:moulti step add step_name --title='在此处输入巧妙的标题'
  3. 填充内容:你的脚本执行的任何内容 | moulti pass step_name
  4. 重复第2步和第3步,直到你的脚本执行完毕。

通过跳转到文档来了解如何利用Moulti。

功能

如演示所示,Moulti通过问题实现用户交互:

Moulti输入问题

Moulti按钮问题

Moulti还具有以下功能:

在外观和感觉方面,Moulti可以通过以下方式进行定制:

实现

Moulti使用Python编写,并利用了Textual,以及Pyperclipargcompleteunidiff

灵感来源

Moulti在很长一段时间内(可能是几年)只是一个想法。

从脚本驱动TUI元素的想法显然来自于像dialogwhiptail这样的工具。

在某个时候,作者偶然发现了multiplex,这可能是最接近Moulti的东西。multiplex在多个方面(包括架构)被认为不够令人满意,这促使了Moulti的开发。

procmux也类似于Moulti,但并未影响其开发。

致谢

Textual框架提供了很大帮助,因此向Textual团队表示感谢,特别是: