考虑我的 .bashrc 中的以下 env 导出:
LESS_TERMCAP_mb=$(printf "\e[1;31m")
LESS_TERMCAP_md=$(printf "\e[1;31m")
LESS_TERMCAP_me=$(printf "\e[0m")
LESS_TERMCAP_se=$(printf "\e[0m")
LESS_TERMCAP_so=$(printf "\e[1;44;33m")
LESS_TERMCAP_ue=$(printf "\e[0m")
LESS_TERMCAP_us=$(printf "\e[1;32m")
这很好,可以按预期工作,但不幸的是,当我将 env 转储到控制台时,它会输出 ansi 颜色并且基本上会弄乱终端的显示。我可以将 env 传递到 less 以清理 ansi 代码,但我认为可能有更好的方法来做到这一点。
我创建了以下函数,它基本上在调用一些终端应用程序之前内联设置这些变量,但它没有为所有应用程序设置它。
less() {
env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
LESS_TERMCAP_md=$(printf "\e[1;31m") \
LESS_TERMCAP_me=$(printf "\e[0m") \
LESS_TERMCAP_se=$(printf "\e[0m") \
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
LESS_TERMCAP_ue=$(printf "\e[0m") \
LESS_TERMCAP_us=$(printf "\e[1;32m") \
less "$@"
}
有没有更好的方法或任何方法来编写环境变量的脚本,使它们包含 ANSI 转义序列,但它们在通过 env 显示时不评估?