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

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

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

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

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

  • 标准输入:从键盘输入数据,即从键盘读入数据。 0

  • 标准输出:把数据输出到终端上。1

  • 标准错误输出:把标准错误输出到终端上。2
    默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。
    在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,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文件中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,182评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,759评论 9 468
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 9,528评论 7 54
  • 上周三(四月二十七日)早上,我听「得到」专栏《马徐骏·世界名刊速读》。本期介绍了《大西洋月刊》4月刊的一篇文章,标...
    紫筠散思阅读 4,243评论 0 2