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