shell_2

1、重定向
 程序 =指令 +数据
            命令    变量
 在程序中,数据如何输入?又如何输出?
 数据输入:键盘 -- 标准输入,但其并不是唯一的输入方式;
  --stdin
  echo "123456" | passwf --srdin "username"
  例如:功能添加用户 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 增加覆盖重定向功能
  set -C 关闭覆盖重定向功能
  >| 强制重定向
  >>  追加重定向
   不覆盖
  2、标准输入
  <  a<b #把b的内容交给a输入
  <  tr  替换文件内容
   tr set1 [set2] < file.txt
  << 将多行数据同时输出
  用法: cat >>a.txt<<EOF
   >1
   >2
   >3
   >EOF #结束语
  3、错误输出
  2>  2>>
  扩展:不需要输出内容,只需要输出状态;
   ls /etc/ > /dev/null
   if [ $? -eq 0 ];then
    循环体
  
   fi
  ls 阿斯顿  >/dev/null 2>/dev/null  
  /dev/null(黑洞文件) 来什么吃什么(删除)
  /dev/zero 吹泡泡
  &> &>> == 2&>1
   ls /etc/ &> /dec/null
  2>>
  

2、管道 -tee
 command1 | command2 | command3 | ... ...
 前一个命令的执行结果交给后一个命令来执行;
  【Linux思想:结合小功能实现大思想】
 free -m | grep "^Mem" | cut -d' '  -f19
  free -m | grep "^Mem" | awk '{print $3}'
 find  【范围】  -name
 tee 一路输入,两路输出
  tee /tmp/tee.out
  如果没有文件,会创建,默认如果文件存在有内容,会覆盖;
 练习:
 将/etc/passwd文件
  head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out
  tr 替换
  cut 剪切 cut -d' '  -f19
    
3、文本处理工具 - wc,cut,sort, uniq

猜你喜欢

转载自www.cnblogs.com/wangzhehui/p/11345526.html