linux6
shell:内置脚本
程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理)
语法简单,代码写起来比较轻松,简单
代码规范:
!/bin/bash 指定了解释器的位置
Shell 相关指令
文件的命名规范:
文件名.sh
使用流程:一:创建一个.sh文件 touch/vim
二:编写shell代码
三:执行shell脚本 脚本必须得有执行权限
echo 123 输出内容是包含字母和符号,则需要用引号括起来。如果纯数字可以不包
注意,在这里运行时一定要写成./test.sh,而不是test.sh,运行其他二进制的程序也一样,直接写test.sh,limux系统会去PATH里面找test.sh,而只有/bin,/sbin等在PATH里,所以你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。
脚本执行的另外一种方式:/bin/bash 脚本的路径
shell脚本分为简单的写法(简单命令的堆积)和复杂的写法。
变量:数据可以发生改变的就是变量。在一个脚本周期内其值可以发生改变的量就是变量
c:一个脚本周期,当前整个shell文件
变量:先定义后使用
例如:class_name = "yunwei" #左边为变量名,右边是变量值,
使用形如:echo $class_name
使用变量的时候,一定要在变量名前面添加一个$符号
双引号:能够识别变量,双引号可以实现转义
单引号:不能识别变量,只会原样输出
* 乘号
只读变量:
语法:readonly 变量名
接受用户输入(重点)
语法:read -p 提示信息 变量名
语法1: if condition
then
command1
command2
...
fi
单行写法: if [condition];then command; fi
语法2
if condition
then
command1
command2
...
else
if condition
then
command1
command2
...
else
command3
fi
语法3
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
expr 是一款表达式计算工具,使用它能完成表达式的求值操作
例如:两个数相加
!/bin/bash
val=expr 2+2
echo "两数之和为:$val"
表达式与运算符之间一定要有空格,例如必须写成2 + 2
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
-eq 检查两个数是否相等,相等返回true
-ne 检测两个数是否相等,不相等返回true
-gt 检测左边的数是否大于右边的,如果是,则返回true
-lt 检测左边的数是否小于右边的,如果是,则返回true
-ge 检测左边的数是否小于等于右边的,如果是,则返回true
-le 检测左边的数是否小于等于右边的,如果是,则返回true
逻辑运算法:
! [!false] 返回true
-o 或运算
-a 与运算
字符串运算符
下表列出了常用的字符串运算符,假定变量a为"abc",变量b为"efg"
运算符
= 检测两个字符串是否相等,相等返回true
!= 检测两个字符串是否相等,不相等返回true
-z 检测字符串长度是否为0,为0返回true
-n 检测字符串长度是否为0,不为0返回true
str 检测字符串是否为空,不为空返回true
文件测试运算符(重点)
文件测试运算符用于检测Linux文件的各种属性
属性检测描述如下:
-b file 检测文件是否是块设备文件,如果是,则返回true
-c file 检测文件是否是字符设备文件,如果是,则返回true
-d file 检测文件是否是目录,如果是,则返回true,
-r file 检测文件是否可读,如果是,则返回true
-w file 检测文件是否可写,如果是,则返回true
-x file 检测文件是否可执行,如果是,则返回true.
-e file 检测文件是否存在,如果是,则返回true
shell脚本附带选项
问题描述,在linux shell中如何处理tail -10 access.log 这样的命令行选项?
步骤:
调用tail指令
系统把后续选项传递给tail
Tail先去打开指定的文件
取出最后10行
如果一个项目是动态(内容会变化的,网页),则数据库是必不可少的一个环节
a、源码包
优点:开源:可以修改源代码
编译安装,更加适合自己的系统,稳定高效
常用语法:tar -zxvf *.tar.gz
tar -jxvf *.tar.bz2
选项含义:
-z或--gzip或--ungzip:通过gzip指令处理文件;
-x或--extract或--get:从文件中还原文件;
-v:显示操作过程;
-f或--file:指定一个文件;
-j:支持bzip2解压
先将软件包传递到服务器中。
配置(config/configure/bootstrap)→编译(make/bootstrapd)→安装(make install/bootstraped install)
b、二进制包(rpm)
优点:包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载
缺点:经过编译,不可以看到源代码
rpm -qa|grep 关键词
rpm -e 关键词
常用的yum指令:
yum list 列出当前已经装的和可以装的软件
yum search 名 搜索指定的关键词的包
yum [-y] update [包名]
yum [-y] update [包名]
yum [-y] remove 包名 卸载指定的包
shell:内置脚本
程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理)
语法简单,代码写起来比较轻松,简单
代码规范:
!/bin/bash 指定了解释器的位置
Shell 相关指令
文件的命名规范:
文件名.sh
使用流程:一:创建一个.sh文件 touch/vim
二:编写shell代码
三:执行shell脚本 脚本必须得有执行权限
echo 123 输出内容是包含字母和符号,则需要用引号括起来。如果纯数字可以不包
注意,在这里运行时一定要写成./test.sh,而不是test.sh,运行其他二进制的程序也一样,直接写test.sh,limux系统会去PATH里面找test.sh,而只有/bin,/sbin等在PATH里,所以你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。
脚本执行的另外一种方式:/bin/bash 脚本的路径
shell脚本分为简单的写法(简单命令的堆积)和复杂的写法。
变量:数据可以发生改变的就是变量。在一个脚本周期内其值可以发生改变的量就是变量
c:一个脚本周期,当前整个shell文件
变量:先定义后使用
例如:class_name = "yunwei" #左边为变量名,右边是变量值,
使用形如:echo $class_name
使用变量的时候,一定要在变量名前面添加一个$符号
双引号:能够识别变量,双引号可以实现转义
单引号:不能识别变量,只会原样输出
* 乘号
只读变量:
语法:readonly 变量名
接受用户输入(重点)
语法:read -p 提示信息 变量名
语法1: if condition
then
command1
command2
...
fi
单行写法: if [condition];then command; fi
语法2
if condition
then
command1
command2
...
else
if condition
then
command1
command2
...
else
command3
fi
语法3
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
expr 是一款表达式计算工具,使用它能完成表达式的求值操作
例如:两个数相加
!/bin/bash
val=expr 2+2
echo "两数之和为:$val"
表达式与运算符之间一定要有空格,例如必须写成2 + 2
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
-eq 检查两个数是否相等,相等返回true
-ne 检测两个数是否相等,不相等返回true
-gt 检测左边的数是否大于右边的,如果是,则返回true
-lt 检测左边的数是否小于右边的,如果是,则返回true
-ge 检测左边的数是否小于等于右边的,如果是,则返回true
-le 检测左边的数是否小于等于右边的,如果是,则返回true
逻辑运算法:
! [!false] 返回true
-o 或运算
-a 与运算
字符串运算符
下表列出了常用的字符串运算符,假定变量a为"abc",变量b为"efg"
运算符
= 检测两个字符串是否相等,相等返回true
!= 检测两个字符串是否相等,不相等返回true
-z 检测字符串长度是否为0,为0返回true
-n 检测字符串长度是否为0,不为0返回true
str 检测字符串是否为空,不为空返回true
文件测试运算符(重点)
文件测试运算符用于检测Linux文件的各种属性
属性检测描述如下:
-b file 检测文件是否是块设备文件,如果是,则返回true
-c file 检测文件是否是字符设备文件,如果是,则返回true
-d file 检测文件是否是目录,如果是,则返回true,
-r file 检测文件是否可读,如果是,则返回true
-w file 检测文件是否可写,如果是,则返回true
-x file 检测文件是否可执行,如果是,则返回true.
-e file 检测文件是否存在,如果是,则返回true
shell脚本附带选项
问题描述,在linux shell中如何处理tail -10 access.log 这样的命令行选项?
步骤:
调用tail指令
系统把后续选项传递给tail
Tail先去打开指定的文件
取出最后10行
如果一个项目是动态(内容会变化的,网页),则数据库是必不可少的一个环节
a、源码包
优点:开源:可以修改源代码
编译安装,更加适合自己的系统,稳定高效
常用语法:tar -zxvf *.tar.gz
tar -jxvf *.tar.bz2
选项含义:
-z或--gzip或--ungzip:通过gzip指令处理文件;
-x或--extract或--get:从文件中还原文件;
-v:显示操作过程;
-f或--file:指定一个文件;
-j:支持bzip2解压
先将软件包传递到服务器中。
配置(config/configure/bootstrap)→编译(make/bootstrapd)→安装(make install/bootstraped install)
b、二进制包(rpm)
优点:包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载
缺点:经过编译,不可以看到源代码
rpm -qa|grep 关键词
rpm -e 关键词
常用的yum指令:
yum list 列出当前已经装的和可以装的软件
yum search 名 搜索指定的关键词的包
yum [-y] update [包名]
yum [-y] update [包名]
yum [-y] remove 包名 卸载指定的包