stderr 为红色
stderr 为红色。
在 write() 中添加了默认的钩子,以及一系列流函数 (fwrite、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf、fprintf
error ... ) 来为发送到 stderr 的所有输出添加颜色。
因此,它可以区分于 stdout。基本上,它包装文本
它会写入具有描述符"2"的文件,使用合适的 ANSI 逃逸码将文本
红色。
它实现为共享库,不需要重新编译
这要归功于动态链接器的 preload/insert 功能。
它在 Linux (使用 LD_PRELOAD)、FreeBSD (也使用 LD_PRELOAD) 上受到支持。
macOS (使用 DYLD_INSERT_LIBRARIES)。
观看此 简介 asciicast 来了解其运作方式。
克隆此仓库:
$ git clone git://GitHub.com/ku1ik/stderred.git
$ cd stderred
重要: 在下面所有情况下,请确保到 libstderred.so 的路径是绝对路径!
确保您已安装 cmake 和编译所需的 gcc 工具链:
sudo apt-get install build-essential cmake
sudo yum install make cmake gcc gcc-c++
pkg install cmake
构建:
$ make
在您的 shell 配置文件中导出 LD_PRELOAD 变量,方法是将以下内容添加到该文件中:
在您的 .bashrc/.zshrc 中:
export LD_PRELOAD="/absolute/path/to/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
在某些 Linux 发行版中,您可以在 64 位系统上安装 32 位的软件包。 然而,编译用于 64 位的共享库并不适用于 32 位的二进制文件。 通常情况下, 64 位的二进制文件会调用 32 位的二进制文件, 导致终端上打印出与不兼容的 LD_PRELOAD 共享库相关的警告消息。 幸运的是, Linux 的动态链接器具有称为动态字符串令牌 (DST) 的功能。 它允许在二进制文件运行时, 在 LD_PRELOAD 变量中动态地将 $LIB 令牌分别替换为 "lib" 或 "lib64", 以分别适用于 32 位和 64 位的二进制文件。 由于这一点, 您可以为两种体系结构编译标准库, 并自动使用适当的共享库版本。
例如,在 64 位的 Fedora 中,您需要为两种体系架构安装 libc 开发头文件:
暂无开放 Issues,或尚未同步最近议题。