Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

bash - how to redirect output of multiple commands to one file

i have a bash script, that has the following two commands:

ssh host tail -f /some/file | awk ..... > /some/file &

ssh host tail -f /some/file | grep .... > /some/file &

How can i make the output of both commands be directed into the same file.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Either use 'append' with >> or use braces to encompass the I/O redirections, or (occasionally) use exec:

ssh host tail -f /some/file | awk ..... >  /some/file &
ssh host tail -f /some/file | grep .... >> /some/file &

or:

{
ssh host tail -f /some/file | awk ..... &
ssh host tail -f /some/file | grep .... &
} > /some/file

or:

exec > /some/file
ssh host tail -f /some/file | awk ..... &
ssh host tail -f /some/file | grep .... &

After the exec, the standard output of the script as a whole goes to /some/file. I seldom use this technique; I usually use the { ...; } technique instead.

Note: You do have to be careful with the braces notation. What I showed will work. Trying to flatten it onto one line requires you to treat the { as if it were a command (followed by a space, for example) and also to treat the } as if it were a command. You must have a command terminator before the } — I used a newline, but an & for background or ; would work too.

Thus:

{ command1;  command2;  } >/some/file
{ command1 & command2 & } >/some/file

I also have not addressed the issue of why you have two separate tail -f operations running on a single remote file and why you are not using awk power as a super-grep to handle it all in one — I've only addressed the surface question of how to redirect the I/O of the two commands to one file.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...