如何在脚本中减少使用而又不获取ESC转义字符?


12

当我less在命令行使用时,输出就像 在此处输入图片说明

但是当我less在bash脚本中使用时,我得到: <code> [![在此处输入图片描述] [1]] [1] </ code>

如何less在bash脚本中使用而不获取所有转义字符,并使它像在交互式命令行中那样工作?


1
您有一个环境变量,其名称开头是LESS在交互式外壳程序中(但在您的外壳程序脚本中)设置为某个值。进行操作printenv | grep LESS以找出其身份,然后您也可以在shell脚本中进行设置,或使用等效的命令行选项。
zwol

Answers:


29

使用-R标志:

-r或--raw-control-chars

导致显示“原始”控制字符。默认设置是使用脱字符号显示控制字符。例如,控件A(八进制001)显示为“ ^ A”。警告:使用-r选项时,less不能跟踪屏幕的实际外观(因为这取决于屏幕对每种控制字符的响应方式)。因此,可能导致各种显示问题,例如长线在错误的位置被分割。

-R或--RAW-CONTROL-CHARS

与-r类似,但是仅以“原始”形式输出ANSI“颜色”转义序列。与-r不同,在大多数情况下,屏幕外观都可以正确维护。ANSI“颜色”转义序列是以下形式的序列:

           ESC [ ... m

其中“ ...”是零个或多个颜色指定字符为了跟踪屏幕外观,假定ANSI颜色转义序列不移动光标。通过将环境变量LESSANSIENDCHARS设置为可以结束颜色转义序列的字符列表,您可以少考虑“ m”以外的字符可以结束ANSI颜色转义序列。通过将环境变量LESSANSIMIDCHARS设置为可以显示的字符列表,您可以少考虑ESC和m之间可能会出现标准字符以外的字符。

less手册页。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.