
Я использую gnome-terminal
bash, и когда у меня есть команда, которая должна перейти через строку, она просто остается на той же строке. Поэтому вместо:
echo "abcdefghijklmnopqrstuvwxyz"
я бы получил
opqrstuvwxyz""abcdefghijklmn
Или что-то похожее. Однако если я нажму Enter, команда все равно сработает. Я думаю, что это как-то связано с моей переменной PS1, но я не знаю, что с ней не так. Вот она:
export PS1='\e[1;35m[\u:\w]\$\e[0;35m '
решение1
Это кажется несколько связанным:
Страница man Bash рекомендует обернуть
tput
вывод в\[ \]
. Это помогает Bash игнорировать непечатаемые символы, чтобы правильно рассчитать размер приглашения.
" tput
Выход" в вашем случае выглядит так: \e[1;35m
, \e[0;35m
(есть два отдельных фрагмента для переноса). Их можно записать как \033[1;35m
и \033[0;35m
также. В общем случае вам нужно переносить любую непечатаемую последовательность.
Я изменил ваш PS1
:
export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '
и, похоже, у меня все работает без проблем.