aboutsummaryrefslogtreecommitdiff
path: root/bin/clwr.sh
blob: 897c1a017b5f18805deca9dcf9ec32e7201e5ff5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Write lines of terminal input into a file, clearing in between each one
self=clwr

# Check our inputs for sanity
if [ "$#" -ne 1 ] ; then
    printf >&2 '%s: Need output file\n' "$self"
    exit 2
elif ! [ -t 0 ] ; then
    printf >&2 '%s: stdin not a terminal\n' "$self"
    exit 2
elif ! [ -t 1 ] ; then
    printf >&2 '%s: stdout not a terminal\n' "$self"
    exit 2
fi

# Open a file descriptor onto the output file to save on open(2)/close(2)
# system calls
exec 3>"$1" || exit

# Start looping through clearing and accepting lines
while { tput clear && IFS= read -r line ; } ; do
    printf '%s\n' "$line" >&3
done