Istnieje wiele samouczków / postów online (np. Http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) o tym, jak dostosować monit w trybie bash przez ustawienie PS1
. Czy istnieje sposób na dostosowanie koloru / pogrubienia polecenia, które wpisuję?
Innymi słowy, jako przykład powiedzmy, że chciałem zielony monit, pogrubienie niebieskiego polecenia, a następnie wyjście w dowolnych kolorach, które byłyby domyślne. W poniższym przykładzie już wiem, jak joe>
ustawić „ ” zielony, niebieski, pogrubiony, cokolwiek, ustawiając PS1
. Ale czy istnieje sposób, aby git status
na przykład pokazać śmiałość?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
preexec() { printf '\e[0m' }
Odpowiedzi:
Będziesz musiał zostawić kolor kończący się po PS1 (zacznij go później
>
w przykładzie), a następnie użyjDEBUG
pułapki bash, aby wyczyścić kolor przed uruchomieniem polecenia (ale po naciśnięciu klawisza Enter w powłoce. Spróbuj czegoś takiego :źródło
ls --color=always
kolorowe)?^[(B^[[m
). Zdarza się to jednak tylko na niektórych systemach: przetestowałem to na dwóch systemach, z których oba działały na Ubuntu 12.04 LTS, i tylko jeden z nich miał zakłócenia.Dla kompletności, oto jak ustawić kolor zachęty i kolor wprowadzania wiersza poleceń w bash. Umieść te linie w swoim
.bashrc
.Pułapka DEBUG, jak sugeruje Chris Down , służy do resetowania atrybutów tekstu. Służy do debugowania, ale przydatne jest również wykonanie kodu przed wykonaniem polecenia wpisanego przez użytkownika .
W ustawieniu monitu:
\[…\]
jest używany wokół sekwencji ucieczki, aby powiedzieć bashowi, że nie zajmują żadnej nieruchomości ekranowej (bez nich ekran stałby się zniekształcony, gdy bash musiałby przerysować monit).\e[…m
gdzie…
jest liczbą, lub bardziej ogólnie sekwencją liczb oddzieloną średnikami, jest sekwencją ucieczki wysłaną do terminala, aby wpłynąć na kolor i inne atrybuty poniższego tekstu. Na przykład1;34
ustawia pogrubiony niebieski;0;32
resetuje wszystkie atrybuty, a następnie zmienia kolor na zielony. Dostosuj się do smaku.\w\$
wydrukuj bieżący katalog i$
lub#
. Możesz oczywiście zmienić to na co chcesz i wstawić zmiany atrybutów tekstowych pomiędzy nimi, jeśli chcesz.źródło
Właśnie uczę się o poleceniach BASH i siedzę tutaj, bawiąc się poleceniami kolorów w mojej wersji. Wymyśliłem to rozwiązanie:
Za pomocą tego polecenia:
Dekonstrukcja: PS1 =: uruchamia polecenie PS1
'': zawiera polecenie w pojedynczym cudzysłowie (więc BASH nie uważa, że to polecenie)
\: każde indywidualne polecenie zaczyna się od tego
[]: zawiera każde polecenie
\ e (może być również \ 033 znakiem ucieczki ASCII): uruchamia polecenie koloru
Polecenie koloru poprzedza rzecz, której dotyczy.
[\ e [0; 36m]: cyan
\ h: nazwa hosta
„>”: drukowane po nazwie hosta
[\ e [0; 31m]: czerwony
Najwyraźniej czerwone polecenie na końcu powoduje, że dane wejściowe stają się czerwone. Po prostu zmień kolory według własnych upodobań i właśnie tego szukasz.
Ta strona pomogła mi trochę:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
Moja wersja: GNU bash, wer. 4.2.46
Dbać,
Łasica
źródło