Whi*_*rry 8 command-line bash cron cat 22.04
我正在使用带有 bash 的 Ubuntu 22.04,非常普通,并且已添加alias cat="batcat"到~/.bashrc. 该程序batcat或被bat引用可以在这里找到: https: //github.com/sharkdp/bat
因此,cat ~/.bashrc例如,当我运行时,它会使用 输出文件的内容batcat。但是,当我运行诸如 之类的命令时crontab -l,输出似乎正在使用cat而不是batcat。
任何帮助将不胜感激!
由于 的输出,似乎crontab -l没有使用。这是否意味着我无能为力?catstrace crontab -l |& grep cat
仍然可以使用crontab -l | batcat或获取输出并将其输入到 crontab 中crontab -l | cat。
mar*_*elm 32
Ubuntu 22.04系统范围内如何用bat替换cat
我强烈建议不要这样做。
Cat 不仅仅用于在 shell 上交互使用;它还在系统脚本中用作cat <file> | filter | ... , 或DATA="$(cat <file>)"。如果 Bat 在这些情况下的行为不完全相同,您的系统最终可能会以意想不到的方式损坏,您甚至可能不会想到将这些损坏与替换的 Cat 连接起来。
(我发现的一个例子是bat /dev/zero | head -c1耗尽所有系统内存然后崩溃,但cat工作正常;请参阅问题#636)
我正在使用带有 bash 的 Ubuntu 22.04,非常普通,并且已将别名 cat="batcat" 添加到 ~/.bashrc 中。
这样危害较小;它只影响你对 shell 的交互使用;不是脚本,也不是其他(系统)用户。
尽管如此,我还是建议不要这样做。同样,如果 Bat 的行为与 Cat 不完全一样,它可能会在某种程度上破坏您的 shell,例如,如果您复制/粘贴从某处使用的命令行cat。
例如,请参阅bat问题#2380,其中有人抱怨zsh-async执行后会中断alias cat=bat。
但是,当我运行诸如 之类的命令时
crontab -l,输出似乎使用 cat 而不是 batcat。
仅仅因为某些东西产生输出,并不意味着它使用 Cat。
crontab -l只是打印它的输出。它不是通过 Cat 提供的,甚至不是系统寻呼机(见下文)。您必须| batcat手动使用。
(也就是说,我系统上的蝙蝠版本crontab -l | batcat不会对任何东西进行着色,所以我不确定这里有多大价值)
好吧,首先,当您想要彩色输出时,您可以简单地使用batcat <file>or 。<command> | batcat这使得用法更加明确,因此不会弄乱任何不应该弄乱的东西。
您可以使用 自由定义另一个别名alias XXX="batcat",这样您就可以在交互式 shell 会话中以更少的输入来使用它。我建议不要在 Cat 上使用别名,但对我来说bat或bc似乎是很好的别名。
在 Zsh 等 shell 中,您可以考虑使用全局别名来节省更多输入并将命令简化为crontab -l B. 但要小心,全局别名本身就是一个蠕虫。
另一个想法是创建一个别名来重新运行前一个命令,并通过 Bat 传输其输出;例如:alias rebat='$(history -p !!) | batcat'。
然后,如果您运行crontab -l并决定宁愿通过 Bat 传输其输出,您只需键入rebat,它就会crontab -l | batcat为您运行。
Unix 有寻呼机的概念;一个可以一次显示一页文本并允许您浏览文本的程序。最普遍的寻呼机可能是Less。一些程序(man、git、systemctl 等)自动通过寻呼机发送其输出。
export PAGER=bat您可以使用(例如在您的)中将 Bat 设置为默认寻呼机.bashrc,这将使这些程序默认使用 Bat。
请注意,寻呼机必须被调用bat,而不是batcat。Bat 仅对输出进行着色,不提供分页。如果 Bat 发现其输出对于终端来说太长,它会自动通过 提供其输出$PAGER。
然而,从 开始$PAGER=bat,它将启动一个新的 Bat,并在那里提供其输出。新的 Bat 发现输出太长,因此它将启动一个寻呼机,这是另一个 Bat。这会无限重复(请参阅第 2023 期)。
为了防止这种情况,Bat 会检测寻呼机是否设置为 Bat,并悄悄地使用 Less 来代替分页。但这仅在寻呼机设置为 时有效bat,而不是batcat。
为了实现这一点,您可以符号链接batcat到bat某个地方。$HOME/bin这是我的偏好,但你需要设置 shell 才能使用它。/usr/local/bin将是一个系统范围的选择。
| 归档时间: |
|
| 查看次数: |
5018 次 |
| 最近记录: |