Как зебру разделить на консоль?

Я бы хотел, чтобы терминал чередовал цвет фона на последовательных линиях, чтобы было легче видеть, где начинается, а где заканчивается. Это было бы особенно полезно при чтении журналов с помощью tail -f, но я бы предпочел решение, которое работает постоянно. Особенно, если это то, что я могу использовать с Terminator, хотя я бы хотел использовать другой терминал, если он имеет эту функцию.

4
задан 5 July 2014 в 23:25

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, и т.д.

я не уверен, что это делает вывод намного легче читать, но это, конечно, выглядит аккуратным.

3
ответ дан 5 July 2014 в 23:25

Другие вопросы по тегам:

Похожие вопросы: