Ostatnio narzędzia wiersza poleceń mają tendencję do używania fantazyjnych kolorów ANSI w danych wyjściowych dziennika (na przykład NPM i wiele narzędzi opartych na nodejs, rvm, docker i kilka innych „nowoczesnych” narzędzi).
To sprawia, że miło jest czytać na ekranie (*), ale nie tak przyjemnie, gdy chcesz przesłać dane wyjściowe do pliku dziennika lub przez transport, który nie obsługuje dobrze ANSI, na przykład różne narzędzia do zdalnego wykonywania i rozwiązania do monitorowania przez Internet. Wiele bardziej dojrzałych narzędzi miało przynajmniej dość przyzwoitości, aby wykryć, kiedy wyjście nie jest TTY i wyłączyć kolor, ale nie z tymi nowymi, wymyślnymi „przyjaznymi dla użytkownika” interfejsami CLI - co pozwala mi pozbyć się kolorów ANSI przez potokowanie wynik w jeszcze innym procesie.
s/\x1B\[[0-9]*\w//g
Wydaje się, że rozwodzenie się nad danymi wyjściowymi pozwala na wykonanie zadania, ale czy istnieje bardziej przejrzyste podejście niż kopiowanie wyrażeń regularnych do wszystkich moich skryptów?
(*) przynajmniej do momentu, gdy narzędzie spróbuje wyświetlić błędy w kolorze ciemnoczerwonym na terminalu z ciemnym tłem.
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?
- Zapisać filtr oczyszczania w pliku o nazwie „/ usr / local / bin / stripttycolor.sh” czy coś takiego? W ten sposób masz wyrażenie regularne ograniczone do jednej lokalizacji?--no-color
flagi. Wiele innych poleceń ma również podobne flagi.bower
.Odpowiedzi:
„ansifilter -p” może ci się przydać ...
Jest w repozytoriach Fedory; -p określa zwykły wynik:
źródło