Differences between revisions 1 and 7 (spanning 6 versions)
Revision 1 as of 2007-05-02 22:59:14
Size: 1077
Editor: redondos
Comment:
Revision 7 as of 2010-05-11 05:19:13
Size: 1267
Editor: p5B09615D
Comment: fixed links
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq14)]] <<Anchor(faq14)>>
Line 4: Line 4:
Line 45: Line 46:

[[http://wiki.bash-hackers.org/syntax/redirection|More discussion]]

[[http://wiki.bash-hackers.org/howto/redirection_tutorial|In-depth: Illustrated Tutorial]]

----
CategoryShell

How can I redirect the output of multiple commands at once?

Redirecting the standard output of a single command is as easy as

    date > file

To redirect standard error:

    date 2> file

To redirect both:

    date > file 2>&1

In a loop or other larger code structure:

    for i in $list; do
        echo "Now processing $i"
        # more stuff here...
    done > file 2>&1

However, this can become tedious if the output of many programs should be redirected. If all output of a script should go into a file (e.g. a log file), the exec command can be used:

    # redirect both standard output and standard error to "log.txt"
    exec > log.txt 2>&1
    # all output including stderr now goes into "log.txt"

Otherwise command grouping helps:

    {
        date
        # some other command
        echo done
    } > messages.log 2>&1

In this example, the output of all commands within the curly braces is redirected to the file messages.log.

More discussion

In-depth: Illustrated Tutorial


CategoryShell

BashFAQ/014 (last edited 2015-03-05 00:29:41 by izabera)