How to capture (command line) screen output in a file

How to do things, solutions, recipes, tutorials
Post Reply
Message
Author
kethd
Posts: 451
Joined: Thu 20 Oct 2005, 12:54
Location: Boston MA USA

How to capture (command line) screen output in a file

#1 Post by kethd »

How to capture command line screen text output in a logfile and still have it show on the screen

This sample code can be included in an ash/bash shell script:

Code: Select all

rm PIPE1
mkfifo PIPE1
#cat >logfile1 <PIPE1 &
cat <PIPE1 &

rm PIPE2
mkfifo PIPE2
cat >logfile2 <PIPE2 &
#cat <PIPE2 &

rm PIPE0
mkfifo PIPE0
tee PIPE1 >PIPE2 <PIPE0 &

exec 1>PIPE0 2>&1

# now all STDOUT and STDERR is copied to logfile2 and is also still sent to the screen

echo starting
lsof -R | grep PI #sample output
echo bye
This is a great way to really get to know mkfifo and tee. After you make a named pipe with mkfifo, you must connect the pipe to an output before you can connect it to an input. The & at the end of the line makes the script keep going while the spawned subtask is running.

Note:
This is the hard way to do this. There is a program called script that is supposed to be able to capture all input and output in a spawned sub-shell. And it is easy to run a script and capture the output:
# sh script.sh 2>&1 | tee logfile
The above example is for situations where you want to be able to do these kinds of dynamic plumping redirections from within a script, operating at the current shell level.

thoughtjourney
Posts: 61
Joined: Thu 05 May 2005, 01:30
Location: Sutton, NSW

#2 Post by thoughtjourney »

Thanks, kethd. Good to know.
in the beginning was the Logos

http://thoughtjourney.aus.cc

Post Reply