Linux 第十五天
Posted kuexun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 第十五天相关的知识,希望对你有一定的参考价值。
2)环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
export 变量名=变量值 设置环境变量
env 查询变量
unset变量名 删除变量
pstree 查询shell继承树
◆PATH:命令执行路径
◆PS1:定义系统提示符的变量
\\d:显示日期,格式为“星期月日”
\\h:显示简写主机名。如默认主机名“localhost”
\\t: 显示24小时制时间,格式为“HH:MM:SS”
\\T: 显示12小时制时间,格式为“HH:MM:SS”
\\A: 显示24小时制时间,格式为“HH:MM”
\\u: 显示当前用户名
\\w: 显示当前所在目录的完整名称
\\W: 显示当前所在目录的最后一个目录
#: 执行的第几个命令
\\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
3)位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
位置参数变量 |
作用 |
$n |
n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}. |
$* |
这个变量代表命令行中所有的参数,*把所有的参数看成一个整体 |
$@ |
这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# |
这个变量代表命令行中所有参数的个数 |
◆read [选项] [变量名] 接受键盘输入
选项:
-p“提示信息”:在等待read输入时,输出提示信息
-t秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n字符数:read命令只接受指定的字符数,就会执行
-s:隐藏输入的数据,适用于机密信息的输入
4)预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
预定义变量 |
作用 |
$? |
最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确 |
$$ |
当前进程的进程号(PID) |
$! |
后台运行的最后一个进程的进程号(PID) |
6、数值运算与运算符
1)declare声明变量类型
declare [+/-][选项] 变量名
选项:
:给变量设定类型属性
十:取消变量的类型属性
-i:将变量声明为整数型(integer) declare -i c=$a+$b
-x:将变量声明为环境变量
-p:显示指定变量的被声明的类型
2) expr或let数值运算工具
d=$(expr $a+$b) d的值是a和b的和。注意“+”号左右两侧必须有空格
3)S((运算式))或$[运算式]
f=$(($a+$b))
g=$[ $a+$b]
4)运算符
7、变量测试与内容替换
8、环境变量配置文件
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量
(/etc/profile、/etc/profile.d/*.sh、家/.bash profile、家/.bashrc、/etc/bashrc)
1)source命令,使配置文件直接生效
source配置文件 或 . 配置文件
9、正则表达式与通配符
◆正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
◆通配符用来匹配符合条件的文件名,通配符是完全匹配。1s、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
10、字符截取命令
1)grep 在文件中搜寻字串匹配的行并输出
英文原意:global search regular expression(RE) and print out the line
语法:grep [-i/-v] [指定字串] [文件]
常用选项
-i:不区分大小写
-v:排除指定字串所在行
2)cut 截取文件的第几列,默认分隔符是制表符
语法:cut [选项] 文件名
选项:
-f列号:提取第几列
-d分隔符:按照指定分隔符分割列
3)awk
◆格式:awk ‘条件1{动作1} 条件2{动作2}.…’ 文件名
◆条件(Pattern):一般使用关系表达式作为条件
x>10判断变量x是否大于10,关系成立后才执行动作
x>=10大于等于
x<=10小于等于
$n 代表第n列,$0代表这一行
BEGIN{动作} 在程序执行前先执行这个动作
END{动作} 在程序执行后再执行这个动作
◆在awk命令的输出中支持print和printf命令
print会在每个输出之后自动加入一个换行符(Linux默认没有print命令)
printf是标准格式输出命令。如果需要换行,需要手工加入换行符\\n
◆动作(Action):
格式化输出(print、printf)
流程控制语句
FS:内置对象,指定分隔符
4)sed命令
sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、香换、删除、新增的命令。
语法:sed [选项] ‘[动作]’ 文件名
选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处
理的行输出到屏幕。
-e:允许对输入数据应用多条sed命令编辑
-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
a:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\\”代表数据未完结。 “2a hello” 在第二行后面追加hello
c:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\\”代表数据未完结。 “2c helloword” 将第二行替换为新行
i:插入,在当前行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\\”代表数据未完结。 “2i hello” 在第2行前插入一行
d:删除,删除指定的行。“2,4d” 删除第2到第4行
p:打印,输出指定的行。“2p” 输出第二行
s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g”(和vim中的替换格式类似)。 “3s/aa/bb/g” 将第3行的aa改成bb
11、字符处理命令
1)排序命令sort
语法:sort [选项] 文件名
选项:
-f:忽略大小写
-n:以数值型进行排序,默认使用字符串型排序
-r:反向排序
-t:指定分隔符,默认是分隔符是制表符
-k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
2)统计命令wc
语法:wc[选项]文件名
选项:
-l:只统计行数
-w:只统计单词数
-m:只统计字符数
12、判断命令
1)判断格式
◆ test 判断 test -e /root/install.log
◆[ 判断 ] [ -e /root/install.log ]
2)按照文件类型进行判断
3)按照文件权限进行判断
4)两个文件之间进行比较
5)两个整数之间比较
6)字符串的判断
7)多重条件判断
13、流程控制语句
1)if语句
◆if语句使用fi结尾,和一般语言使用大括号结尾不同
[条件判断式]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了
◆单分支if条件语句
if[ 条件判断式 ];then
程序
fi
或者
if[ 条件判断式 ]
then
程序
fi
◆双分支if条件语句
if[ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的另一个程序
fi
◆多分支if条件语句
if[ 条件判断式1 ]
then
当条件判断式1成立时,执行程序1
elif[ 条件判断式2 ]
then
当条件判断式2成立时,执行程序2
……省略更多条件
else
当所有条件都不成立时,最后执行此程序
fi
2)case多分支判断语句
case s变量名in
"值1")
执行程序1
;;
"值2")
执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
3)循环
◆ foreach
for 变量in值1值2值3..
do
程序
done
◆普通for
for((初始值;循环控制条件;变量变化))
do
程序
done
◆while
while [条件判断式]
do
程序
done
◆until:只要条件判断式不成立则进行循环。一旦循环条件成立,则终止循环。
until [条件判断式]
do
程序
done
以上是关于Linux 第十五天的主要内容,如果未能解决你的问题,请参考以下文章