`
eksliang
  • 浏览: 598324 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

linux复习笔记 之 数据流重定向

阅读更多
转载请出自出处:http://eksliang.iteye.com/blog/2104444

1、什么事数据流重定向?

这得要由命令的执行结果谈起。一般来说,如果你要执行一个命令,通常他会是这样的,如下所示



      我们执行一个命令的时候,这个命令可能会由文件读入数据,经过处理之后,再将命令返回的结果输出到屏幕上,上图中,standard output 与standard input以及standard error 分别代表”标准输出“、”标准输入“、”标准异常输出“

      简单说,标准输出指的是命令执行所回传的正确信息,而标准错误输出可以理解为命令执行失败后,所回传的错误信息。

     说了这么多,那什么事数据流重定向呢?

     不管是正确的或者错误的数据都是默认输出到屏幕上的,那能不能通过某种机制将这这些信息输到别处呢?当然可以了,那就是数据流重定向的功能,数据流重定向可以将标准的输出,与标准的异常输出分别传到其他的文件或设备中去

     传送时用的特殊字符如下:

  1)标准输入(stdin):代码为0 ,使用0<或者0<<,当然前面的0可以省略,一般用就是<或者<<这样用。

  2)标准输出(stdout):代码为1,使用1>或者1>>,当然前面的0可以省略,一般用就是>或者>>这样用。

  3)   标准错误输出(stderr):代码为2,使用2>或者2>>

先写个实例感受一下,如下所示:

实例一:将命令返回的结果重定向到test.txt中
[root@bogon ~]# ls -la > test.txt
[root@bogon ~]# tail test.txt
drwx------.  2 root root  4096 Jul 21 01:52 .pulse
-rw-------.  1 root root   256 Jul 21 01:51 .pulse-cookie
-rw-------.  1 root root   218 Jul 21 01:54 .recently-used.xbel
drwx------.  2 root root  4096 Jul 22 23:27 .ssh
-rw-r--r--.  1 root root   129 Dec  3  2004 .tcshrc
drwxr-xr-x.  2 root root  4096 Jul 21 01:51 Templates
-rw-r--r--.  1 root root     0 Aug 15 02:43 test.txt
drwxr-xr-x.  2 root root  4096 Jul 21 01:51 Videos
-rw-------.  1 root root  9318 Aug 15 02:27 .viminfo
-rw-------.  1 root root     0 Jul 21 01:54 .Xauthority

 可以看到执行ls -la > test.txt屏幕上面没有任何的输出内容,但是text.txt这个文件被创建了。

 这就是数据流重定向,将命令返回的结果重定向到了text.txt这个文件。

 > 与 >>的区别:>、当后面接的文件没有时,他会创建,同时前面一个命令的返回结果重定向到text.txt中,同时如果text.txt这个文件中有内容,会被覆盖,如果不想被覆盖用>>这就是他们的区别!

标准的错误输出(2>或者2>>)也是一样的用法,当执行的命令发生错误时,才会将返回结果重定向到文件或者设备中

实例2:将命令执行的正确信息和错误信息分别重定向到不同的文件
[root@bogon ~]# find /home -name .bashrc > log_success 2> log_eror

  

 2、/dev/null垃圾桶或者黑洞设备

   如果我知道错误信息会发生,这个时候我想让错误信息忽略掉不显示也不存储?这个时候就得用/dev/null这个个垃圾桶了,

实例如下:
将错误的数据丢弃,屏幕上显示正确的数据
[root@bogon ~]# find /etc -name passwd 2> /dev/null

   如果要将正确的数据与错误的数据同时写入同一个文件,这个时候linux是有讲究的,不能乱来,应该如下这么写:

实例:将正确的数据和错误的数据同时写入同一个文件
#这种写法程序是不会报错,但是会导致写入的顺序错乱(不要这样)
[root@bogon ~]# find /etc -name passwd > log 2> log
#如下两种方法都是linux推荐的写法
[root@bogon ~]# find /etc -name passwd > log 2>&1 (我习惯用这个)
[root@bogon ~]# find /etc -name passwd &> log

   第一种写法不行的原因,并不是程序跑起来会报错,而是由于同时两条数据同时写入一个文件时,没有做特殊处理(&这个符号),此时数据可能会交叉写入该文件内,造成次序错乱。

 

 

标准输入(standard input):<与<<

这个东西我之所以单独拿出来说,是因为这个跟上面的输出区别很大

什么事标准输入(stanin):我总结的,非常的经典的一句话:用文件内容来代替键盘的输入

采用例子驱动进行笔记!

实例:利用cat创建一个文件的简单流程
[root@bogon ~]# cat > file.txt
aaa
bbb
ccc #这里按下[ctrl+d]来离开
[root@bogon ~]# cat file.txt
aaa
bbb
ccc

 由于加入>在cat后,所以那个file.txt会主动创建,二内容就是刚在键盘上面输入的那三行数据。

实例:用文件的内容来代替键盘的输入
[root@bogon ~]# cat > file1.txt < ./file.txt 
[root@bogon ~]# cat file1.txt 
aaa
bbb
ccc

 <这个符号就是上面这么用,那么<<这个符号怎么用呢?

<<这个符号的含义是代表输入结束的意思,看实例如下:

[root@bogon ~]# cat > file << 'end'
> www
> bbb
> ddd
> end #在这里输入end,立刻马上结束,这个在脚本中非常有用,不用手动ctrl+d这么按
[root@bogon ~]# cat file
www
bbb
ddd

 

 

 

 

 

 

 

  • 大小: 6.1 KB
分享到:
评论

相关推荐

    Linux笔记-005-重定向管道.xmind

    Linux系统重定向及管道符(作者:千锋教育-磊哥)

    Linux复习笔记,基于CentOS7

    Linux复习笔记,基于CentOS7

    马哥的linux学习笔记

    《马哥的Linux学习笔记》是一份针对初学者和进阶者精心编撰的Linux教程,旨在帮助读者全面掌握Linux操作系统的核心概念、命令行操作以及系统管理技能。这份笔记以清晰明了的语言和实例解析了Linux系统的各个方面,是...

    Linux学习笔记Linux学习资料Linux教程

    【linux学习笔记-16】shell管道重定向程序的实现.doc 【linux学习笔记-1】使用GDB调试简单的用户程序.doc 【linux学习笔记-2】父子进程共享文件描述符.doc 【linux学习笔记-3】文件操作(stat,chmod,umask).doc ...

    Linux学习笔记(强悍总结值得一看)_linux_linux学习笔记_

    Linux是世界上最广泛使用的开源操作系统之一,它为用户提供了一个强大而灵活的平台来进行各种计算任务。这份"Linux学习笔记(强悍总结值得一看)"是Linux初学者的宝贵资源,也适合有经验的用户作为参考手册。以下是...

    linux复习笔记,这是考试时的小抄版的

    【Linux复习笔记】 Linux是一种广泛使用的开源操作系统,其核心在于其高效、稳定和灵活的内核设计。在准备Linux相关的考试时,理解操作系统的基础概念、处理器模式、内存管理、中断系统、多处理器支持(SMP)、系统...

    Linux学习笔记【博文整理系列】

    学习linux的笔记,发到...Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux笔记——正则表达式入门及应用 Linux笔记——linux进程 Linux笔记——SVN命令总结 rpm&yum包管理命令总结 The end wklken

    非常宝贵的LINUX学习笔记

    【linux学习笔记-6】文件IO操作--读写、重定向等 【linux学习笔记-7】用户标识UID与有效用户标识EUID 【linux学习笔记-8】Linux进程相关系统调用(1) 【linux学习笔记-9】Linux进程相关系统调用(2) 【linux学习...

    狂神说Linux课堂笔记.pdf

    Linux操作系统作为IT行业的重要组成部分,一直以来都是开发者和系统管理员必须掌握的技能之一。本篇课堂笔记主要从Java全栈开发的角度出发,针对Linux的学习和应用进行了深入讲解。 首先,课堂笔记强调了学习Linux...

    1-linux系统笔记之基础篇1.doc

    1-linux系统笔记之基础篇1.doc 2-linux系统笔记之Iptables防火墙篇.doc 3-linux系统笔记之lamp网站环境搭建.doc 4-linux系统笔记之lNMP网站环境搭建.doc 5-linux系统笔记之apache高级服务篇.doc 6-linux系统...

    2-linux系统笔记之Iptables防火墙篇

    1-linux系统笔记之基础篇1.doc 2-linux系统笔记之Iptables防火墙篇.doc 3-linux系统笔记之lamp网站环境搭建.doc 4linux系统笔记之lNMP网站环境搭建.doc 5linux系统笔记之apache高级服务篇.doc 6linux系统笔记之...

    Linux学习笔记 (华为工程师总结) 完整版PDF

    《Linux学习笔记》这份资料非常全面且详细,从 Linux 常用命令到 Linux 常用操作,再到网络管理、性能优化,几乎覆盖了 Linux 基础学习的方方面面,非常适合初学者入门!这里只是对于常用命令进行了整理,希望可以...

    韩顺平2018Linux视频笔记

    韩顺平2018Linux视频笔记,我添加了书签

    Linux学习笔记PDF文档.pdf

    Linux学习笔记PDF文档.pdf是一个详尽的资源,旨在帮助初学者和有经验的用户深入理解Linux操作系统。Linux作为开源的类Unix系统,以其稳定、安全和可定制性在全球范围内广泛应用于服务器、桌面环境以及嵌入式设备。这...

    网络工程师 复习笔记

    网络工程师复习笔记 网络工程师复习笔记 网络工程师复习笔记

    linux笔记笔记笔记笔记

    Linux是世界上最广泛使用的开源操作系统之一,它为用户提供了一个强大的命令行界面,以及各种工具和应用程序,使其成为服务器、开发环境和个人计算机的理想选择。本文将深入探讨“Linux工作笔记”中涉及的一些关键...

    马哥linux手写笔记

    【马哥Linux手写笔记】是一份由知名IT教育专家马永亮,即"马哥"编撰的Linux学习资料,这份笔记以其详实、深入和实用的特点深受广大Linux爱好者和学习者的推崇。马哥在业界享有盛誉,他的教学风格以通俗易懂和实战性...

Global site tag (gtag.js) - Google Analytics