Вот небольшой скрипт, который отображает счетчик, пока команда не будет выполнена.
#!/bin/bash
if [[ -z "$*" ]] ; then
echo "Usage: $0 command [args] ..."
exit 0
fi
"$@" &
echo -n "Running '$@'... "
BACKSPACE='\010'
SPINNER='|/-\'
INDEX=0
while kill -0 $! 2>/dev/null ; do
echo -n -e "${SPINNER:$INDEX:1}"
sleep 0.2
(( INDEX = ($INDEX + 1) % 4 ))
echo -n -e "$BACKSPACE"
done
echo -e "${BACKSPACE}done."
Пример использования:
$ ./spinner sleep 3
Running 'sleep 3'... [spinner displayed here]
Через некоторое время:
$ ./spinner sleep 3
Running 'sleep 3'... done.
$
(Мой способ сценариев bash основан на методе проб и ошибок, поэтому предложения по улучшению этого сценария приветствуются.)