Хорошо наконец я нашел решение. Проблема была этим $PS1
не имел цветных последовательностей включенными с \[
и \]
. Перед исправлением $PS1
был:
export PS1='\e[1;32m\u@\h:\w$ \e[m'
после того, как зафиксируйте:
export PS1='\[\e[1;32m\]\u@\h:\w$ \[\e[m\]'
Я нашел решение здесь: https://stackoverflow.com/questions/2024884/commandline-overwrites-itself-when-the-commands-get-to-long
sed -e '/^precalculated/!s/^\(.\{47\}\).*$/\1/' < h
В этом случае первые 47 символов на любой строке не совпадают с предварительно рассчитанными
в начале. Совпадение строк просто копируется.
Можно было бы сопоставить любую начальную разделенную пробелами последовательность пар гекс-цифр в группу замещения, а затем просто заново заменить эту группу, например,
sed -r 's/^(([[:xdigit:]]{2}\s+)+).*$/\1/'