countdown() {
local secs=$1
while [ $secs -gt 0 ]; do
echo -ne "⏳ $secs seconds remaining...\r"
sleep 1
: $((secs--))
done
echo -e "\n✅ Time’s up!"
}
countdown 10 # runs for 10 secondswhile true; do
echo -ne "🕒 $(date +%H:%M:%S)\r"
sleep 1
donewhile true; do
clear
echo "📅 $(date '+%Y-%m-%d %H:%M:%S')"
sleep 1
donespinner() {
local pid=$!
local spin='-\|/'
local i=0
while kill -0 $pid 2>/dev/null; do
i=$(( (i+1) %4 ))
printf "\rLoading... ${spin:$i:1}"
sleep 0.2
done
}
(sleep 5) & # fake command
spinner
echo -e "\n✅ Done!"progress_bar() {
local total=$1
local i
for ((i=1; i<=total; i++)); do
sleep 0.1
printf "\rProgress: [%-50s] %d%%" $(head -c $i < /dev/zero | tr '\0' '#') $((i*2))
done
echo -e "\n✅ Complete!"
}
progress_bar 50start=$(date +%s)
while true; do
now=$(date +%s)
elapsed=$(( now - start ))
printf "\r⏱ Elapsed: %02d:%02d:%02d" $((elapsed/3600)) $((elapsed%3600/60)) $((elapsed%60))
sleep 1
donefor i in {1..10}; do
echo -ne "Loading$(printf '.%.0s' $(seq 1 $((i%4)))) \r"
sleep 0.5
done
echo -e "\n✅ Finished!"👉 With these, you can make your Bash scripts feel interactive and user-friendly.
Do you want me to combine them into a single menu-driven script (choose timer, clock, spinner, etc.) so you can test them all in one place?