【发布时间】:2020-01-24 05:50:57
【问题描述】:
我最近发现了 lolcat。我非常喜欢它,因为我想通过 lolcat 重定向我的所有输出。在终端中,这可以通过
ls -lh | lolcat
这将输出颜色。如果我想对所有命令再次执行此操作,假设为
cat /filename.sh | lolcat
如果我想将此永久化并创建一个别名并将其推送到我的.bashrc 文件
cat='cat |lolcat'
这会运行,但我必须为大量命令编写很多别名。
我只知道我可以捕获终端输入并使用 $1、$2 等替换内联, 但我希望它只在一个可以替换所有其他命令的地方执行。
【问题讨论】:
-
我不确定你是否真的想要一直这样做,但是……考虑创建一个目录(可能是
$HOME/lolcat),并在其中创建一个包含export PATH=$(echo "$PATH" | sed "s%$HOME/lolcat%%g")的文件—— ——$(basename $0) "$@" | lolcat。export从 PATH 中删除了 'lolcat' 目录;第二个运行命令,避免“lolcat”目录中的版本。然后在指向包装器的目录中为要映射(“别名”)的每个命令添加一个符号链接。最后,将$HOME/lolcat添加到 PATH 的前面,以便首先选择这些名称。需要照顾! -
请注意
ls | lolcat可能不会产生与ls相同的输出(给予或接受着色)。你也不想使用vim管道到lolcat。 -
@google :您是否考虑过,将您的标准输出传送到 lolcat 会掩盖您原始命令的退出代码?即使您仅以交互方式使用它,您也无法再使用该功能来获取提示中显示的最新命令的退出代码,因为它只会显示 lolcat 的退出代码。