重定向和管道符:
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 切

学习shell的第二天的更多相关文章

  1. 第十三章、学习 Shell Scripts

    什么是 Shell scripts shell script (程序化脚本) :shell script 是针对 shell 所写的『脚本!』 shell script 是利用 shell 的功能所写 ...

  2. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  3. 鸟哥的Linux私房菜——第十六章:学习Shell Scripts

    视频链接:http://www.bilibili.com/video/av10565321/ 1. 什么是 Shell Script       (shell写的脚本)1.1 干嘛学习 shell s ...

  4. (转)跟着老男孩一步步学习Shell高级编程实战

    原文:http://oldboy.blog.51cto.com/2561410/1264627/  跟着老男孩一步步学习Shell高级编程实战 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...

  5. 鸟哥的Linux私房菜-第10/11/12/13章(vim程序编辑器、学习bash、正则表达式与文件格式化处理、学习Shell Scripts)

    第10章 vim程序编辑器 可以将vim看做vi的进阶版本,vim可以用颜色或底线等方式来显示出一些特殊的信息. 为何要学习vim?因为: a. 所有的 Unix Like 系统都会内建 vi 文书编 ...

  6. Shell prompt(PS1) 与 Carriage Return(CR) 的关系?-- Shell十三问<第二问>

    Shell prompt(PS1) 与 Carriage Return(CR) 的关系?-- Shell十三问<第二问> 当你成功登录进一个文字界面之后,大部份情形下,你会在荧幕上看到一个 ...

  7. 学习 shell脚本之前的基础知识

    转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...

  8. Stealth视频教程学习笔记(第二章)

    Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...

  9. Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程

    Shell高级编程视频教程-跟着老男孩一步步学习Shell高级编程实战视频教程 教程简介: 本教程共71节,主要介绍了shell的相关知识教程,如shell编程需要的基础知识储备.shell脚本概念介 ...

随机推荐

  1. Linux帮助文档

    Linux当中有许多命令: 在Linux中提供了详细的帮组文档,利用好可以提高使用效率:   1.help参数 大多数命令都可以使用 -h 或 --help 参数来获取该命令的使用方法.参数等信息: ...

  2. MessagePack Jackson 数据大小

    我们在使用 MessagePack 对 List 对象数据进行序列化的时候,发现序列化以后的二进制数组数据偏大的情况. 请注意,不是所有的 List 对象都会出现这种情况,这个根据你 List 对象中 ...

  3. 3dmax 欢迎页卡住

    C:\Program Files (x86)\Autodesk\3ds Max 9\stdplugs\dxplugins\dxDDS.mbi,把dxDDS.mbi重命名就OK了,只不过会提示他加载错误 ...

  4. [POJ1151][HDU1542]Atlantis(线段树,扫描线)

    英文题面,我就只放个传送门了. Solution  题意是算矩形面积并,这是扫描线算法能解决的经典问题. 算法的大致思想是,把每一个矩形拆成上边和下边(以下称作扫描线),每条扫描线有四个参数l,r,h ...

  5. [BZOJ2208]:[Jsoi2010]连通数(暴力 or bitset or 塔尖?)

    题目传送门 题目描述 度量一个有向图连通情况的一个指标是连通数,指图中可达顶点对的个数. 在上图中,顶点1可以到达1.2.3.4.5. 顶点2可以到达2.3.4.5. 顶点3可以到达3.4.5. 顶点 ...

  6. LightGBM GPU python版本安装

    失败的安装尝试 1.官方Guide https://lightgbm.readthedocs.io/en/latest/GPU-Windows.html 生成在windows下可执行的exe程序,但是 ...

  7. State Threads之Co-routine的调度

    1. 相关结构体 1.1 _st_epoll_data static struct _st_epolldata { _epoll_fd_data_t *fd_data; /* 调用 epoll_wai ...

  8. LeetCode 90. 子集 II(Subsets II)

    题目描述 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2] 输出: [ [2], [1], [1,2,2 ...

  9. VS Code 调试 Golang 出现 Failed to continue: Check the debug console for details

    VS Code断点调试Golang时候,弹出提示:Failed to continue: Check the debug console for details 点击Open launch.json, ...

  10. hive 源码笔记(1):命令行执行的主流程。

    1. 'hive'命令是(默认为hive跟目录)./bin下的一个shell脚本,依次加载 ./bin/hive-config.sh, ./conf/hive-env.sh, 设置与hadoop.sp ...