bash - 使 bash 脚本打印 set -x 以粗体形式输出,但输出为普通文本
问题描述
我希望 .sh 中的每个命令都以粗体打印,但命令生成的输出不是粗体。
(这样我就可以清楚地看到脚本的作用——有很多输出)。
测试用例:
> cat foo.sh
#!/bin/bash
set -x
echo foo
> ./foo.sh
+ echo foo
foo
(我想要+ echo foo
粗体和foo
正常的,而不需要手动指定转义序列,这会因许多命令而变得难看)。
我知道如何使用终端转义序列echo
或printf
使用终端转义序列输出粗体文本;但是我怎样才能影响set -x
输出的格式呢?
解决方案
最简单的方法是在输出出现时对其进行解析。
$ ./foo.sh 2> >(sed "/+ .*/s//$(tput bold)&$(tput sr0)/")
您可以设置PS4
为 contains ,但是在打印之后tput bold
没有要执行的命令,因此无法将行为重置为正常。set -x
推荐阅读
- php - MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询?
- c++ - 如何使用 curl c++ 源发布 wav 文件数据,如何将 --data-binary 与 c++ 一起使用?
- node.js - 如何在heroku中获取节点服务器的端口
- python - 列表和字符串问题
- javascript - Javascript:从函数返回嵌套的承诺
- javascript - 反应 useEffect 和异步获取
- r - 在 Windows 上安装 pkgconfig
- php - Laravel 5.5.* SQLSTATE [23000]:完整性约束违规:19 NOT NULL 约束失败
- laravel - 如何从 laravel mix 迁移到纯 Webpack?
- angular - Ionic 4 - 硬件后退按钮禁用,然后将后退按钮启用为默认值