egrep及扩展的正则表达式:

egrep = grep -E

扩展正则表达式的元字符:

或者:a | b

练习:

1、显示当前系统root、centos或user1用户的默认shell和UID;

2、找出/et/rc.d/init.d/functions文件中某单词后面跟一个小括号的行;

3、使用echo输出一个路径,使用egrep取出基名;(整个路径的最后一个名称)

4、找出ifconfig命令结果中1-255之间的数值;

5、找出ifconfig命令结果中的IP地址;

注意:在使用或的时候会有很多坑,一定要小心,拿这题举例:

【1】匹配1-255之间的数字。

错:  # 由于或的存在,锚定词首只对第一个有效,锚定词尾只对最后一个选择有效。

对:  # 在一个符号多次出现的时候,没必要一个一个加,只要在外面加括号就可以了。

【2】匹配1-255数字加一个点。

(

【3】匹配IP地址

错:(

对:(

fgrep:不支持正则表达式搜索;

bash的基础特性(4)

变量类型:

数据存储格式 、存储空间大小、参与运算各类;

字符型

数值型 :

整型

浮点型

强类型:定义变量时必须指定类型、参与运算必须符合类型要求

弱类型:无须指定类型,默认均为字符型;参与运算会自动进行隐式类型转换;

bash中的变量的种类:

根据变量的生效范围等标准:

本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效;

环境变量:生效范围为当前shell进程及其子进程;

局部变量:生效范围为当前shell进程中某代码片断(通常指函数);

位置变量:$1, $2, ...来表示,用于让脚本在脚本代码 中调用通过命令行传递给它的参数;

特殊变量:$?, $0, $*, $@, $#

本地变量:

变量赋值:name="value"

可以使用引用:

value:

(1) 可以是直接字串:name="username"  注:变量赋值的=号前号不能有空格,不然shell会把变量名当命令执行,然后报command not found这个错误,这个和Python不太一样。另外VALUE值中如果没空格,引号也可以不用加。

(2) 变量引用:name="$username"

(3) 命令引用:name=`COMMAND`,name=$(COMMAND)   就是将一个命令的执行结果赋值给一个变量,推荐第2种方法。

变量引用:${name}, $name

" ":弱引用,其中的变量引用会被替换为变量值;

‘ ’:强引用,其中的变量引用不会被替换为变量值,而保持原来字符串;

显示已定义的所有变量

set

销毁变量:

unset name  注:变量名前不用加$

环境变量:

变量声明、赋值;

export name=VALUE

declare -x name=VALUE

示例:(1) 直接定义一个环境变量:

declare -x num1=3

(2) 将 一个本地变量导出为环境变量:

num2=5

declare -x num2

变量引用:$name,$(name)

显示所有环境变量:

export

env

printenv

销毁:

unset name

bash有许多内建的环境变量:PATH,SHELL,UID,HISISIZE,HOME,PWD,OLD,HISFILE,PS1

变量命令法则:

1、不能使用程序中的保留字;

2、只能使用数字、字母及下划线,且不能以数字开头;

3、见名识义;

只读变量:不能变改值,不能被销毁,只能等到shell进程终止时随之销亡。

readonly name

declare -r name

位置变量:

在脚本代码中调用通过命令行传递给脚本的参数;

$1,$2,....;对应调用第1、第2个参数

$0:命令本身;

$*:传递给脚本的所有参数;调用时将传递给脚本的所有参数当一个字符串;

$@:传递给脚本的所有参数;将传递给脚本的每一个参数当一个独立的字符串;

$#:传递给脚本的参数的个数;

示例:

[root@localhost bin]# ./posvar.sh tom jerry obama

./posvar.sh

jerry

$*:tom jerry obama

$@:tom jerry obama

$#:3

轮岗操作:shitf +[n]

[root@localhost bin]# nano posvar.sh

#!/bin/bash

echo $1shift 注:踢掉一个。

echo $1shift2注:踢掉两个

echo $1echo"$*:$*"echo"$@:$@"echo"$#:$#"

----------------------------------------------------------------[root@localhost bin]# ./posvar.sh tom jerry obama blair

tom

jerry

blair

$*:blair

$@:blair

$#:1

bash的配置文件:

按生效范围划分,存在两类:

全局配置:

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

按功能划分,存在两类:

profile类:为交互式登录的shell提供配置;

全局:/etc/profile,/etc/profile.d/*.sh

个人:~/.bash_profile

功用:

(1)用于定义环境变量;

(2)运行命令或脚本;

bashrc类:为非交互式登录的shell提供配置;

全局:/etc/bashrc

个人:~/.bashrc

功用:

(1)定义命令别名;

(2)定义本地变量;

shell登录:

交互式登录:

直接通过终端输入账号密码登录;

使用:su -UserName 或su -l UserName 切换的用户

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录:

su UserName

图形界面下打开的终端

执行脚本

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

编辑配置文件定义的新配置的生效方式:

(1)重新启动shell进程;

(2) 使用source或.命令进程;

问题:

1、定义对所有用户都生效的别名?

2、让用户的PATH环境变量的值多出一个路径,例如多加/usr/local/apache2/bin

bash中的算术运算:

+,-,*,/,%,**

实现算术运算:

(1)let var=算术表达式

(2)var=$[算术表达式]

(3)var=$((算术表达式))

(4)var=$(expr arg1 arg2 arg3 ....)  例如:mul2=$(expr $num1 * $num2)

乘法符号有些场景中需要转义;

bash有内建的随机数生成器:$RANDOM  例如:echo $[$RANDOM%60+1]

增强型赋值:

+=,-=,*=,/=,%=

let varOPERvalue

例如:let count+=1

自增,自减:

let var+=1

let var++

let var-=1

let var--

练习1:写一个脚本

计算/etc/passwd文件中的第10个用户和第20用户之ID之和;

练习2:写一个脚本

传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和;

条件测试:

判断某需求是否满足,需要由测试机制来实现;

Note:专用的测试表达式需要由测试命令辅助完成测试过程;

测试命令:

test EXPRESSION

[ EXPRESSION ]

[[ EXPRESSION ]]

Note:EXPRESS前后必须有空白字符,写的时候容易忘记,提示命令不存在;

bash的测试类型:

数值测试:

-gt:不否大于;

-ge:是否大于等于;

-eq:是否等于;

字符串测试:

==:是否等于;

>:是否大于;

!=:是否不等于;

~=:左侧字符串是否能够被右侧的PATTERN所匹配;

Note:此表达式一般用于[[   ]]中;

-z "STRING”:测试字符串是否为空,空则为真,不空则为假;

-n "STRING":测试字符是否不空,不空则为真,空则为假;

Note:用于字符串比较时用到的操作数都应该使用引号;

文件测试

bash自定义退出状态码

exit [n]:自定义退出状态码;

注意:脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字;

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码;

练习:写一个脚本

接受一个文件路径作为参数;

如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;

如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数;

linux中使用egrep取值ip地址,Linux:Day6(上) egrep、条件测试相关推荐

  1. linux中使用egrep取值ip地址,egrep命令_Linux egrep 命令用法详解:在文件内查找指定的字符串...

    egrep命令用于在文件内查找指定的字符串.egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法.egrep是用extended regu ...

  2. Linux中的网络配置(ip地址,网关,dhcp,网桥)

    目录 一.临时管理网卡 1.相关命令 2.实验:临时管理网卡 二.永久管理网卡 1.nm-connection-editor 图形方式设定网络 2.nmtui文本模式下图形配置网络 3.nmcli命令 ...

  3. java 判断是linux系统_java判断是window系统还是Linux系统,并获取其IP地址及文件上传 | 学步园...

    这是upload类的方法: public class Upload { public static String upload(FormFile formfile,String dirPath,int ...

  4. linux给网卡添加一个ip地址,linux网络配置中如何给一块网卡添加多个IP地址

    汤向峰每日一题-2017年3月16日: linux网络配置中如何给一块网卡添加多个IP地址 linux系统给网卡配置VIP的方法常见有两种:别名IP.以及辅助IP ================== ...

  5. 真正的取真实IP地址及利弊Asp.net

    真正的取真实IP地址及利弊Asp.net 真正的取真实IP地址及利弊Asp.net http://tech.aspxsoft.com/aspnet/2006-3-16/425.aspx 真正的取真实I ...

  6. 真正的取真实IP地址及利弊

    目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAddress = (HttpContext.Curren ...

  7. C#取真实IP地址及分析

    说一哈,我也是转来的,不是想骗PV,方便自己查而已! 目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAd ...

  8. 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)

    [OS]Linux环境下配置固定IP地址--静态IP地址(不能上外网问题) ---red hat重启网卡 service network restart /etc/rc.d/init.d/networ ...

  9. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

最新文章

  1. java 匿名内部类
  2. ACM数学常用知识整理(持续更新ing)
  3. named 客户端无法解析_Outlook邮件附件无法直接打开?用这个办法轻松解决
  4. python使用redis在实际场景使用_Python使用Redis实现作业调度系统(超简单)
  5. 牛客多校2 - All with Pairs(字符串哈希+next数组)
  6. 《剑指offer》数字在排序数组中出现的次数
  7. 安装配置优化nginx
  8. 买基金你们都亏了多少钱?
  9. centos7赋予全部权限_Centos7安装MySQL8.0
  10. Java基础:如何读取控制台输入?如何读取字符?
  11. 【公众号系列】站在烦恼里仰望幸福
  12. go语言爬虫 - TapTap用户都喜欢些什么游戏
  13. Nodejs 获取本机IP地址
  14. 山科计算机科学与技术学院,山东科技大学-计算机科学与工程学院
  15. android 键盘隐藏监听,Android监听键盘显示和隐藏
  16. web安全与字体——刘尧博士讲座--PDF安全
  17. Qt接入阿里云SDK,OSS工程,实现头像上传,Mac和Win编译库文件。
  18. nodejs中解决压缩包乱码
  19. 适合小白的pathon学习网站
  20. 96年的小同事找了一份高薪工作

热门文章

  1. C++ 字符跑酷#5 游戏制作实录
  2. 山东农业大学计算机科学与技术学院,山东农业大学信息科学与工程学院介绍
  3. 51Nod-1574-排列转换
  4. 人工智能的未来趋势和发展方向
  5. DMO:使用点线特征的单目直接视觉里程计
  6. jquery修改兄弟节点的style
  7. HTML页面和Java_Java前端的HTML和CSS
  8. 怎么给照片加眼镜(一):UV空间融合法
  9. java fileutils 文件夹_java文件操作---FileUtils
  10. 转换uptime_linux 系统命令——uptime