linux 命令行中重定向的使用
问题1: > output.txt &
什么意思?
在 Linux 中,command > output.txt &
是将命令的标准输出重定向到文件并将该命令放入后台执行的组合操作。
各部分解释:
command > output.txt
:将命令的标准输出(stdout
)重定向到output.txt
文件中。&
:将命令放入后台执行,使得你可以继续在终端执行其他命令,而不必等待该命令执行完成。
示例:
./script.sh > output.txt &
这个命令会将 script.sh
脚本的输出保存到 output.txt
文件,并且在后台执行脚本。你可以立即在终端执行其他操作,而不需要等待脚本完成。
注意:
- 如果脚本有错误输出,它不会被重定向到
output.txt
,而是会继续输出到终端。如果你希望将错误输出也一起重定向,可以使用2>&1
:
这样就会将标准输出和标准错误同时重定向到./script.sh > output.txt 2>&1 &
output.txt
文件,并且脚本仍然在后台执行。
总结:
> output.txt &
组合用于将命令输出重定向到文件,并将该命令在后台运行。
问题2:& 怎么和重定向结合呢?
在 Linux 中,&
可以与重定向结合使用,常见的用法是重定向标准输出和标准错误。具体来说,&
与重定向符号一起使用时,通常是为了处理标准错误(stderr
)和标准输出(stdout
)这两个不同的输出流。以下是一些常见的组合及其解释:
1. &>
:重定向标准输出和标准错误
&>
可以将命令的标准输出和标准错误同时重定向到同一个文件。
command &> output.txt
这会将标准输出(stdout
)和标准错误(stderr
)都重定向到 output.txt
文件中。
示例:
ls nonexistentfile &> output.txt
在这个示例中,ls
会尝试列出一个不存在的文件,它会产生一个错误信息,而这个错误信息会被 &>
重定向到 output.txt
文件中。
2. 2>&1
:将标准错误重定向到标准输出
2>&1
表示将标准错误(文件描述符 2
)重定向到标准输出(文件描述符 1
)。换句话说,它把错误输出也作为正常输出处理。
command > output.txt 2>&1
首先,>
会将标准输出重定向到 output.txt
,而 2>&1
会将标准错误重定向到标准输出,因此,所有输出都会写入 output.txt
文件。
示例:
ls nonexistentfile > output.txt 2>&1
这个命令会将标准输出和标准错误都写入 output.txt
。
3. &>>
:追加标准输出和标准错误
如果你想将标准输出和标准错误同时追加到一个文件中,而不是覆盖它,可以使用 &>>
。这与 &>
类似,但会将输出追加到文件中。
command &>> output.txt
示例:
echo "new line" &>> output.txt
这个命令会将输出追加到 output.txt
文件,而不会覆盖它。
4. command > file 2>file
:将标准输出和标准错误分别重定向
有时你可能希望将标准输出和标准错误重定向到不同的文件中,这时你可以分别使用 >
和 2>
。
command > stdout.txt 2> stderr.txt
示例:
ls nonexistentfile > stdout.txt 2> stderr.txt
这个命令会将标准输出保存到 stdout.txt
文件,而将错误信息保存到 stderr.txt
文件中。
总结
&>
:同时重定向标准输出和标准错误。2>&1
:将标准错误重定向到标准输出。&>>
:同时将标准输出和标准错误追加到文件中。