(2 odpovědi)
Uzavřeno před 4 lety.
Do svého ~/.bashrc
jsem přidal následující :
export PS1="\e[0;35m[\[email protected]\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"
bohužel teď, pokaždé, když do bash vložím něco dlouhého, zvlní se to a tab
postavy se objevují po celé obrazovce a řádky se navzájem požírají, ví někdo proč?
Přijatá odpověď:
V minulosti jsem měl také problém s barevnými kódy ANSI, které se pletly s navigací v příkazovém řádku; musíte umístit kódy ANSI kolem \[ \]
aby příkazový shell věděl, jak je (ne) vzít v úvahu jako součást vstupního řetězce.
Jako v:
export PS1="\[\e[0;35m\][\[email protected]\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"
Nějaké vysvětlení, proč shell potřebuje \[
a \]
:Aby mohl shell nakreslit výzvu na správné pozice v matici znaků terminálu, potřebuje znát správnou délku řetězce výzvy, což je množství tisknutelného postavy, tj. E. neřídí znaky ani sekvence znaků.
Shell však neví, které sekvence znaků terminál považuje za tisknutelné. Proto je potřeba poskytnout shellu rady, aby bylo možné rozlišit mezi tisknutelnými a netisknutelnými sekvencemi, což je účelem \[
a \]
.