一、shell学习
1.shell是Linux为方便用户访问核心服务而提供的命令接口。任何一种shell功能都在于解释用户输入的命令并执行。
2.在接收用户输入的命令后,shell将根据环境变量PATH指定的路径,搜寻相应的命令。
3.大多数情况下,系统已将重要的系统目录设置到PATH环境变量中,通过执行命令echo $PATH可以查看当前的PATH环境变量信息,多个目录间以“:”进行隔离。
4.shell除了解释命令外,还支持脚本编程。
shell编程基础:
1.创建和运行shell脚本程序
创建直接通过vim编辑器新建一个文本文件,然后按shell编程规则编程即可。
运行有两种方式:
1.赋予shell程序的执行权限,通过chmod命令给脚本文件增加执行权,然后在命令行直接运行即可,通过“chmod 755 文件名”赋予权限。
2.通过另外的shell加载脚本,如通过命令“sh 脚本文件名称”的方式运行。
2.shell环境变量
环境变量可以理解为包含了系统和当前登录用户的一些环境信息一些字符串
shell的环境变量可以从系统进行继承,也可以用户自定义。从系统继承的环境变量在文件/etc/profile中定义的,用户自定义的环境变量大多在.profile中。
查看系统中定义的环境变量,由如下命令: echo $环境变量的名称
设置环境变量:export 环境变量的名称=环境变量的值
变量的引用需要通过$+环境变量的名称的方式进行
常见shell环境变量
PATH:shell命令搜索路径。
HOME:用户的主目录的路径名。
TERM:终端类型。
TMOUT:shell自动退出的时间。
PS1:主命令提示符(通过修改PS1可以自己定制shell命令提示符,想永久可以编辑主目录下的.profile文件)
PS2:二级命令提示符。
LD_LIBRARY_PATH:寻找动态链接库的路径。
常用的shell命令:
paddwd:修改账号密码
man <命令名称>:帮助
ls <文件或目录名称>:列表
cd <目录的路径>:改变工作目录
cp <源路径名称> <目标路径名称>:复制文件
rm <文件名称>:删除文件
chmod <权限信息> <文件名称>:修改权限
3.管道与重定向的使用
管道:将一个命令的输出作为另一个命令的输入(|
:管道符号)
重定向:将输入/出重新定向到别的文件
输出重定向:
1.>
:覆盖目标文件
2.>>
:尾部追加
输入重定向:
1.<
2.<<
(here文件操作符):需用一个分隔符开始和一个分隔符结束
4.shell变量的使用
1.环境变量
2.自定义变量
3.系统全局变量:
$#:执行shell脚本时命令行参数的个数,不包括脚本本身
$?:执行上一条shell命令的返回值
$0:shell脚本程序自身的名称
要在脚本中使用变量,通过”
变量名称"的方式进行。在shell编程中存在一种位置变量,它代表执行shell程序时的命令行参数。要在shell脚本中引用这些位置变量,通过
0,
1...进行,
0命令程序本身,$1第一个参数…
5.shell运算符的应用
1.expr命令:+、-、*、/、%、:、>、<、=、!=、>=、<=、&、|
2.test命令:
整数测试:
test int1 -eq int2等于
test int1 -nq int2不等
test int1 -gt int2大于
test int1 -ge int2不小于
test int1 -lt int2小于
test int1 -le int2不大于
字符串测试运算
test -z string判断是否为空,空返回真,不空返回假
test -n string与上相反
test str1=str2
test str1!=str2
文件测试运算
test -r filename判断用户是否对文件有读权限
test -w filename判断用户是否对文件有写权限
test -x filename判断用户是否对文件有执行权限
test -f filename判断是否为普通文件
test -d filename判断是否为目录文件
test -c filename判断是否为字符设备文件
test -b filename判断是否为块设备文件
test -s filename判断大小不为零
test -t fnum判断与文件描述符相关的设备是否为一个终端设备
逻辑运算
test 表达式 1-a 表达式2//与逻辑判断
test 表达式 1-o 表达式2//或逻辑判断
条件控制与循环
if [条件表达式1]
then
if[条件表达式2]
then
...
else
...
fi
命令串;
else
命令chuan5
fi
case string in
str1)
命令串1;;
str2)
命令串;;
*)
默认处理命令串;
esac
for var in list
do
命令串
done
for var//list由当前脚本程序的命令行参数代替
do
命令串
done
while 条件表达式
do
命令串
done
until 条件表达式
do
命令串
done
6.使用函数
函数名()
{
...
}
function 函数名()
{
...
}
附加:
ps 查看当前系统进程信息
trap 命令 信号//程序接收到信号时的处理方法 当命令是“”表示忽略信号。命令是-时,采用默认方式
参考文献《Linux编程从入门到精通》