如何给控制台添加斑马条纹?

如何给控制台添加斑马条纹?

我希望终端在连续的行上交替显示背景颜色,这样更容易看到一行从哪里开始,下一行从哪里结束。这在使用 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,等等。

我不确定它是否会使输出更容易阅读,但它确实看起来很整洁。

相关内容