-
-
Save espaciomore/28e24ce4f91177c0964f4f67bb5c5fda to your computer and use it in GitHub Desktop.
#!/bin/bash | |
ARGS="${@}" | |
clear; | |
while(true); do | |
OUTPUT=`$ARGS` | |
clear | |
echo -e "${OUTPUT[@]}" | |
done |
I'd add sleep 1 after echo, so the console does not flicker.
thanks did the trick!
I found this to be slightly better at getting rid of most of the flicker:
#!/bin/bash
ARGS="${@}"
clear;
while(true); do
clear
OUTPUT=`$ARGS`
echo -e "${OUTPUT[@]}"
sleep 1
done
@mchandschuh for Windows users, in which folder should I paste the .sh script?
@saadzimat430 C:\Users\{user}\.bashrc
I tweaked @mchandschuh version a little more by executing the command before clearing the screen. Espacially for long-running commands there is no more flickering for me.
#!/bin/bash
ARGS="${@}"
clear;
while(true); do
OUTPUT=`$ARGS`
clear
echo -e "${OUTPUT[@]}"
sleep 1
done
Thanks for this and all the improvements!
I made a version that is nearly flicker-less. It clears the previous 25 lines. Any lines of output beyond 25 will scroll.
#!/bin/bash
ARGS="${@}"
clear;
while(true); do
OUTPUT=`$ARGS`
for i in {1..25}; do
printf '\e[1A\e[K'
done
echo -e "${OUTPUT[@]}"
sleep 1
done
mingw64 does not have watch so I found this gist. I tried to look at the esacpe sequence of original watch with strace with strace -f watch echo test
. Found this escape sequence: write(1, "\33[1;75H", 7�[1;75H) = 7
#!/usr/bin/bash
interval=2
if [ "$1" = "-n" ]; then # allow -n {interval} at start
interval=$2
shift 2
fi
clear
while true; do
printf "%b\n\n" "\033[1;1HEvery $interval s:$*\033[1;75H$(hostname): $(date)"
"$@"
sleep "$interval"
done
you can add it as a function to ~/.bash_aliases
watch () {
ARGS="${@}"
clear;
while(true); do
clear
OUTPUT=`$ARGS`
echo -e "${OUTPUT[@]}"
sleep 1
done
}
And I added some additional information to the watch function to make it look like it does in native linux -
watch () {
ARGS="${@}"
clear;
while(true); do
OUTPUT=`$ARGS`
clear
echo -e "Every 1.0s: $ARGS"
echo ""
echo -e "${OUTPUT[@]}"
sleep 1
done
}
And I added some additional information to the watch function to make it look like it does in native linux -
watch () { ARGS="${@}" clear; while(true); do OUTPUT=`$ARGS` clear echo -e "Every 1.0s: $ARGS" echo "" echo -e "${OUTPUT[@]}" sleep 1 done }
this is awesome!!!
@fabiante, yes