03-01-2004, 06:12 AM | #1 (permalink) |
paranoid
Location: The Netherlands
|
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 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'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!
__________________
"Do not kill. Do not rape. Do not steal. These are principles which every man of every faith can embrace. " - Murphy MacManus (Boondock Saints) Last edited by Silvy; 03-05-2004 at 01:54 AM.. |
03-05-2004, 12:06 AM | #2 (permalink) | ||
Upright
|
Quote:
Was doing some digging around on this, and foudn (but haven't tested) a command called tee. 'man tee' says: Quote:
|
||
03-05-2004, 01:00 AM | #3 (permalink) |
paranoid
Location: The Netherlands
|
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
__________________
"Do not kill. Do not rape. Do not steal. These are principles which every man of every faith can embrace. " - Murphy MacManus (Boondock Saints) Last edited by Silvy; 03-05-2004 at 01:51 AM.. |
Tags |
redirection, script, sheel, tip |
|
|