AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 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

Terminal Ubuntu com cores alternadas para cada linha

  • 772

Tenho problemas de visão que estão piorando cada vez mais, e meu trabalho exige que eu use muitos programas baseados em terminal com saídas baseadas em tabelas (veja abaixo). Pode ser muito difícil analisar linhas individuais e acessar as informações de que preciso. Estou procurando uma maneira de fazer o terminal mostrar cada linha [EDIT:] do fundo (ou seja, onde roxo é o padrão) em cores alternadas para guiar melhor meus olhos. Existe uma maneira de fazer isso no terminal Ubuntu ou em outro programa de terminal que ofereça essa opção? Estou realmente lutando para encontrar alguma coisa

insira a descrição da imagem aqui

[EDITAR:]

A resposta do @kos usando isso funciona com o Xspec:

Em~/.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/
'"

Uso:

<command> | colorize

No entanto, há um problema em que não consigo ver meu prompt ativo (ou seja, "XSPEC12>") ou o que estou digitando no prompt. Depois de pressionar Enter, ele aparece, mas não consigo vê-lo enquanto digito

command-line
  • 4 4 respostas
  • 3190 Views

4 respostas

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

    O Ubuntu usa o Gnome Terminal, que tem a opção de aumentar o espaço entre suas linhas. A opção está no menu hambúrguer > Preferências > Perfil > Texto > Espaçamento entre células > altura:

    Preferências do terminal Gnome

    Definir o espaçamento da altura da célula para 1,4 altera a saída de:

    Saída de comando com espaçamento padrão

    para isso, onde pode ser mais fácil seguir as linhas para você:

    Saída de comando com espaçamento vertical aumentado

    Nas mesmas configurações, você também pode aumentar o tamanho da fonte, o que também pode ser útil.

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

    Use uma imagem de fundo

    Infelizmente, o gnome-terminal não possui mais o recurso de imagem de fundo , mas por exemplo, o Konsole ainda possui. Para o Konsole, isso é definido nas configurações do perfil, criando um novo esquema de cores.

    Crie uma imagem com listras no mesmo espaçamento da fonte do terminal. É mais fácil fazer isso tirando uma captura de tela e desenhando sobre ela:

    Exemplo de imagem de fundo

    Defina-o como plano de fundo do terminal e você terá listras em tudo:

    Exemplo de uso

    A desvantagem é que o espaçamento não será dimensionado se você ampliar a fonte do terminal. Embora seja possível criar vários perfis com diferentes configurações de fonte e imagens de fundo correspondentes.

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

    Experimente isto:

    Coloque este texto em 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'
        )
    

    Torne-o executável porchmod 755 striped.py

    E então use-o como por exemplomaketable | ./striped.py

    ... que imprimirá todas as outras linhas em cores diferentes.

    Para usar lesscom esta saída, adicione sua -Ropção como em ... | less -R.

    Tentei encontrar um par de cores que fossem distinguíveis, mas contrastantes entre si.

    Exemplo para experimentar

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

    Mais

    Se desejar, você pode ter linhas numeradas; isso pode ser feito (de maneira sofisticada) adicionando

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

    nas linhas seguintes c = ...e depois altere

    c[n%2] + line
    

    com + f'{rvson}{n:>4}:{rvsoff} 'inserido, como em...

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

    Alternativa

    Use texto esmaecido em vez de cores; mude a c = ...linha para

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

    Notável por isso: Não funciona em Windows/cmd.exe, é simplesmente ignorado.


    Ref: código de escape ANSI - Wikipedia


    Para usuários do Windows cmd : adicione

    import os
    os.system("")
    

    por exemplo, em uma linha após import sys- isso inicializa magicamente (alguns) suporte ao código de escape ANSI.

    "Esse é o jeito do Windows" - sempre é necessário algum tipo de magia especial.


    Editar 12/06/2024:
    Alternativa: Faça um fundo listrado , usando o "mesmo" código acima.

    #!/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()
    

    Nota:
    * [48;2;80;80;80mtem a 4cor de fundo para (use 3para primeiro plano) e
    para ;80;80;80R, G e B - como são iguais aqui, obtemos um tom de cinza.

    Quaisquer outros valores RGB também funcionarão, ou seja, crie sua própria versão colorida em rosa;
    ;255;0;255é rosa "cheio" (magenta brilhante), reduza os 255 para obter um tom menos colorido. Escolha dois tons ligeiramente diferentes e coloque-os como aeb dentroc = [ a, b ]

    E por último mas não menos importante, + '\x1b[2K' +faz com que o fundo apareça em toda a linha, independentemente do tamanho da janela, comprimento ou altura da linha - dependendo apenas da c[n%2]definição da cor.

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

    Nota : estas são boas soluções gerais para colorir a saída de um programa. Mas eles não lidam bem com shells interativos, pois cada vez que você executa um comando no shell interativo, o prompt e o comando serão desenhados na tela somente após pressionar Enter. Para uso com shells interativos, consulte a solução do @jpa .


    Abaixo estão duas soluções, ambas semelhantes em conceito à solução de Hannu (mas usando aliases e Perl);

    Um irá colorir o texto, o outro irá colorir o texto e o fundo;

    Ambos exigem a definição de um alias em ~/.bashrc;

    Eu escolhi branco ( \e[37m) e vermelho ( \e[31m) para a primeira opção e branco em cinza escuro ( \e[38;5;15m/ \e[48;5;238m) e preto em cinza claro ( \e[38;5;0m/ \e[48;5;249m) para a segunda opção, mas você provavelmente deve escolher suas próprias cores com base nas que melhor se adequam à sua visão. .

    A segunda opção exigirá suporte ANSI mais extenso do terminal (mas vai funcionar bem gnome-terminalna maioria dos terminais modernos).

    Opção nº 1 (abordagem mais leve): colorir o texto

    captura de tela1

    Em ~/.bashrc:

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

    Uso:

    <command> | colorize
    

    Opção nº 2 (abordagem mais pesada): colorir o texto e o fundo

    captura de tela2

    Em ~/.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/
    '"
    

    Uso:

    <command> | colorize
    

    A desvantagem de usar códigos de escape para colorir a saída é que a saída ficará poluída com os códigos de escape; na maioria das vezes isso não será um problema, pois o objetivo principal é obviamente executar o alias para colorir a saída para o terminal, porém é importante notar que, por exemplo, foo | colorize | tee >fileresultará na filecontenção dos códigos de escape.

    • 6

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve