Linux-数据流重定向

1.标准输入输出

指令执行过程中的数据传输

一般情况下,执行一个指令的结果是从键盘或者文件获取数据,经过处理之后输出到屏幕中。也就是standard output或者standard error output。

1.1 标准输出(STDOUT)和标准错误输出(STDERR)

数据流重定向就是指将标准输出和 标准错误输出输出到其他文件(Linux中设备也是文件)中去。

  • 标准输出是指指令执行所回传的正确的信息
  • 标准错误输出是指指令执行失败后,回传的错误信息

数据传送所用的特殊字符有:

  1. 标注输入(stdin):代码为0,使用< 或者 <<;
  2. 标注输出(stdout):代码为1,使用> 或者 >>;
    • >以覆盖的方式输出
    • >>以追加的方式输出
  3. 标注错误输出(stderr):代码为2,使用2> 或者 2>>;
    • 2>以覆盖的方式输出
    • 2>>以追加的方式输出

1.2 垃圾黑洞和其他特殊写法

  • /dev/null 可以销毁任何导向这个装置的信息。
  • 需要把正确和错误输出到同一个文件,要用如下命令:
      find /home -name .bashrc > list 2> list 错误,因为交叉写入文件可能导致次序混乱
      find /home -name .bashrc > list 2>&1 正确
      find /home -name .bashrc &> list 正确
    

1.3 标准输入:<和<<

  • < 将需要由键盘输入的数据,改为由文件输入。
    如下代码可以把.bashrc内容输入,再输出到catfile文件中去:

    [root@iZwz9ayvrn26ptadymu9ymZ ~]# cat > catfile < ~/.bashrc
    [root@iZwz9ayvrn26ptadymu9ymZ ~]# ll catfile ~/.bashrc
    -rw-r--r--  1 root root 176 Dec 27 15:05 catfile
    -rw-r--r--. 1 root root 176 Dec 29  2013 /root/.bashrc
    
  • << 指出结束的输入字符,如下代码用eof作为输入的结束:

  [root@iZwz9ayvrn26ptadymu9ymZ ~]# cat > catfile << "eof"
  > This is a test.
  > OK now stop
  > eof
  [root@iZwz9ayvrn26ptadymu9ymZ ~]# cat catfile
  This is a test.
  OK now stop

2. 指令执行控制

一次执行多条指令,需要用到指令执行控制。
包括连续下达(;),且(&&),或(||)。

2.1 cmd;cmd

不考虑指令相关性,顺序执行。

2.2 与(&&),或(||)

指令下达 说明
cmd1 && cmd2 cmd1执行完毕且正确($?=0)则cmd2执行
cmd1 || cmd2 cmd1执行完毕且错误($?≠0),才执行cmd2

根据指令执行的回传值(可以用$?获取)决定指令的执行与否。

指令下达 说明
cmd1 && cmd2 cmd1执行完毕且正确($?=0)则cmd2执行
cmd1 || cmd2 cmd1执行完毕且错误($?≠0),才执行cmd2
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,256评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,680评论 9 468
  • 1.命令格式:ifconfig [网络设备] [参数] 2.命令功能: ifconfig 命令用来查看和配置网络设...
    Nuuuu阅读 3,844评论 0 12
  • tr,tee 程序的IO 简单的说程序由指令(命令)和数据(操作对象)组成,在linux上一切皆文件,程序操作对象...
    香吉矢阅读 729评论 0 1
  • 作为程序员,你不需要担心本身的工作方式,但你必须了解寻址。 当数据通过网络传输时,包的首部会包括要发往的机器地址(...
    wyude阅读 136评论 0 0