Tilted Forum Project Discussion Community

Tilted Forum Project Discussion Community (https://thetfp.com/tfp/)
-   Tilted Technology (https://thetfp.com/tfp/tilted-technology/)
-   -   Sheel Script redirection tip (https://thetfp.com/tfp/tilted-technology/47416-sheel-script-redirection-tip.html)

Silvy 03-01-2004 06:12 AM

Shell Script redirection tip
 
Hi,

Note: this tip is about redirecting output to a file and the screen at the same time. The original 'hack' has been replaced by a much better solution. See the second post!

I'm leaving my 'hack' as an odd example of the many ways problems can be solved.


I justed wanted to share this neat 'hack' I figured out:

To redirect output to a file, but still see it on screen at the same time, use this construct:

Code:

#!/bin/bash
OUPUTFILE=~/output.txt
some_long_command >$OUTPUTFILE &
tail -f $OUTPUTFILE

The idea being:
You want to see the output of a command, but you also want to keep it as reference.

The code below would do this as well, but if the 'command' took a long time you'd be staring at an empty line during execution.
Code:

# this works but is not usable for commands
# that have a long execution time.
command > output_file
cat output_file

I run Gentoo Linux, and emerge's take a relatively long time, so I want to see the output to wether all is well. But in the future I might also want to read back the output to see what warnings etc it might have given.

I'm planning on writing a mother-script around 'emerge' that appears the same as the regular 'emerge' (with it's screen output), but also keeps rotating logs of the results. This construction lets me do that.

NOTES:
- I couldn't find an "output splitter" that redirects output to two places (ie screen and file) or that would've been better.
- Over slow network connections Tail seriously lags behind the actual running of the script, and is very 'jumpy' in its output.
- The above code is not executable, as I'm not presenting a specific situation in it. Simple examples could be easily made however.
- I hope this tip helps someone and/or interests them in scripting for themselves!

mgcloud 03-05-2004 12:06 AM

Quote:

Originally posted by Silvy

NOTES:
- I couldn't find an "output splitter" that redirects output to two places (ie screen and file) or that would've been better.

Very cool stuff :D

Was doing some digging around on this, and foudn (but haven't tested) a command called tee. 'man tee' says:

Quote:

tee - read from standard input and write to standard output and files

Silvy 03-05-2004 01:00 AM

Thanks, I'll have a look-see!

Edited the spelling of the subject line too, too bad it doesn't update the Board thread listing :(

EDIT: yes, `tee` works fine!

Thanks a lot , it works a lot better than my 'ugly' solution...

In case anyone is interested: this is the script I tested it with:
replace "some_long_command" by a command that takes a long time to execute and produces output during execution. (I used un-tar on a large file)

Code:

#!/bin/bash
OUTPUTFILE=output.txt
COMMAND="some_long_command |tee $OUTPUTFILE"
echo $COMMAND 
eval $COMMAND



All times are GMT -8. The time now is 02:38 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73