linux学习笔记005

正则表达式续:

 BasicREGEXP:基本

 ExtendedREGEXP:扩展

 

基本正则表达式:

字符

.: 匹配除\n以外的任何字符

[]:匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

 

次数匹配:

*:

\?: 0或1次

\{m,n\}:至少m次,至多n次;

 

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

 

锚定:

^:行首

$:行尾

\<, \b:

\>, \b:

 

\(\)

\1, \2, \3, ...

 

grep:使用基本正则表达式定义的模式来过滤文本的命令;

        -i忽略字符大小写

        -v反向查找,显示没有被模式匹配到的行

        -o只显示被模式匹配到的字符串

        --color显示颜色

        -E:使用扩展正则表达式

        -A#: 前#行

        -B#: 后#行

        -C#: 前后各#行

       

扩展正则表达式:

 

字符匹配:

.

[]

[^]

 

次数匹配:

*:

?:

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

{m,n}

 

位置锚定:

^

$

\<

\>

 

分组:

():分组

\1, \2, \3, ...

 

或者

|: or 整个左边和右边匹配单个可以分组

C|cat: Cat或cat, C或cat

 

grep -E = egrep

 grep--color -E '(c|C)at' test6.txt

 

 练习续

4、显示所有以数字结尾且文件名中不包含空白的文件;

ls [^[:space:]]\{0,\}[0-9]$  

 

 

找出/boot/grub/grub.conf文件中1-255之间的数字;

\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

grep -e

 

\.

 

ifconfig |egrep'\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

\.

\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

\.

\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

\.

\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

 

ifconfig | egrep--color'(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

 

IPv4:

5类:A B C D E

A:1-127

B:128-191

C:192-223

 

\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>

(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}

\.

\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>

 

grep, egrep

fgrep: 不支持正则表达式 fast grep

 

shell编程:

 

编译器,解释器

 

编程语言:机器语言、汇编语言、高级语言

 

静态语言:编译型语言

        强类型(变量)

        事先转换成可执行格式

        C、C++、JAVA、C#

动态语言:解释型语言, on the fly

        弱类型

        边解释边执行

        PHP、SHELL、python、perl

面向过程:Shell, C

面向对象: JAVA, Python, perl, C++

 

变量:内存空间,命名

 

内存:编址的存储单元

 

进程:

1+100:

1+1000000

1

 

变量类型:事先确定数据的存储格式和长度

        字符

        数值

                   整型

                   浮点型: 11.23,1.123*10^1,0.1123*10^2

        2013/10/10,64bit

        99999:24bit,

        真、假

逻辑:1+1>2

逻辑运算:与、或、非、异或

1: 真

0: 假

 

1 &0 = 0

0 & 1 = 0

0 & 0 = 0

1 & 1 = 1

或:

 

非:

! 真 = 假

! 假 = 真

shell: 弱类型编程语言

强:变量在使用前,必须事先声明,甚至还需要初始化;

弱:变量用时声明,甚至不区分类型;

 

变量赋值:VAR_NAME=VALUE

 

 

 

bash变量类型:

        环境变量

        本地变量(局部变量)

        位置变量

        特殊变量

       

本地变量:

set VARNAME=VALUE: 作用域为整个bash进程;

 

局部变量:

local VARNAME=VALUE:作用域为当前代码段;

 

环境变量:作用域为当前shell进程及其子进程;

export VARNAME=VALUE

 

VARNAME=VALUE

export VARNAME

        “导出”

 

位置变量:

$1, $2, ...

 

特殊变量:

$?:上一个命令的执行状态返回值;

 

程序执行,可能有两类返回值:

        程序执行结果

        程序状态返回代码(0-255)

                   0:正确执行

                   1-255:错误执行,1,2,127系统预留;

id user1 有返回0

                 

输出重定向:

>重定向

>>追加重定向

2>错误重定向

2>>错误追加重定向

&>错误加普通重定向

 

撤消变量:

unset VARNAME

 

查看当shell中变量:

set

 

查看当前shell中的环境变量:

printenv

env

export

 

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序 .sh结尾

ANIMALS=$ANIMALS:SHEEP追加值

#!/bin/bash

cat /etc/fstab

ls /var

 

 

shebang: 魔数

#!/bin/bash

# 注释行,不执行

 

/dev/null: 软件设备, bit bucket,数据黑洞   

 

       

脚本在执行时会启动一个子shell进程;

        命令行中启动的脚本会继承当前shell环境变量;

        系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;

       

脚本练习:

写一个脚本,完成以下任务

1、  添加5个用户,user1,...,user5

2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息;

3、每个用户添加完成后,都要显示用户某某已经成功添加;

#!/bin/bash

#

usesadd user1

echo "user1" | passwd –stdinuser1 &> /dev/null

echo "Add user1 successfully."

usesadd user2

echo "user2" | passwd –stdinuser2 &> /dev/null

echo "Add user2 successfully."

usesadd user3;

echo "user3" | passwd –stdinuser3 &> /dev/null

echo "Add user3 successfully."

usesadd user4;

echo "user4" | passwd –stdinuser4&> /dev/null

echo "Add user4 successfully."

usesadd user5;

echo "user5" | passwd –stdinuser5 &> /dev/null

echo "Add user5 successfully."

 

脚本条件判断:

        如果用户不存在

                   添加用户,给密码并显示添加成功;

        否则

                   显示如果已经没在,没有添加;

 

bash中如何实现条件判断?

条件测试类型:

        整数测试

        字符测试

        文件测试

 

条件测试的表达式:

        [expression ]

        [[expression ]]

        testexpression


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值