15- Shell脚本基础(三)重定向

2017-09-12  本文已影响0人  熙熙爸爸

在了解重定向之前,我们先来看看linux 的文件描述符。

linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。

linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2

标准输入、输出、错误输出

重定向

  1. 输出重定向
    输出重定向比较好理解,标准输出是输出到屏幕上,我们可以把输出写入到一个指定的文件中。
    下面的命令就是把输出重定向到file文件中,这里需要注意 > 和>>的区别,如果file中有内容,使用>会把file中的内容覆盖,>>会在file的后面追加
ls -l > file
ls -a >> file
  1. 输入重定向
    下面的命令是一个输入重定向的例子,把file文件的内容作为wc -l命令的输入。
wc -l < file

这里我有一个疑问就是,如果不使用重定向的话和使用重定向有啥区别呢

重定向

看上面的图片
不使重定向的 输出 5 file,重定向的输出 5
这是因为,不使用重定向,命令可以获取到输入的文件,使用重定向之后,它仅仅知道从标准输入读取内容。

  1. Here document用法
    这表示一种写法,也算是重定向的一种,还是使用wc命令来演示
here document cat

这里的test叫做delimitor,这个意思就是把两个delimitor之间的内容通过重定向传给命令。当然这个delimitor可以使任意字符,只要是首尾相同就可以。

  1. Linux下输出重定向的典型分析
# &1  &2  分别表示标准输出和 标准错误输出
ls -l > out 2>&1

意思是把命令 ls -l的标准输出重定向到out文件中,另外标准错误输出重定向到标准输出中,因为标准输出已经重定向到out文件了,所以错误输出也输出到out文件中。

上一篇下一篇

猜你喜欢

热点阅读