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

użytkownik310685
źródło
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)
muru
źródło
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.

P.-H. Lin
źródło
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

Sylvain Pineau
źródło
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