Linux-数据流重定向

1.标准输入输出

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-数据流重定向)