Как очистить ввод для чтения при использовании tput rc?

#bash #tput

#bash #tput

Вопрос:

 $ cat test.sh
#!/bin/bash

sc=$(tput sc)
rc=$(tput rc)

printf "$sc%sn" "Type word"
read -r word
printf "$rc%sn" "Type word (again)"
read -r word_confirmation

$ ./test.sh
Type word (again)
test
 

Я бы хотел test , чтобы меня очистили.

Ответ №1:

tput ed очищает экран от текущей позиции курсора до конца экрана (сломан в macOS, см. Этот ответ).

 #!/bin/bash

tput sc
printf "%sn" "Type word"
read -r word
tput rc
tput ed
printf "%sn" "Type word (again)"
read -r word_confirmation
 

экран очистки tput

Комментарии:

1. Привет, спасибо за помощь. Приведенный выше код, похоже, не работает … весь экран очищен… не только test . Не могли бы вы настроить свой блок кода, чтобы расширить мой код?

2. По-видимому, в macOS есть ошибка , которая ломается tput ed .

3. Используете ли вы macOS и tput cd работает ли на вашем компьютере? кстати, мой вывод для printf '%q' "$(tput ed)" $'E[J'

4. Я разрабатывал скрипт на macOS. printf '%q' "$(tput ed)" выводит '' на macOS Catalina. printf '%q' "$(tput cd)" выходы $'33'[J .