My .psqlrc
有以下选项
\setenv LESS '-iMSx4 -FXR'
\setenv PAGER 'less'
\pset pager always
我想要着色的 psql 输出是
{ +
\x1B[35m"\x1B[0m\x1B[35mr\x1B[0m\x1B[35m"\x1B[0m: [ +
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m1\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m2\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m3\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m4\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m5\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m6\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m7\x1B[0m\x1B[1m\x1B[92m"\x1B[0m,+
\x1B[1m\x1B[92m"\x1B[0m\x1B[32m8\x1B[0m\x1B[1m\x1B[92m"\x1B[0m +
] +
}
有没有办法让寻呼机知道\x1B
ansi 序列,或者告诉psql
显示时不将它们转换为十六进制表示形式?
输出应该看起来像,
The less
寻呼机可以被告知filter它的输入文件使用LESSOPEN
环境变量。
对于您的情况,这可能是一个脚本的名称,该脚本会更改所有\x1B
到 ASCII 转义字符,例如
sed -e 's/\x1B/^[/'
(where the ^[
is a literal control[ character: using controlV when inserting with a text editor helps).
进一步阅读:
- Unix 课程 - 用“少”显示更多 http://ref.web.cern.ch/ref/CERN/CNL/2002/001/unix-less/
- 如何在 Linux 中查看日志文件并在查看时应用自定义过滤器? https://stackoverflow.com/questions/2338812/how-can-i-view-log-files-in-linux-and-apply-custom-filters-while-viewing
-
less(1) https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/less.1.html手册页
每条评论:如果psql
通过管道调用寻呼机,绕过LESSOPEN
(给定一个工作file),您应该将寻呼机设置为执行过滤和分页组合的脚本,例如类似的脚本
#!/bin/sh
perl -pe "s|\\\(x..)|chr(hex(\$1))|ge" | less -iMSx4 -FXR
since perl
如果没有给出文件名,则从管道工作。
EDIT:
无需使用外部脚本的解决方案psql
only,
\setenv LESS '-iMSx4 -FXR'
\setenv PAGER 'perl -pe \'s|\\\\(x..)|chr(hex($1))|ge\' | less'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)