Shell 入门教程十五:输出重定向

在写 Shell 脚本的时候,我们经常会想将命令的输出结果保存到文件中,或者将命令的执行结果保存到日志记录中。这时候就需要把命令的输出结果重定向。而要进行重定向,就要了解 Linux 的输入输出流。

在 Linux 中有三个经常用到的输入输出流,他们分别是:

  • 标准输入(stdin)
  • 标准输出(stdout)
  • 标准错误(stderr)

在 Linux 系统中,系统保留了 0(标准输入)、1(标准输出)、2(标准错误) 三个文件描述符分别代表它们。

标准输入指的是从键盘这些标准输入设备读取到的数据。一般情况下标准输入重定向的很少用到,因此我们就不展开说。

标准输出则是通过屏幕输出的这些数据。我们可以通过标准输出重定向来让数据保存到文件里。例如:

YuRongChandeMacBook-Pro:chenshuyi yurongchan$ echo "hello shell,I'm shuyi" > out.txt
YuRongChandeMacBook-Pro:chenshuyi yurongchan$ cat out.txt
hello shell,I'm shuyi

可以看到 echo 命令的输出并没有在屏幕上打印出来,而是保存在了 out.txt 文件中。

其实上面这种方式和echo "hello" 1> out.txt这条命令的结果是一样的。或许是因为标准输出重定向比较频繁,所以就把数字 1 省略了。

标准错误是指输出的错误信息。例如当我们运行一条错误的指令时,控制台会提示凑无信息,这些就是错误信息。如果我们要重定向错误信息到文件中,我们可以用2>这个操作符。例如:

YuRongChandeMacBook-Pro:chenshuyi yurongchan$ ls +
ls: +: No such file or directory
YuRongChandeMacBook-Pro:chenshuyi yurongchan$ ls + 2> error.txt
YuRongChandeMacBook-Pro:chenshuyi yurongchan$ cat error.txt
ls: +: No such file or directory

通过2>这个操作符,我们将标准错误重定向到了 error.txt 文件中了。

说到这里,输入输出重定向就说完了。其实这一章很简单,就是通过1>2>这两个操作符达到输出重定向的目的。

相关文章

Centos系统之Shell编程基础知识
从Export理解Shell环境和变量生存期
linux shell数组变量、类型及规则
Centos编程Shell基本工作原理方案
Centos操作系统编程之Shell 问答录
rsync-linux备份脚本