Jak wydrukować standardowy błąd na czerwono w konsoli zamiast używać tego samego koloru standardowego wyjścia?
Czy jest to możliwe przy użyciu Gnome Terminal ?
gnome-terminal
Aslan986
źródło
źródło
hilite
narzędzia . Musisz ręcznie dodaćhilite
polecenie do powłoki, aby go użyć, ale nadal jest to przydatne, jeśli wiesz lub podejrzewasz, że polecenie generuje błędy i chcesz je zlokalizować.Odpowiedzi:
Używam stderreda i znalazłem dobre rozwiązanie. Jak zauważa w pliku readme :
Kompilacja jest prosta, ale musisz ją skompilować ze źródła, postępując zgodnie z instrukcjami z witryny Github :
Następnie
Następnie
Najważniejszą częścią jest dodanie odpowiedniej linii do twojego
.bashrc
; musisz połączyć się zlibstderred.so
plikiem w katalogu kompilacji; musisz użyć bezwzględnej ścieżki, w której znajduje się katalog kompilacji (/ home / mike / src / stderred / build). Dodaję do mojego.bashrc
:Oczywiście, jeśli nie chcesz już z niego korzystać, usuń powyższą linię z
.bashrc
i ponownie uruchom terminal.Wyniki przetestowane na nieistniejących plikach (oczywiście nie będzie działać, gdy
sudo
zostanie użyte, ponieważ użytkownik.bashrc
nie będzie czytany, gdy ustawione jest inne środowisko):(Nawiasem mówiąc, to nie zmienia mojego monitu księcia @ nukem na czerwony, ponieważ był już czerwony )
źródło
Ogólnie tak, ponieważ Gnome Terminal jest terminalem ANSI i obsługuje standardowe kody ucieczki ANSI.
Oto przykład. Wpisz to w swoim terminalu:
-e
Opcja pozwala zinterpretować kody odwrotnego ukośnika, tak że\e
staje się „Esc” (kod szesnastkowy 0x1b). Alternatywnie, aby bezpośrednio wprowadzić ucieczkę, naciśnij ctrl-V Esc:Escape i
[
oba tworzą razem kod rozpoznawany przez terminal. Po tej sekwencji należy wstawić;
listę atrybutów oddzieloną dwukropkiem ( ), zakończoną przezm
. Patrz tutaj dla wszystkich kodów. Przykłady obejmują atrybut0
(zresetuj wszystkie atrybuty, jak można zauważyć powyżej, czyli sekwencję kończącą mój przykład) i garść stylu (podkreślone, jasne, pogrubione itp.), A także kilka atrybutów kolorów.Powyższa odpowiedź mówi, jak używać koloru podczas pisania własnego programu.
Jeśli jednak dobrze rozumiem twoje pytanie, chciałbyś mieć wizualną separację dla stderr i stdout wszystkich uruchomionych programów. Nie jest to proste bez analizowania ich wyników przez filtr. Oto przykład (znaleziony tutaj ), jak to zrobić:
Zdefiniuj funkcję (możesz umieścić ją w pliku .bashrc):
Uruchom programy takie jak to:
Stderr z programów zmieni kolor na czerwony.
źródło