Linux学习笔记(7)----数据流重定向

来源:互联网 发布:淘宝店铺可以贷款 编辑:程序博客网 时间:2024/05/01 19:05
  • 定义:

    数据流重定向大概是指把数据传导到文件或者屏幕去.

    standard output: 顾名思义,标准输出指命令执行回传的正确信息.
    standard error output: 标准错误输出,指命令执行失败,传回的错误信息.

  • 查询命令 + > + File
    如果File不存在,则系统会自动创建File并且把命令执行结果写入File,如果File已经存在,则原本文件内容会被清空,而执行结果重新写入,可以理解为覆盖掉原来的信息.
  • 查询命令 + >> + File
    与上面的区别就在于,如果文件存在,执行结果会继续写入,保留原来的文件内容, 是在原来文件基础上增加信息.

  • 查询命令 + n+>> + File

  • n=1,把正确的数据以累加的方式输出到指定File
  • n=2,把错误的数据以累加的方式输出到指定File
    所谓的错误信息就比如,如果你的Linux创建了多个user,你输入find /home -name .bashrc会提示正确的和错误的信息(Permission denied).所以你可以通过 find /home -name .bashrc > list_right 2> list_error把正确和错误的信息写到不同文件.
  • 如果是写入一个文件的话,语法稍微麻烦一点: find /home -name .bashrc > list 2> list或者 find /home -name .bashrc > list 2>&1
  • cat + > + file 这个符号比较形象可以理解为写入
    创建一个file并且下方让你输入直到你按ctrl+d,表示结束输入.
    这里写图片描述
    我们还可以用一个文件的信息来输进去,
    cat > 哇哈哈 < ~/another_file
  • cat + > + file << “结束指令”
    这里写图片描述
    当你输入结束指令并且按回车之后,会自动认为你写入结束,其中结束指令可以你自己规定.
  • 命令判断依据: ; && ||
    • ; :不考虑相关性的连续命令执行.鸟哥举的例子是:sync; sync; shutdown -h now执行两次写入磁盘再来关机.
    • $? && ||
      • $? :表示命令的执行结果,和一般编程的思想相反,非零表示失败,零表示成功执行.
      • && : 比如,cmd1 && cmd2 ,如果cmd1执行正确($?=0),cmd2才会执行.
        比如:ls /tmp/A_test && touch /tmp/A_test/ABC 逻辑上表示,如果/tmp/A_test目录存在则列出信息,如果不存在就在目录下touch一个文件
      • || :比如,cmd1 || cmd2 ,如果cmd1执行正确($?=0),cmd2不会执行.如果cmd1执行错误,cmd2才执行.
        比如:
        ls /tmp/abc || mkdir /tmp/abc 显而易见,它表示如果目录不存在就创建目录
  • 管道命令:首先,要知道管道命令仅仅能处理前面一个命令传来的正确信息(standard output),对于错误信息没有直接处理能力(standard error).

    • 对于standard error管道命令会忽略
    • 管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行

    管道命令常用功能:

    1. cut,字面意思就是切取一段信息
      这里写图片描述
      cut -d +’分割单位’ -f 3,5表示 提取以:为分割单位的第3段和第5段内容.
    2. grep,筛选指定行.
      这里写图片描述
      last 执行结果有很多登录者不同时间的信息,如果我们要筛选只有reboot的行,可以敲 last | grep ‘reboot’
      这里写图片描述
      如果反选,则 last | grep -v ‘reboot’
      这里写图片描述
    3. sort,排序.
      这里写图片描述
      如果要指定对某一列排序,比如根据passwd这个文件内容的第三列排序:
      则可以cat /etc/passwd | sort -t ‘:’ -k 3
      这里写图片描述
      注意的是:此处排序是按文字类型排序,不是简单的数字大小排序.所以如果要按常规排,要敲入:cat /etc/passwd | sort -t ‘:’ -k 3 -n
    4. uniq,unique(独一无二)的缩写,去除重复行.
      这里写图片描述
      -c表示统计数量.意味着,每个用户的登陆次数.
    5. wc,统计行数,字数和字符数
      也可以直接单独计算文件含有行数(-l),英文单字(-w)和字符数(-c)
      这里写图片描述

    参考资料<鸟哥linux私房菜基础学习篇>p328-337

0 0
原创粉丝点击