bash的基本特性(3)

  1、提供了编程环境

  程序编程风格:

    过程式:以指令为中心,数据服务于指令;

    对象式:以数据为中心,指令服务于数据;

  shell程序:提供了编程能力,解释执行;过程式、解释执行;

  过程式编程:

    顺序执行;

    循环执行;

    选择执行;

  shell脚本:文本文件

    shebang:

      #!/bin/bash

      #!/usr/bin/python

      #!/usr/bin/perl

    运行脚本:

      1、给予执行权限,通过具体的文件路径指定文件执行;

      2、直接运行解释器,将脚本作为解释器程序的参数运行;

  变量:

    命名的内存空间;

  编程语言:

    强类型:

    弱类型:bash

      把所有要存储的数据统统当作字符进行;

      不支持浮点数;

  逻辑运算:

    与    &&:第一执行成功了,第二个也执行;第一个执行失败了,第二个就不执行;

    或    ||:第一个执行成功了,第二个不执行;第一个执行失败了,第二个执行;

    非

    异或

    示例:ls /var &> /dev/null && echo "sucess" || echo "failure"

grep:

  Linux上文本处理三剑客:

    grep:文本过滤(模式:pattern)工具;

      grep, egrep, fgrep(fast grep)

    sed:stream editor,文本编辑工具;

    awk:Linux上的实现gawk,文本报告生成器;

  grep:Global search REgular expression and Print out the line.

    作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;

      模式:由正则表达式字符及文本字符所编写的过滤条件;  注:如果存在空白字符,必须要用引号引起来

      REGEXP分为两类:

        基本正则表达式:BRE

        扩展正则表达式:ERE

      正则表达式引擎:

        grep [OPTIONS] PATTERN [FILE...]

          选项:

            --color=auto:对匹配到的文本着色显示:

            -v:显示不能够被pattern匹配到的行;即取反;

            -i:忽略字符大小写;

            -o:仅显示匹配到的字符串;

            -q:静默模式,不输出任何信息;

            -A #:after,后#行;

            -B #:before,前#行;

            -C #:context,前后各#行;

  基本正则表达式元字符:

  .*:任意长度任意字符;

  \?:匹配其前面的字符0或1次;即前面可有可无

  \+:匹配其前面的字符至少1次;

  \{m\}:匹配其前面字符m次;

  \{m,n\}:匹配前面字符至少m次,最多n次;

    \{0,n\}:匹配前面的字符至多n次;

    \{m,\}:匹配前面字符至少m次;

  

  位置锚定:

    ^:行首锚定;

    $:行尾锚定;

    ^$:空行;

    \< 或 \b:词首锚定;

    \> 或 \b:词尾锚定;

 

  分组:

    \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;

    Note:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命令方式为:\1, \2, \3, .....

      \1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

        \(ab\+\(xy\)*\)

          \1:ab\+\(xy\)*

          \2:xy

    后向引用:引用前面的分组括号中的字符所匹配到的字符。

      grep '\([[:alpha:]]\{1,3\}t\>\).*\1' /etc/passwd

练习:

  1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)

  2、显示/etc/passwd文件中不以/bin/bash结尾的行;

  3、显示/etc/passwd文件中ID号最大的用户的用户名;

  4、如果用户root存在,显示其默认的shell程序;

  5、找出/etc/passwd中的两位或三位数;

  6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存在非空白字符的行;

  7、找出"netstat -tan“命令的结果中以"LISTEN"后跟0、1或多个空白字符结尾的行;

  8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;

练习:

  1、写一个脚本,实现如下功能

    如果user1用户存在,就显示其存在,否则添加之;

  2、写一个脚本,完成如下功能

    如果root用户登录了当前系统,就显示root用户在线;否则说明其未登录;

Linux:Day5 shell编程初步、grep的更多相关文章

  1. linux之shell编程初步

    #################适用于CentOS6################## #!/bin/bash ########################################## ...

  2. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  3. Linux 下shell 编程学习脚手架

    linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...

  4. Linux下Shell编程

    Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...

  5. 【Hadoop离线基础总结】linux的shell编程

    linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...

  6. linux下shell编程示例-获取进程id

    今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo ...

  7. linux中shell编程

    shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ...

  8. linux之shell编程基本语法

    Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的s ...

  9. Linux学习——shell编程之正则表达式和字符处理命令

    shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...

随机推荐

  1. Java8 Optional类

    概述 到目前为止,著名的NullPointerException是导致Java应用程序失败的最常见原因.过去,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...

  2. Docker部署Nginx并修改配置文件

    Docker部署Nginx并修改配置文件 一.拉取nginx镜像 docker pull nginx 二.在宿主机中创建挂载目录 mkdir -p /data/nginx/{conf,conf.d,h ...

  3. 7.通用程序设计_EJ

    第45条: 将局部变量的作用域最小化 该条目与第13条(使类和成员的可访问性最小)本质上是类似的.要使局部变量的作用域最小化,最有利的方法就是在第一次使用它的地方声明.在每个局部变量的声明处都应该包含 ...

  4. PHP无限极分类原理

    1.递归:程序调用自身的编程技巧称为递归 2.案例: /** * @param 递归 $[name] */ function deeploop(&$i=1){ echo $i; $i++; i ...

  5. javascript event 事件解析

    event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout ...

  6. Thinkphp5多数据库切换

    在项目开发中需要Thinkphp5读取多个数据库的数据,本文详细介绍Thinkphp5多数据库切换 一.在database.php配置默认数据库连接 'type'           => 'm ...

  7. 洛谷P2000 拯救世界(生成函数)

    题面 题目链接 Sol 生成函数入门题 至多为\(k\)就是\(\frac{1-x^{k+1}}{1-x}\) \(k\)的倍数就是\(\frac{1}{1-x^k}\) 化简完了就只剩下一个\(\f ...

  8. 24.Odoo产品分析 (三) – 人力资源板块(5) – 出勤(1)

    查看Odoo产品分析系列--目录 安装"出勤"模块,管理员工的上下班打卡. 1. 签到与退签 安装完模块后,点击"出勤"主菜单:  点击中间的签到按钮,实现签到 ...

  9. 显示Linux进程打开了哪些文件? 用lsof命令

    1.lsof abc.txt --> 显示开启文件 abc.txt的进程. 2.lsof -c abc  ---> 显示abc进程现在打开的文件. 3.lsof -c -p 1234 -- ...

  10. Python 标准类库-Windows特殊服务之msvcrt

    标准类库-Windows特殊服务之msvcrt   by:授客 QQ:1033553122 广告:出售自研自动化小平台(无需编码也可用),有需要请联系 测试环境 win7 64位 Python 3.4 ...