我希望终端在连续的行上交替显示背景颜色,这样更容易看到一行从哪里开始,下一行从哪里结束。这在使用 tail -f 读取日志时特别有用,但是,我更喜欢始终有效的解决方案。特别是如果它可以与 Terminator 一起使用,尽管如果其他终端具有此功能,我愿意使用它。
答案1
可能需要自定义终端才能在所有情况下获得这种功能,但对于类似tail -f
以下python3
脚本的事情应该可以工作:
#!/usr/bin/python3
import shutil
import sys
try:
from termcolor import cprint
except:
print("Error: please install the python3-termcolor package")
sys.exit(1)
def expandtabs(line):
"""Tabs don't seem to be highlighted so expand them to spaces"""
result = ""
col = 0
for c in line:
if c == "\t":
next_col = 8 * ((col // 8) + 1)
result += " " * (next_col - col)
col = next_col
else:
result += c
col += 1
return result
def pad(line, n):
"""Pad a line until it is a multiple of n, to avoid jagged highlighting"""
while (len(line) % n) != 0:
line += " "
return line
# Get the width of the terminal
cols, rows = shutil.get_terminal_size()
try:
odd = True
for line in sys.stdin:
if odd:
cprint(pad(expandtabs(line.rstrip()), cols), "white", "on_grey")
else:
cprint(pad(expandtabs(line.rstrip()), cols), "grey", "on_white")
odd = not odd
except KeyboardInterrupt:
sys.exit(0)
如果将其保存为zebra.py
路径中的某个位置,则可以将其添加到以下命令中:
cat /proc/cpuinfo | zebra.py
tail -f /var/log/kern.log | zebra.py
使用该函数需要python3-termcolor
软件包和至少 Python 3.3 shutil.get_terminal_size
。还有很大的改进空间,可以尝试该python3-xtermcolor
软件包以获得不仅仅是几种颜色https://pypi.python.org/pypi/termcolor,添加从命令行读取文件的功能,而不仅仅是stdin
,等等。
我不确定它是否会使输出更容易阅读,但它确实看起来很整洁。