31 lines
		
	
	
		
			777 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			777 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
cowsaidfile="$(mktemp)"
 | 
						|
printf "Writing cows to temporary file \"%s\"\\n" \
 | 
						|
	"$cowsaidfile"
 | 
						|
cowsay "E T E R N A L" > "$cowsaidfile"
 | 
						|
trap_exit() {
 | 
						|
	# kill "$cowthreadpid" > /dev/null 2>&1
 | 
						|
	wait "$cowthreadpid"
 | 
						|
	printf "\\n"
 | 
						|
	cat "$cowsaidfile"
 | 
						|
	rm "$cowsaidfile"
 | 
						|
}
 | 
						|
trap trap_exit EXIT
 | 
						|
# Cow writing thread
 | 
						|
(
 | 
						|
while true; do
 | 
						|
	# Shut up shellcheck; that's the whole point. cowsay does a full read
 | 
						|
	# before it writes back to the file anyway.
 | 
						|
	# shellcheck disable=2094
 | 
						|
	cowsay -n < "$cowsaidfile" 1<> "$cowsaidfile"
 | 
						|
done
 | 
						|
) &
 | 
						|
cowthreadpid=$!
 | 
						|
while true; do
 | 
						|
	# This line will only ever grow larger, so we don't need to clear it
 | 
						|
	# before overwriting it.
 | 
						|
	printf "\\r%s bytes of cowsay; hit Ctrl+C to dump them" \
 | 
						|
		"$(stat --printf="%s" "$cowsaidfile")"
 | 
						|
	sleep 0.02
 | 
						|
done
 |