На терминалах, которые его поддерживают, вы можете использовать tput sc
для сохранения позиции курсора и tput rc
для восстановить его:
i=0
tput sc
while sleep 1; do
tput rc
echo "line$((i=i+1))"
echo "line$((i=i+1))"
echo "line$((i=i+1))"
echo "line$((i=i+1))"
done
Вы можете сохранить эти escape-последовательности в переменной, чтобы не вызывать каждый раз tput
:
rc=$(tput rc) ||
echo >&2 "Warning: terminal doesn't support restoring the cursor"
...
printf '%s\n' "${rc}line1..."
На редких терминалах, которые его не поддерживают, вы всегда можете использовать позиционирование курсора последовательности,
while sleep 1; do
echo "line$((i=i+1))"
echo "line$((i=i+1))"
echo "line$((i=i+1))"
echo "line$((i=i+1))"
tput cuu 4 # or up=$(tput cuu1); printf %s "$up$up$up$up"
done
См. справочную страницу terminfo
в разделе 5 (если ваша система поставляется с ncurses) для получения более подробной информации.
Да, вы можете использовать SHIFT для ввода символов верхнего регистра.
Чтобы удалить символ, просто используйте клавишу BACKSPACE , затем введите правильный символ.