数据流重定向

  1. 数据流重定向就是将某个命令执行后应该在出现在屏幕上的数据传输到其他地方
  2. 标准输出指的是命令执行所回传的正确信息,而标准错误输出可以理解为命令执行失败后回传的错误信息
  3. 数据流重定向可以将standard output 与 standard error output 分别传送到其他的文件或者设备去。
    • 标准输入:代码为0,使用<或者<<
    • 标准输出:代码为1,使用>或者>>
    • 标准错误输出:代码为2,使用2>或者2>>
    • 若以>输出到一个已存在的文件中,那么这个文件会被覆盖
  4. /dev/null 垃圾桶黑洞设备与特殊写法
    [rain@www~]$ find /home -name .bashrc 2>/dev/null      <===显示的结果就是屏幕上只有正确信息,错误信息被/dev/null吞掉了
    /home/rain/.bashrc      <====只有stdout会显示在屏幕上,stderr被丢弃了
    
  5. 如何把正确与错误数据通通写入同一个文件中。
    [rain@www~]$ find /home -name .bashrc > list 2> list        <==错误
    [rain@www~]$ find /home -name .bashrc > list 2>&1        <==正确
    [rain@www~]$ find /home -name .bashrc &> list               <==正确
    
    第一个是错的原因是由于两条数据同时写入同一个文件,又没有使用特殊的语法,此时两条数据可能会交叉写入该文件内,造成次序的错乱,所以第一条语句是有list文件,但是文件内内容错乱。
  6. standard input <
    <这个符号的用法就是将原本需要由键盘输入的数据改为由文件内容代替。
  7. 命令执行的判断依据:; && ll
    想要一次性执行几个命令,可以使用 ;。命令与命令之间利用分号进行间隔,执行完分号前的命令之后会马上执行分号之后的命令,
    [root@www~]# sync;sync;shutdown -h now         <==在关机的时候先执行两次sync同步写入磁盘后才shutdown计算机
    
    两个命令之间有相依性,这个相依性的主要判断依据就是前一个命令执行是否正确。
    命令执行情况 说明
    cmd1&&cmd2 若cmd1执行完毕且正确执行($?=0),则开始执行cmd2,否则不开始执行cmd2
    cmd1||cmd2 若cmd1执行完毕且为正确执行($=0),则不开始执行cmd2,否则开始执行cmd2
    [root@www~]#ls /temp/abc && touch /tmp/abc/hehe   <==使用ls查看目录/tmp/abc是否存在,若存在就用touch创建/tmp/abc/hehe
    ls:/tmp/abc :No such file or directory
    # ls 很干脆地说明找不到该目录,但没有touch的错误,说明touch没有执行
    
    [root@www~]#rm -r /tmp/abc
    [root@www~]#ls /tmp/abc || mkdir /tmp/abc     <==测试/tmp/abc是否存在,不存在就创建
    ls:/tmp/abc:No such file or directory   <==不存在/tmp/abc文件夹
    [root@www~]#ll /tmp/abc
    total 0
    
    如果有三个命令,那么命令的顺序为 command1 && command2 || command3
    ls /tmp/vbirding && echo "exit" || echo "not exit"     <==如果存在就显示错在,不错在就显示不存在,正确
    ls /tmp/vbirding || echo "no exit" && echo "exit"     <==错误,如果不存在,显示no exit 同时也显示 exit
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章