下午好,
(OS X 用户)
我特意尝试将我输入的每个 shell 命令的输出通过管道传输到 ruby gem“lolcat”(这使得终端的输出呈现彩虹色)。
有没有办法做到这一点,而不用单独显式地为命令设置别名?我在想也许有一种方法可以在按下回车键之前通过管道传输任何内容,但我不确定如何做到这一点。
非常感谢您的帮助,因为我厌倦了在终端上只看一种颜色。
答案1
您可以在 shell 中重定向 stdout:
exec 1> >(lolcat)
但
如果lolcat
将自己的输出发送到 stdout,你肯定会遇到问题。这可能会奏效
exec 1> >(lolcat >&2)
答案2
你可以这样做:
bash | lolcat
这将进入 bash,无论你运行什么命令都会是彩虹
答案3
我为世界上最快的网站生成器制作了一个 shell 扩展,名为尼夫特。它有一个复活节彩蛋,您可以使用它来打开大多数事物的 lolcat 输出lolcat.on
(例如在使用 启动 shell 之后nift sh
)。按下 tab 键以获取可能的完成选项时,您甚至会得到彩虹输出,我怀疑您是否会通过任何其他建议的解决方案获得这一点。
shell 扩展用于f++这是内置的脚本语言,它具有这些功能和这些可用的类型。但是它无法识别的任何内容都会使用您机器上的(可能是主/默认)shell 作为系统调用运行(因此在 REPL shell 模式下将其称为 shell 扩展)。
Nift 将查找你机器上安装的 lolcat 版本,否则使用内置版本,该版本应该是世界上最快的(它与我的 c++ 实现几乎相同lolcat-cc这是世界上最快的)。但我强烈建议在 Nift 上安装 lolcat-cc(或其他版本的 lolcat),否则,您通常会在所有系统调用中运行 ~5mb 的 Nift 二进制文件,而不是 lolcat 的 <1mb 二进制文件。
f++ 也是一种有趣的脚本语言。这例如,脚本创建并删除 100k 个空文本文件。在我的计算机上,该脚本运行时间约为 3.5 秒,而这Bash 脚本执行基本相同的操作需要 3 分钟以上!!您可能已经从该 f++ 脚本中注意到一些很酷的功能,例如您可以在字符串内扩展变量,可以定义具有类型的变量,可以使用函数调用将变量扩展为多个参数,可以拥有超过 10k 个函数调用输入参数(应该可以拥有数百万个!)。
您可以找到有关 Nift REPL 的更多信息(包括不同平台的快捷方式)这里。
如果您需要定义 shell 变量(不是通过 f++,而是通过底层 shell),那么您将需要使用 sys/system 函数执行代码块。您也可以为 Lua(JIT) 和 ExprTk 执行代码块,因为它们都嵌入到 Nift 中。您也可以使用 Lua 和 ExprTk 来访问/修改 f++ 变量。
因此要获取此 shell(扩展)。通过包管理器安装 Nift 或从 GitHub 克隆、制作和安装。进入nift sh
终端以启动 Nift f++ shell 扩展,然后输入lolcat.on
以打开彩虹输出。