KSH将stdout和stderr重定向到Linux或Unix上的文件

时间:2020-01-09 10:41:09  来源:igfitidea点击:

使用KSH时,如何在Unix中重定向错误消息?
如何在Linux或类似Unix的系统上使用KSH重定向stdout和stderr?

说明:使用KSH,SH和BASH时,您可以轻松地在Unix和Linux中重定向错误消息。

什么是stdout?

标准输出(stdout)只是命令用来将其输出写到屏幕上的标准输出。
用一个(" 1")数字表示。

什么是stderr?

标准错误(stderr)是默认错误输出设备,用于写入所有系统错误消息。
用两个(" 2")数字表示。

KSH重定向标准输出和标准错误

让我们来看一些基于Linux和Unix的常见示例。

如何将标准输出重定向到文件

重定向到文件的标准输出(stdout)如下:

command > file
ls > /tmp/list.txt
cat /tmp/list.txt

或者

command 1> file
ls 1> /tmp/list.txt
cat /tmp/list.txt

ls> /tmp/list.txt只是ls 1> /tmp/list.txt的快捷方式。

KSH将stderr重定向到文件

要将Linux上的标准错误消息重定向到名为errors.txt的文件,请执行:

command-name 2> errors.txt

确保将" command-name"替换为要运行的Unix命令,例如:

find / -name "resolv.conf" * 2> /tmp/errors.txt

使用cat命令查看存储在errors.txt文件中的错误:

cat /tmp/errors.txt

KSH将错误消息重定向到标准输出(stdout)

语法为:

command 2>&1
gunzip * 2>&1

如何将标准错误和标准重定向到文件

尝试以下语法:

command > file 2>&1
find / -name "nginx.conf" -print > command.out 2>&1

如何使用ksh隐藏或隐藏错误消息

只需使用:

command 2>&
ls /nonexistanc
ls /nonexistanc 2>&

如何将stdout和stderr都重定向到/dev/null

尝试:

command > /dev/null 2>&1
grep -R "something" /etc/ > /dev/null 2>&1
echo $?

总结

KSH重定向是指更改用于Unix命令的shell常规方法来处理stdout,stdin和stderr。

KSH使用以下符号进行重定向:

  • >:重定向标准输出(覆盖)
  • >>:重定向标准输出(追加)
  • <:重定向标准输入
  • 2>:重定向标准错误
  • 2>&1:将stderr重定向到stdout