Por que o código de notificação de status personalizado de Byobu não é exibido em cor? -- server campo com bash campo com byobu campo com scripts camp askubuntu Relacionado O problema

Why Byobu custom status notification code fail to show in color?


4
vote

problema

português

O código abaixo é executado bem no bash e mostra o texto com a cor de fundo verde adequada, mas quando adiciono ao ~/.byobu/bin/ pasta mostra os caracteres de escape. Algo como [42m [1maapla: 30.345 (b [m

  #!/bin/sh echo `tput setab 2;tput bold`AAPL:`curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&e=.csv' | cut -d, -f2;tput sgr0`    
english

The code below runs well in Bash and shows text with proper green background color but when I add it to the ~/.byobu/bin/ folder it shows the escape characters instead. Something like [42m[1mAAPL:30.345 (B[m

#!/bin/sh echo `tput setab 2;tput bold`AAPL:`curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&e=.csv' | cut -d, -f2;tput sgr0` 
           

Lista de respostas

4
 
vote

Se estiver usando o ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Backend para Byobu, você precisará usar um formato diferente para códigos de cores. Felizmente, é menos complicado do que o formato screen .

Para definir cores, use #[<color and attribute codes>] . Exemplos:

  • #[default] : restaurar cores padrão (use no final do seu status personalizado).
  • #[fg=red] : Defina a cor do primeiro plano para vermelho.
  • #[fg=#ff0000] : Defina a cor do primeiro plano para #ff0000 . Aceita apenas minúsculas - FF0000 não funciona.
  • #[bg=black] : torna o fundo preto.
  • #[fg=bold] : faz texto negrito . Veja abaixo para mais.
  • screen0 : swaps Primeiro plano / cores de fundo.

Você pode combiná-los, e. screen1 .

cores nomeadas: screen2 , screen3 , screen4 , screen5 , screen6 , screen7 , screen8 , screen9 , #[<color and attribute codes>]0 , #[<color and attribute codes>]1 , #[<color and attribute codes>]2 , #[<color and attribute codes>]3 , #[<color and attribute codes>]4 , #[<color and attribute codes>]5 , #[<color and attribute codes>]6 , #[<color and attribute codes>]7 , #[<color and attribute codes>]8

Atributos: #[<color and attribute codes>]9 , #[default]0 , #[default]1 , #[default]2 , #[default]3 , #[default]4 , #[default]5 , #[default]6

Você também pode usar as variáveis ​​do ambiente #[default]7 , abcdefghijklmnAbcdefghijklmn38 , abcdefghijklmn39 e #[fg=red]0 como cores. < / p >.


Para reproduzir com isso, crie um arquivo, #[fg=red]1 com o seguinte conteúdo e torná-lo executável.

  #[fg=red]2   

Isso deve criar uma notificação de status Black-on-White que diz "Hello World".


algumas notificações de status personalizadas para BYOBU

Aqui estão dois componentes de barra de status personalizados, e os códigos que os produzem:

  • #[fg=red]3
  • #[fg=red]4

Esta informação será provavelmente apenas se você estiver usando #[fg=red]5 e um shell habilitado para cores, no entanto :)


(fontes: #[fg=red]6 , #[fg=red]7 )

 

If using the tmux backend for byobu, you will need to use a different format for color codes. Luckily, it's less complicated than the screen format.

To set colors, use #[<color and attribute codes>]. Examples:

  • #[default]: restore default colors (use at the end of your custom status).
  • #[fg=red]: set the foreground color to red.
  • #[fg=#ff0000]: set the foreground color to #ff0000. Only accepts lowercase -- FF0000 won't work.
  • #[bg=black]: makes the background black.
  • #[fg=bold]: makes text bold. See below for more.
  • #[reverse]: swaps foreground/background colors.

You can combine them, e.g. #[fg=white,bold,bg=black].

Named colors: black, red, green, yellow, blue, magenta, cyan, white, black, brightblack, brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan, brightwhite

Attributes: dim, underscore, bold, reverse, standout, blinking, hidden, italics

You can also use the environment variables $BYOBU_LIGHT, $BYOBU_DARK, $BYOBU_ACCENT, and $BYOBU_HIGHLIGHT as colors.


To play with this, create a file, ~/.byobu/bin/1_hello with the following contents, and make it executable.

#!/bin/sh echo "#[reverse]Hello world#[default]" 

This should create a black-on-white status notification that says "Hello world".


A few custom status notifications for byobu

Here are two example custom status bar components, and the codes that produce them:

  • #[fg=#aa77cc,bg=#222222] @XXX.XX #[default]
  • #[fg=white,bg=black] xe2x9cx89 xefxb8x8fX #[default]

This information will probably only work if you're using tmux and a color-enabled shell, though :)


(Sources: /usr/lib/byobu/include/colors, /usr/lib/byobu/include/shutil)

 
 
1
 
vote

Você precisa de outros especificadores de cores na tela (veja manpage de tela (1) ) . Então, primeiro você deve salvar o valor em uma variável:

  #[fg=red]8   

e no segundo passo você pode distribuí-lo com #[fg=red]9 :

  #[fg=#ff0000]0   
 

You need other color specifiers in screen (see Manpage of screen(1)). So first you should save the value in a variable:

AAPL=$(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&=.csv' | cut -d, -f2) 

And in the second step you can output it with printf:

printf "\005{= b}%s%s\005{-}" "AAPL: " "$AAPL" 
 
 
 
 

Perguntas relacionadas

135  Como executar um script apenas clicando duas vezes como arquivos .exe no Windows?  ( How to execute a script just by double clicking like exe files in windows ) 
Como posso fazer um executável de script bash clicando duas vezes como .exe arquivos no Windows? Eu tentei Criando um lançador e atribuir o script a ele , ...

9  Como desligar o Ubuntu depois (2 horas) de ocioso?  ( How to shutdown ubuntu after 2 hours of idle ) 
em execução: xubuntu 14.04 32bit. Eu li vários desatualizados, não trabalhando, trabalhando diferente que quero respostas aqui e em outro lugar. Eu tinha um...

22  Bash Script não executando de Crontab [Duplicate]  ( Bash script not executing from crontab ) 
. Esta pergunta já tem respostas aqui : Por que os scripts crontab não estão funcionando? ...

6  Minha função de bash é executada apenas uma vez por terminal aberta  ( My bash function runs only once per terminal opened ) 
Quando eu tento executar minha função bash, definida em .bashrc, por uma segunda vez no mesmo terminal, ela não funciona. O código é o seguinte: lspci6 ...

11  Execute scripts automaticamente no servidor após conexão SSH  ( Run scripts automatically in server after ssh connection ) 
Como executar um script automaticamente no servidor em breve após o sistema do cliente, estabeleça conexão SSH com o servidor para ex: Suponha que um usuári...

3  dpkg sem shell  ( Dpkg with no shell ) 
Como executar o dpkg sem shell? Aqui está o meu problema: Eu furo e script autorun.sh na minha chave USB. Para executar este script, criei regras em /e...

0  Script Shell para instalar o software e configurar a rede  ( Shell script to install software configure network ) 
Ei, eu queria saber, como, depois de uma nova instalação do Ubuntu, eu posso instalar todos os softwares essenciais (VLC, Apache, MySQL, PHP, Java, NetBeanSet...

2  Como monitorar um arquivo local para alterações, aplique um regex Substituir e salve / sobrescreva em um arquivo de destino?  ( How to monitor a local file for changes apply a regex replace on it and save ov ) 
Eu gostaria de iniciar um script ou algo que assiste a um arquivo de texto para alterações. Quando o arquivo é alterado, eu quero executá-lo através de um ana...

0  Estágios diferentes no Bash Programming  ( Different stages in bash programming ) 
Eu tenho um programa bash com diferentes estágios como: $stage=1 if [ stage -le 1]; then echo "execute stage 1" fi if [ stage -le 2]; then echo "execute s...

2  Abra a pasta pai de um link simbólico por clique com o botão direito do mouse?  ( Open the parent folder of a symbolic link via right click ) 
Podemos abrir uma pasta pai de qualquer arquivo usando o script nautilus como #!/bin/bash nautilus "$1" Se eu fizer este script no link simbólico que...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.