AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1517178
Accepted
Arianna
Arianna
Asked: 2024-06-11 00:04:56 +0800 CST2024-06-11 00:04:56 +0800 CST 2024-06-11 00:04:56 +0800 CST

Ubuntu 终端每行颜色交替

  • 772

我的视力越来越差,而且我的工作要求我使用大量基于终端的程序和基于表格的输出(见下文)。查看单个行并获取所需信息可能非常困难。我正在寻找一种方法,让终端以交替颜色显示背景的每一行 [编辑:](即默认为紫色),以便更好地引导我的眼睛。有没有办法在 Ubuntu 终端中做到这一点,或者其他提供此选项的终端程序?我真的很难找到任何东西

在此处输入图片描述

[编辑:]

@kos 对此的回应与 Xspec 兼容:

在~/.bashrc:

alias colorize="perl -pe '
    if( \$. %2) {
        s/^/\e[38;5;15m/; s/^/\e[48;5;238m/
    }
    else {
        s/^/\e[38;5;0m/; s/^/\e[48;5;249m/
    }

    s/\$/\e[K/;
    s/\$/\e[0m/
'"

用法:

<command> | colorize

但是有一个问题,我看不到我的活动提示符(即“XSPEC12>”)或我在提示符中输入的内容。一旦我按下回车键,它就会显示出来,但我在输入时看不到它

command-line
  • 4 4 个回答
  • 3190 Views

4 个回答

  • Voted
  1. marcelm
    2024-06-11T23:24:05+08:002024-06-11T23:24:05+08:00

    Ubuntu 使用 Gnome 终端,它有一个增加行间距的选项。该选项位于汉堡菜单 > 首选项 > 配置文件 > 文本 > 单元格间距 > 高度中:

    Gnome 终端偏好设置

    将单元格高度间距设置为 1.4 会改变输出:

    具有默认间距的命令输出

    到此处,您可能会更容易地跟踪这些行:

    垂直间距增加的命令输出

    在相同的设置下,您还可以增加字体大小,这也可能有帮助。

    • 12
  2. Best Answer
    jpa
    2024-06-12T18:27:04+08:002024-06-12T18:27:04+08:00

    使用背景图像

    不幸的是,gnome-terminal不再具有背景图像功能,但 Konsole 仍然具有。对于 Konsole,可以通过在配置文件设置中创建新的配色方案来设置。

    创建一个与终端字体间距相同的条纹图像。最简单的方法是截取屏幕截图并在其上绘图:

    背景图像示例

    将其设置为终端背景,一切就会出现条纹:

    示例用法

    缺点是,如果缩放终端字体,间距将不会缩放。不过,可以创建具有不同字体设置和相应背景图像的多个配置文件。

    • 12
  3. Hannu
    2024-06-11T01:48:55+08:002024-06-11T01:48:55+08:00

    尝试这个:

    将此文本放入striped.py:

    #!/usr/bin/env python3
    # -*- coding: iso-8859-1 -*-
    
    import sys
    
    c = ['\x1b[36m', '\x1b[37m']  # alternate between these two, for odd/even lines.
    
    print(
        ''.join([
            c[n%2] + line 
            for n,line in enumerate(sys.stdin)
            ]),
        '\n\x1b[0m'
        )
    

    使其可执行chmod 755 striped.py

    然后使用它,例如maketable | ./striped.py

    ...它将每隔一行打印不同的颜色。

    要使用less此输出,请添加其-R选项,如 中所示 ... | less -R。

    我试图找到一对既可区分又互相对比的颜色。

    尝试示例

    $ striped.py < /etc/os-release | less -R
    

    更多的

    如果你愿意,你可以有编号行;这可以通过添加来实现(以一种奇特的方式)

    rvson = '\x1b[7m'
    rvsoff = '\x1b[27m'
    

    在之后的行上c = ...然后更改

    c[n%2] + line
    

    插入+ f'{rvson}{n:>4}:{rvsoff} ',如...

    c[n%2] + f'{rvson}{n:>4}:{rvsoff} ' + line
    

    选择

    使用暗色文本代替颜色;将c = ...行更改为

    c = ['\x1b[2m', '\x1b[22m']
    

    注意:在 Windows/cmd.exe 中不起作用,它只是被忽略。


    参考: ANSI 转义代码 - 维基百科


    对于 Windows cmd 用户:添加

    import os
    os.system("")
    

    例如在之后的一行中import sys- 这神奇地初始化了(一些)ANSI 转义代码支持。

    “这就是 Windows 的方式”——总是需要某种特殊的魔法。


    编辑2024-06-12:
    替代方案:制作条纹背景,使用与上面“相同”的代码。

    #!/usr/bin/env python3
    # -*- coding: iso-8859-1 -*-
    
    import os
    os.system("") # make this work in Win/cmd.exe
    
    import sys
    
    c = [
        '\x1b[48;2;80;80;80m',
        '\x1b[48;2;100;100;100m'
        ]
    
    print(
        ''.join([
            c[n%2] + '\x1b[2K' + line 
            for n,line in enumerate(sys.stdin)
            ])+'\x1b[0m',end=''
        )
    print()
    

    注意:
    *[48;2;80;80;80m表示4背景颜色(3用于前景),
    以及;80;80;80R、G 和 B - 因为它们在这里相同,所以我们得到灰色调。

    任何其他 RGB 值也适用,即创建您自己的粉红色颜色版本;
    ;255;0;255是“全”粉红色(亮洋红色),请减少 255 以获得不太鲜艳的色调。选择两个略有不同的色调,并将它们作为 a 和 b 放在里面c = [ a, b ]

    最后但同样重要的一点+ '\x1b[2K' +是,使背景出现在整行上,无论窗口大小、行长或高度如何 - 仅取决于c[n%2]设置颜色。

    • 8
  4. kos
    2024-06-11T04:41:04+08:002024-06-11T04:41:04+08:00

    注意:这些是给程序输出着色的很好的通用解决方案。但它们不能很好地处理交互式 shell,因为每次在交互式 shell 中运行命令时,只有在按下 Enter 键后,提示符和命令才会被绘制到屏幕上。有关交互式 shell 的使用,请参阅@jpa 的解决方案。


    以下是两个解决方案,其概念与 Hannu 的解决方案类似(但使用别名和 Perl);

    一个将为文本着色,另一个将为文本和背景同时着色;

    两者都需要在 中定义别名~/.bashrc;

    对于第一个选项,我选择了白色 ( \e[37m) 和红色 ( \e[31m),对于第二个选项,我选择了深灰色上的白色 ( \e[38;5;15m/ \e[48;5;238m) 以及浅灰色上的黑色 ( \e[38;5;0m/ \e[48;5;249m),但您应该根据最适合您视力的颜色来选择自己的颜色。

    第二种选择将需要终端提供更广泛的 ANSI 支持(gnome-terminal但在大多数现代终端中它都可以正常工作)。

    选项 1(更轻松的方法):给文本上色

    截图1

    在~/.bashrc:

    alias colorize="perl -pe '\$. %2 ? s/^/\e[37m/ : s/^/\e[31m/; s/\$/\e[0m/'"
    

    用法:

    <command> | colorize
    

    选项 #2(更重的方法):给文本和背景上色

    截图2

    在~/.bashrc:

    alias colorize="perl -pe '
        if( \$. %2) {
            s/^/\e[38;5;15m/; s/^/\e[48;5;238m/
        }
        else {
            s/^/\e[38;5;0m/; s/^/\e[48;5;249m/
        }
    
        s/\$/\e[K/;
        s/\$/\e[0m/
    '"
    

    用法:

    <command> | colorize
    

    使用转义码来为输出着色的缺点是输出将被转义码污染;大多数情况下这不会成为问题,因为主要目的显然是运行别名来为终端的输出着色,但值得注意的是,例如,foo | colorize | tee >file将导致file包含转义码。

    • 6

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve