重定向和管道符:
1、重定向
 程序 = 指令 + 数据
        命令   变量
 在程序中,数据如何输入?有如何输出?
 
 数据输入:键盘 -- 标准输入,但是并不是唯一输入方式;
    --stdin
    echo "123456"|passwd --stdin"username"
 
    例如:功能添加用户 useradd.sh user.txt文本文档1000个用户
    ./useradd.sh a
    ./useradd.sh b
    ...
    ./useradd.sh < user.txt
   while line;do
    循环体 $line
   done < /etc/passwd
 数据输出:显示器 -- 标准输出,但是并不是唯一输出方式
    ls /etc/ > a.txt
 fd文件标识符 0-9 -- 相当于给文件分类;
    0  1  2
    0 -- 标准输出
    1 -- 标准输入
    2 -- 错误输入输出
  常见重定向符号
    1、标准输出
    >          覆盖重定向、非常危险
          set -C 关闭覆盖重定向功能
        >| 强制重定向
    >>         追加重定向
2.标准输入
  <
   tr 替换文件内容
   tr set1[set2] < file.txt
   
   tr abc ABC /etc/passwd
   tr abc ABC /etc/passwd > /etc/passwd
     将passwd文件中的a、b、c替换成A、B、C
  
  <<
    多行数据同时输入
    cat >>a.txt<<EOF
    >11
    >2
    >3
    >EOF
  3.错误输出
   2> 2>>
   /dev/null 黑洞文件(删除)
   /dev/zero
   ls /etc/ > /dev/null 2> /dev/null——
   &> &>> == 2&>1                       |=
     ls /etc/ &> /dev/null<———— 
   扩展:不需要输出内容,只需要输出状态;
    ls /etc/ > /dev/null
    if[$?(命令执行状态) -eq 0];then
     循环体
    fi
   ls >  /dev/null 2>dev/null
2.管道-tee
 command1|command2|command3|...
 前一个命令的执行结果交给后一个命令来执行;
 【Linux思想:结合小功能实现大功能】
 free -m|grep "^Mem"|cut -d'' -f19
 free -m|grep "^Mem"|awk '{print $3}'
 
 tee[option]...屏幕上输出一次,然后保存一次(一路输入,两路输出)
 tee /tmp/tee.out //如果没有文件,会创建,默认如果文件存在有内容,会覆盖
练习:
 1.将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中
  head -5 /etc/passwd | tr [a-z][A-Z] > /tmp/passwd.out
 2.将登录至当前系统上的用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中
  who | tail -3 | cut -d'' -f1 | tr [[:lower:]] [[:upper:]] | tree /tmp/who.out
  tail——查看文件尾部多少行(默认为10行)
   -n tail -(n)5 /etc/passwd
    -f 实时查看文件更新内容
    tial -f /var/log/message
   sleep 等待多长时间后再向下执行
  head——查看文件头部多少行(默认10行)
   -n # 前#行,简写-#
   取10-20行:head -20 /etc/passwd | tail -10
 文本处理工具-wc,cut,sort,uniq

最新文章

  1. ie 8 下post提交提交了两次
  2. 【云计算】docker三剑客如何支持分布式部署?
  3. vim和tmux主题颜色不一致问题
  4. Intellij Idea 15 旗舰版 破解
  5. 详尽介绍FireFox about:config
  6. Oracle:使用过程中的问题集锦
  7. 小菜学习MVC4-WebApi
  8. Intent组件
  9. HiveQL与SQL区别
  10. boost::asio async_write也不能保证一次发完所有数据 二
  11. jQuery图片切换插件jquery.cycle.js
  12. java导出word
  13. Matlab绘图基础——绘制等高线图
  14. Fiddler手机抓包设置
  15. LeetCode算法题-Binary Tree Level Order Traversal II(Java实现)
  16. Docker系列08:容器监控
  17. Python3学习之路~6.6 类的继承
  18. spring boot实现异步调用
  19. 图片保持比例,padding的妙用
  20. java多线程 -- Condition 控制线程通信

热门文章

  1. CTR学习笔记&amp;代码实现1-深度学习的前奏LR-&gt;FFM
  2. LeetCode 136、137、260(只出现一次的数,异或性质及应用)
  3. jupyternotebook安装
  4. 5G 将带给程序员哪些新机会呢?
  5. react build本地相对目录 &quot;homepage&quot;: &quot;.&quot;, package.json
  6. C# 时间戳(TimeStamp)与时间(DateTime)的互相转换
  7. tensorflow一些API的基本理解
  8. 奇思妙想-java实现另类的pipeline模式
  9. JavaScript每日学习日记(2)
  10. 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析