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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券