Я пытаюсь оживить следующее искусство ASCII. (Сейчас у меня есть два файла, и я могу добавить больше позже для более точной анимации.)
$ cat ~/aks1.txt
\ RTX /
\ /
\ WAZUH LAB /
] [ ,'|
] [ / |
]___ ___[ ,' |
] ]\ /[ [ |: |
] ] \ / [ [ |: |
] ] ] [ [ [ |: |
] ] ]__ __[ [ [ |: |
] ] ] ]\ _ /[ [ [ [ |: |
] ] ] ] (A) [ [ [ [ :===='
] ] ]_].nRn.[_[ [ [
] ] ] HHUHH. [ [ [
] ] / `HN("N \ [ [
]__]/ HNH " \[__[
] NNN [
] / N/" \ [
] / N H \ [
/ N \
/ q, \
/ \
$ cat ~/aks2.txt
\ RTX /
\ /
\ WAZUH LAB /
] [ ,'|
] [ / |
]___ ___[ ,' |
] ]\ /[ [ |: |
] ] \ / [ [ |: |
] ] ] [ [ [ |: |
] ] ]__ __[ [ [ |: |
] ] ] ]\ _ /[ [ [ [ |: |
] ] ] ] (A) [ [ [ [ :===='
] ] ]_].nRn.[_[ [ [
] ] ] .HHUHH [ [ [
] ] / #")NH` \ [ [
]__]/ " HNH \[__[
] NNN [
] / "\N [
] H N \ [
/ / N \ \
/ / ,p \ \
/ \
Вот мой код:
if [[ -t 0 ]]; then
old_tty=$(stty --save)
stty raw -echo min 0
fi
while IFS= read -r REPLY; [[ -z "$REPLY" ]]; do
clear
cat ~/aks1.txt
usleep 500000
clear
cat ~/aks2.txt
((c++)) && usleep 500000
done
if [[ -t 0 ]]; then
stty "$old_tty"
fi
echo
Плюсы:
- Простой подход/решение
- Не требуется подстановка сложных переменных (в местах расположения экранов tput cup)
- Работает хорошо до тех пор, пока не будет нажата ЛЮБАЯ клавиша, поэтому для запуска анимации не требуется жестко закодированная переменная COUNTER.
- Анимация вроде работает (анимация идет, но вывод не идеально рендерится).
Минусы:
- Вывод анимации ИСКАЖЕН/ДЕРЬМОВ.
Как я могу исправить вывод?