W wierszu polecenia Bash (zmienna PS1) wywołuję funkcję, aby potencjalnie dodać tekst do monitu: export PS1="\u@\h \$(my_function) \$ "
Jednak funkcja w monicie zawiera kody kolorów ANSI, które zmieniają się w zależności od wyniku funkcji (czasami czerwony, czasem zielony). Dodanie „ \[
” do zmiennej PS1 powinno uciec od tych kodów jako nie drukujących, ale jeśli wykonam echo
funkcję, „ \[
” zostanie wydrukowany dosłownie w wierszu polecenia.
Jak mogę uciec od kodów kolorów ANSI z funkcji w celu użycia w zachęcie?
echo -e "\001\e[31m\002RED"
działa zgodnie z oczekiwaniami. Dzięki!\001
i\002
będą działać. W przeciwnym razie nie jestem pewien. Dash na przykład zdecydowanie nie używa readline .Oto ładna pełna odpowiedź. Musiałem zrobić o wiele więcej, aby dowiedzieć się, dokąd pójdzie \ 001 itd. Mam nadzieję że to pomoże.
Sposób, w jaki go tu skonfigurowałem, nawiasy gałęzi git pojawiają się tylko wtedy, gdy jesteś w gałęzi git, w przeciwnym razie jest puste.
źródło
W oparciu o odpowiedź grawity , następujące sekwencje zawierają sekwencje kontrolne ANSI w ASCII
SOH
(^A
) iSTX
(^B
), które są odpowiednio równoważne\[
i\]
:Używaj go jak:
Lub:
Jako bonus, wielokrotne uruchomienie tej funkcji nie spowoduje zmiany znaczenia już usuniętych kodów sterujących.
źródło
Jeśli chcesz ich użyć w wierszu polecenia, musisz wykonać
\[
. Ale jeśli chcesz użyć go w echu, musisz użyć\033[
.źródło