linux How do we redirect the stderr message of a command to a file errlog?
时间: 2024-09-12 21:13:14 浏览: 33
在Linux中,你可以使用重定向操作符将命令的标准错误输出(stderr)重定向到一个文件中。标准错误输出通常是命令执行中出现的错误消息或诊断信息,默认情况下会显示在终端上。重定向stderr到一个文件,你可以使用"2>"操作符,其中"2"代表stderr的文件描述符。
例如,如果你想将命令`ls`的stderr重定向到名为`errlog`的文件中,可以使用以下命令:
```bash
ls -l non_existent_file 2> errlog
```
在这个例子中,`non_existent_file`是一个不存在的文件,所以`ls`命令会产生一个错误消息。这个错误消息通常会显示在终端上,但是通过使用`2>`重定向操作符,错误消息被写入到了`errlog`文件中。
如果你还想要保留标准输出(stdout)在终端显示,并且只重定向stderr到文件,你可以使用`1>&2`将stdout重定向到stderr,然后再执行重定向:
```bash
ls -l non_existent_file > stdout.log 2> errlog
```
在这个命令中,`> stdout.log`将标准输出重定向到`stdout.log`文件,而`2> errlog`将标准错误重定向到`errlog`文件。
相关问题
解决linux环境下nohup: redirecting stderr to stdout问题
在Linux环境中,当你尝试使用`nohup`命令运行一个进程,并希望将标准错误(`stderr`)重定向到标准输出(`stdout`),可能会遇到"nohup: redirecting stderr to stdout"的问题。这是因为`nohup`默认会把所有输出(包括标准输出和标准错误)追加到`nohup.out`文件中。
解决这个问题,你需要明确地告诉`nohup`如何处理标准错误。你可以这样做:
```bash
nohup your_command 2>&1 > output_file & disown
```
这里,`2>&1`是一个特殊的redirect操作符,它表示将标准错误(`stderr`)的内容重定向到标准输出(`stdout`),然后两者都被重定向到指定的输出文件`output_file`。`disown`命令则是让`nohup`脱离当前shell会话的控制,使得程序在用户登出后仍然可以继续运行。
如果你并不想将标准错误和标准输出合并到同一个文件,而只想单独处理它们,可以分开写,例如:
```bash
nohup your_command > output_file 2> error_file & disown
```
这将分别将标准输出和标准错误重定向到`output_file`和`error_file`。
The numbers zero through nine (that is, 0-9) represent the first 10 handles. You can use Cmd.exe to run a program and redirect any of the first 10 handles for the program. To specify which handle you want to use, type the number of the handle before the redirection operator. If you do not define a handle, the default < redirection input operator is zero (0) and the default > redirection output operator is one (1). After you type the < or > operator, you must specify where you want to read or write the data. You can specify a file name or another existing handle.
That's correct! When running a program in Cmd.exe, you can redirect any of the first 10 handles by specifying their number before the redirection operator. Handle 0 represents standard input (stdin), handle 1 represents standard output (stdout), and handle 2 represents standard error (stderr).
For example, to redirect the output of a program to a file called "output.txt", you would use the command:
```
program.exe > output.txt
```
This redirects standard output (handle 1) to the file "output.txt". If you wanted to redirect standard error instead, you would use the number 2 before the redirection operator:
```
program.exe 2> error.txt
```
This redirects standard error (handle 2) to the file "error.txt".
阅读全文