Aqui você é um script muito robusto para fazer isso:
#!/bin/bash
## When the program is interrupted, call the cleanup function
trap "cleanup; exit" SIGHUP SIGINT SIGTERM
## Check if file exists
[ -f "" ] || { echo "File not found!"; exit; }
function cleanup() {
## Restores the screen content
tput rmcup
## Makes the cursor visible again
tput cvvis
}
## Saves the screen contents
tput smcup
## Loop over all words
while read line
do
## Gets terminal width and height
height=$(tput lines)
width=$(tput cols)
## Gets the length of the current word
line_length=${#line}
## Clears the screen
clear
## Puts the cursor on the middle of the terminal (a bit more to the left, to center the word)
tput cup "$((height/2))" "$((($width-$line_length)/2))"
## Hides the cursor
tput civis
## Prints the word
printf "$line"
## Sleeps one second
sleep 1
## Passes the words separated by a newline to the loop
done < <(tr ' ' '\n' < "")
## When the program ends, call the cleanup function
cleanup