Jak odróżnić polecenie od wyniku za pomocą koloru


6

Muszę odróżnić polecenie od wyniku za pomocą koloru

lubię to

$ cat file-name (this should be in some color say like red)
some test in file OUTPUT (this output should be in some other color say like green) 

dzięki czemu mogę łatwo odróżnić polecenie od jego wyniku w przypadku poleceń o dużej mocy

I muszę sprawić, aby działało dla każdego polecenia wpisanego na terminalu, jeśli to możliwe, nawet polecenia nie znaleziono można wydrukować w innym kolorze


Możesz odnieść się do tego: unix.stackexchange.com/questions/146145/…
cuonglm

Jak miło! Pytanie o Debiana z odpowiedzią na Unix i Linux .
muru

Odpowiedzi:


6

Dodaj to do ~/.bashrc:

        RED="\[\033[0;31m\]"
     YELLOW="\[\033[1;33m\]"
      GREEN="\[\033[0;32m\]"
       BLUE="\[\033[1;34m\]"
  LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
       CYAN="\[\033[0;36m\]"
 LIGHT_CYAN="\[\033[1;36m\]"
      WHITE="\[\033[1;37m\]"
 LIGHT_GRAY="\[\033[0;37m\]"
 COLOR_NONE="\[\e[0m\]"

PS1="$PS1${LIGHT_RED}"
trap '[[ -t 1 ]] && tput sgr0' DEBUG

Zmienne kodów kolorów nie są konieczne, ale upraszczają rzeczy. Zmień LIGHT_REDinne kolory w zależności od potrzeb. Efekt:

CZERWONY NIEBIESKI

Musisz wprowadzić źródła, .bashrcaby zmiany zostały wprowadzone:

. .bashrc

Nie LIGHT_REDjest tak naprawdę dla mnie jasnoczerwony z powodu profilu kolorów, który ustawiłem dla terminala.

Źródła:

  1. Jak zatrzymać kolor PS1 powłoki bash, aby zatrzymać się na końcu polecenia?
  2. Wiersz polecenia Bash z gałęzią virtualenv i git (dla kolorów)

tak, ten działa tak, jak chciałem
user310685

ale dzięki temu jestem w stanie pokolorować polecenie, ale nie jestem w stanie pokolorować danych wyjściowych polecenia, którego użyłem do tegotrap '[[ -t 1 ]] && tput setaf 2' DEBUG
user310685,

@ user310685 Zazwyczaj korzystam z ustawień kolorów terminala, aby ustawić kolor wydruku.
muru

tak, to działa dobrze
użytkownik310685

0

możesz tego spróbować

grep --color=always . file-name

Kropka jest w tym przypadku niezbędna, jest to wyrażenie regularne do dopasowania dowolnego pojedynczego znaku.


jak mam tego spróbować
user310685

1
ale myślę, że to nie zadziała w przypadku innych poleceń, takich jak (ls)
user310685

@ user310685 użyj tego polecenia w swoim kitie, i tak jest to do zastąpienia 'cat', to nie będzie działać z ls.
P.-H. Lin

Chciałem, aby działało to dla każdego polecenia
user310685

0

Możesz użyć sekwencji ucieczki ANSI, aby odróżnić polecenie od jego wyniku, jak poniżej:

echo -e "\e[31m"; echo "ls -al"; echo -e "\e[0m"; echo -e "\e[32m"; ls -al --color=never ; echo -e "\e[0m";

wprowadź opis zdjęcia tutaj

Źródło: http://misc.flogisoft.com/bash/tip_colors_and_formatting


to nie działa
user310685

Wydaje mi się, że istnieje pewna różnica w wersji, że nie działa dla mnie, ale myślę, że uruchomienie go nie sprawi, że będzie działać dla każdego polecenia. muszę ręcznie dodać go do każdego polecenia
user310685
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.