正则表达式

1.正则表达式就是用一个字符串来描述一个特征,然后去验证其它字符串是否符合这个特征。
2.[ ]是为解决.号匹配过于广泛的问题,指定一个范围,如
t[aeio]n只能匹配 tan, ten ,tin, ton
3.或运算符|
t(a|e|i|o|oo)n 匹配 tan, ten, tin, ton, toon
在LINUX中,正则表达式中(){}|+?要加\转义,因为有特殊含义,要表示.号,也要用.转义
grep “t(o|i|e|oo)n” cal.txt
4.表示次数的符号-量词
*零次或多次
+一次或多次
? 零次或一次
{m} 恰好m次
{m,n} 从m次到n次 ({}中m,n不能留空格)
5.表示以xx开始或结束
^ 以什么开始
$ 以什么结束
如 ^hello world,表示匹配hello world,该字符串必须以h开头,以d结束,即ahello world或hello world.是匹配不上的。
例:用正则从中查出邮箱
[[email protected] app]$ grep -o “[0-9]{9,10}@([0-9]{3}|[a-z]{2}).com” a.txt

嵌入式Linux C-shell编程,C开发环境搭建
则可显示前两个email邮箱

shell编程
shell是命令解释器,也可以编程,包含了过程语言的诸多特性。常用的shell见下表
ash,由Kenneth Almquist编写,是linux中占用资源最少的一种shell,它只包含24个内部命令,因而使用起来很不方便。
bash,是linux的默认shell,由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个,具有以下特点
a) 可以使用类似dos下面的doskey功能,用方向键查阅和快速输入并修改命令
b) 自动通过查找匹配的方式给出以某字符串开头的命令
c) 包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助
ksh,由Eric Gisim编写,是Korn Shell的缩写。共有42条内部命令。最大的优点是几乎和商业发行版的ksh完全兼容
csh,由以William Joy为代表的47位作者编写,共有52个内部命令。该shell其实指向/bin/tcsh这个shell,也就是说:csh其实就是tcsh
zch,由Pual Falstad完成,共有84个内部命令。如果只是一般用途,没必要安装这种shell
shell编程类似dos中的批处理文件,又叫shell script,shell程序
输入输出重定向
在Linux中,每个进程都有3个文件描述指针可供使用:
1.标准输入,文件描述指针为0
2.标准输出,文件描述指针为1
3.标准错误输出,文件描述指针为2
这3个指针使进程可以接收标准输入终端的输入,同时由标准输出终端来显示。linux中也提供了输入输出重定向来取代这些标准输入输出设备。在shell中,可以使用>,<,等来进行重定向
管道pipe
pipe同样可以替代标准输入输出来工作,它可以将某个命令的输出送到另一个命令的输入,其语法如下
commend1 | commend2 [|commend3…]
也可以连同标准错误输出一起送入管道
commend1 | &commend2 [|&commend3…]
前台和后台
在shell下面,一个新产生的进程可以通过命令后面的符号;和&来分别以前后台的方式来执行。语法如下
////产生一个前台进程,下一个命令必须等该命令结束才能输入
command
//产生一个后台进程,此进程在后台运行的同时,可以输入其他的命令
command &
shell中的环境变量
shell在开始执行时就已经定义了一些和系统的工作环境相关的变量,用户可读可修写。常见的有
HOME:用来保存注册目录的完成路径名
PATH:用于保存用冒号分隔的目录路径,shell将按此给出的顺序搜索这些目录,查找可执行文件来执行
TERM:终端类型
UID:当前用户的标识,是一串数字
PWD:当前工作目录的绝对路径,该变量的值随cd命令的使用而变化
PS1:主提示符,在特权用户下,默认的主提示符为#;普通用户下,默认的主提示符为$
PS2:辅助提示符,在用户输入命令过程中,如果用户有行尾输入\然后回车,或者直接按回车,shell判断用户的命令还没有结束,显示这个提示符,提示用户继续输入命令的其余部分,默认的辅助提示符是>
执行Shell
1.给该用户赋予shell的执行权限
2. sh ./xxx.sh
shell中的变量
临时变量:shell程序内部定义,包括用户自定义变量和位置变量
永久变量:即环境变量,值不随shell脚本的执行结束而消失(如 $PATH, $LANG, $SHELL, $PS1, $HOME)
变量命名:字母,数字或下划线组成,不能以数字开头,读取变量时加 .使exportshellexport(scriptsource)访 /.bashrc /.bashprofileshell![](https://imgblog.csdnimg.cn/20200116194940154.png)shell![](https://imgblog.csdnimg.cn/20200116195013650.png)[ben@localhostc.d]. 如果值中有空格,需要使用引号,单引号不解析其中的变量,照样显示;双引号会把变量解析出来. **export** 在命令行中设置的变量是当前shell的局部变量,export后变为环境变量(该script需要用source命令执行),但仅限于当前会话,如需要每次会话能访问,则需要加在~/.bashrc或 ~/.bash_profile中 **shell中其他的预定义临时变量** ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200116194940154.png) **简单的shell** ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200116195013650.png) **例:**执行步骤为[[email protected] c.d] sh ./t.sh
嵌入式Linux C-shell编程,C开发环境搭建
则查看出来的结果为
-rw-rw-r–. 1 ben ben 6 Jan 16 03:57 2020-01-16 03:57:11.txt

数据类型
字符串,数值,布尔,数组

嵌入式Linux C-shell编程,C开发环境搭建
单引号和双引号的区别
单引号不解析字符串中以$打头的变量,原样输出
双引号会解析字符串中以$打头的变量,例如
嵌入式Linux C-shell编程,C开发环境搭建
键盘输入-read
#!/bin/sh
read first second third
echo “the first parameter is $first”
echo “the second parameter is $second”
echo “the third parameter is $third”
算术运算
expr 3+5 //3+5
expr 3 + 5 //8
expr 3 / 5 //0
expr 3 * 5 //15
expr expr 12 - 7 / 3 //1
测试语句
用于测试变量是否相等,是否为空,文件类型等
test: 测试范围,整数,字符串,文件
ge大于等于, gt,le小于等于,lt,ne不等于
test –b File 文件存在并且是块设备文件
-c文件存在并且是块字符文件
-d文件存在并且是目录
-e文件存在
-f文件存在并且是常规文件
-h(L) 文件存在且是符号链接
-r文件存在且可读
-w文件存在且可写
-x文件存在且可执行
if-else
大于 -gt
小于 -lt
等于 -eq
不等于 -ne
#!/bin/sh
if [ -d $1 ]; then
echo “$1 is a directory.”
elif [ -f $1 ]; then
echo “$1 is a common file.”
elif [ -c $1 -o -b $1 ]; then
echo “$1"is a device file.”
else
echo “$1 is an unknown file.”
fi

case
嵌入式Linux C-shell编程,C开发环境搭建

while
#!/bin/sh
I=1
SUM=0
while [ $I -le 100 ]
do
SUM=expr $SUM + $I
I=expr $I + 1
done
echo $SUM

for
#!/bin/sh
sum=0
for i in seq 100
do
sum=expr $sum + $i
i=expr $i + 1
done
echo $SUM
//或
sum=0
for((i=0;i<=100;i++))
do
sum=expr $sum + $i
done
echo $sum

开发环境搭建 eclipse
用普通用户身份登录,进入主目录,建立app目录
复制jdk7和ecllipse cpp压缩包到用户主目录的app目录下
用tar命令解压两个文件到app目录下
修改环境变量:
管理员,可以直接修改:
#vi /etc/profile
或,普通用户修改:
#vi ~/.bash_profile
将如下配置添加到文件中,然后保存退出。
export JAVA_HOME=/home/ben/app/jdk1.7.0_79
export PATH=JAVAHOME/bin:JAVA_HOME/bin:PATH
退出系统,重新登录
进入eclipse目录,双打开下图中可执行文件
嵌入式Linux C-shell编程,C开发环境搭建
并确认空间空间,并打勾,使用此默认工作空间不再提醒。
新建一个c项目,如果报以下错误
嵌入式Linux C-shell编程,C开发环境搭建
使用root用户登录Terminal,输入以下命令
yum install gcc-c++
出现以下安装界面:
嵌入式Linux C-shell编程,C开发环境搭建
嵌入式Linux C-shell编程,C开发环境搭建
输入两次y之后,提示安装完成!
再输入 g++命令,测试成功!
关掉eclipse,重新打开
嵌入式Linux C-shell编程,C开发环境搭建
之前的错误已经不存在,点击红色圈处的运行按钮,程序正确运行。
如何退出程序
第一种;在main用return,一般原则是程序正常终止return 0,如果程序异常终止则return -1。
第二种:正式终止进程(程序)应该使用exit或者_exit或者_Exit之一。

相关文章: