重定向和管道符:
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 
  << 将多行数据同时输入
   cat >>a.txt<<EOF
   >1
    >2
   >3
   >EOF
  3、错误输出
  2>  2>> 
  扩展:不需要输出内容,只需要输出状态;
   ls /etc/ > /dev/null 2> /dev/null
   echo $?  ($?--变量:上一条命令的执行状态)
   if $?等于0;么?
    OK--干!
   否则
    不
   结束
  ls 暗室逢灯  > /dev/null 2> /dev/null
   /dev/null  黑洞文件  来什么吃什么(删除)
   /dev/zero   吹泡泡 
 
  &>  &>>  ==  2&>1
   ls /etc/ &> /dev/null
2、管道 - tee
 command1 | command2 | command3 | ... ...
 
 前一个命令的执行结果交给后一个命令来执行;
 【Linux思想:结合小功能实现大功能】
 free -m | grep "^Mem" | cut -d' ' -f19
 free -m | grep "^Mem" | awk '{print $3}'
 tee  一路输入,两路输出
  tee /tmp/tee.out
  如果没有文件,会创建,默认如果文件存在有内容,会覆盖;
 练习:
 将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;
  head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out
 将登录至当前系统上用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中;
  who | tail -3 | cut -d' ' -f1 | tr [[:lower:]] [[:upper:]] | tee /tmp/who.out
  tail   查看文件尾部多少行(默认10行)
   -n     tail -n 5 /etc/passwd  == 简写 tail -5 /etc/passwd 
   -f      实时查看文件更新内容
    tail -f /var/log/message
  head  查看文件头部多少行(默认时行)
   -n  #    前#行, 简写 -#
  取 10 - 20 行:  head -20 /etc/passwd | tail -10
  tar 压缩
  tr   替换
  cut 切

最新文章

  1. Cannot find or open the PDB file问题的解决
  2. Spring-JDBC实现Contact的CRUD
  3. 常见面试问题 - Useful Links
  4. KVM 基础使用(一)
  5. thinkphp 3.2 单入口 多模块 不能加载index控制器问题
  6. 对于C#中的一些点滴你真的理解了吗?
  7. Java中ArrayList和LinkedList区别
  8. iOS App Transport Security
  9. linux下实现tomcat定时自动重启
  10. PuTTY DSA签名远程缓冲区溢出漏洞(CVE-2013-4207)
  11. 全局获取Context的技巧
  12. Linux内核中的宏:__init and __exit
  13. 将电脑文件复制到vm虚拟机中,然后安装步骤
  14. 玩转接口测试工具fiddler 教程系列1
  15. Linux问题杂谈
  16. qq远程连接/windows远程桌面/teamviwer/xmanager/vnc的区别
  17. GPUImage API 文档之GPUImageFilter类
  18. Java编程的逻辑 (30) - 剖析StringBuilder
  19. Redmine插件的安装与卸载,知识库插件安装。
  20. 基于Axis1.4的webservice接口开发(环境搭建)

热门文章

  1. 【Winfrom-Panel】Panel隐藏与显示,自动隐藏菜单, Auto-Hide Menu
  2. expect无交互操作
  3. 第十一天 unittest参数化模块
  4. cookie生命周期expires 时间过期,但是cookie没有被浏览器清理的问题
  5. javaScript第二篇
  6. Linux和其他机器共享文件
  7. CUDA-F-2-0-CUDA编程模型概述1
  8. Vue_(组件通讯)动态组件结合keep-alive
  9. $\LaTeX$数学公式大全8
  10. 关于开发APP接口版本不兼容的问题