七、shell变量

env命令,查看系统环境变量

shell基础(二)_第1张图片

set命令,不仅可以查看系统变量,还可以查看自定义变量

自定义变量
shell基础(二)_第2张图片
shell基础(二)

变量名规则
变量名可以是字母、数字和下划线,首位不能是数字
shell基础(二)_第3张图片
变量值有特殊符号的时候需要用单引号(脱义)括起来

shell基础(二)

表示式复杂的时候需要用双引号引起来,变量的累加
shell基础(二)_第4张图片

获取变量的值并插入到字符当中
shell基础(二)
第一个写法不能获取变量的值
第二个用大括号将变量名括起来可以获取到

全局变量

当打开多个终端时,使用命令echo $SSH_TTY,可以查看当前所在的终端
shell基础(二)

在终端1自定义一个变量,终端2是无法查看

shell基础(二)

bash是shell的一个子bash,可以通过pstree查看在哪,如果没有该命令,使用如下命令安装
yum install psmisc

shell基础(二)_第5张图片

现在是在第二个bash下,第一个bash所设置的环境变量在第一个bash下不生效,如果想让第一个bash在第二个bash上面生效,可以使用全局变量
shell基础(二)

取消变量
unset b
echo $b

shell基础(二)

八、环境变量配置
环境变量配置文件可分为:系统层次配置文件和用户层次配置文件
系统层次配置文件(/etc下的文件)
1./etc/profile 用户环境变量,交互,登录才执行
2./etc/bashrc 用户不用登录,执行shell就生效

用户层次配置文件(用户家目录下的文件)
1.~/.bashrc
2.~/.bash_profile

一般我们不要编辑系统层次的配置文件,在有需要时,可以编辑用户层次的配置文件.bash_profile

source .bash_profile和..bash_profile作用一样,加载配置文件里的配置
~/.bash_history,用来记录命令历史
~/.bash_logout,用来定义用户退出的时候需要做的一些操作

ps1是在/etc/bashrc里面定义的,用于定义命令左边的字符串显示
修改W为w,发现变成绝对路径

shell基础(二)
shell基础(二)_第6张图片

修改方括号,这里的普通用户显示普通用户,root用户显示#
shell基础(二)
颜色显示

九、shell特殊符号_sut命令

格式:cut -d '分割字符’[-cf] n,这里n是数字,改命令选项有如下:
-d 后面跟分割字符,分割字符
-c 后面接的时第几个字符
-f 后面接的是第几个区块
cut命令用法如下:

shell基础(二)_第7张图片

cat passwd这个文件,head只查看前两行,cut -d截取分割符号“:”,-f 1表示截取第一段,1,2表示前两段,1-3表示头三段

十、sort_wc_uniq命令

sort命令介绍
sort命令用于排序
格式:sort [-t 分隔符] [-kn1,n2][-nru]
这里的-n1 n2指的是数字,其他选项如下
-t后面跟分割字符,作用和cut-d选项一样,截取符号是什么
-n 使用纯数字排序,字母及特殊符号为0
-r反向排序

如sort不加任何选项,他是默认升序输出,我们查看passwd配置文件前五行有什么区别
查看passwd前五行,输出给sort执行,按默认升序排序

shell基础(二)_第8张图片
使用sort来进行排序,以数字排序-n -n代表正序,特殊符号及字母表示为0

shell基础(二)_第9张图片

-r反向排序
shell基础(二)_第10张图片

wc命令介绍,用于来统计
wc用于统计文档的行数,字符数及词数
-l 统计行数
-m统计字符数
-w统计词数,以空格来区分
shell基础(二)_第11张图片

命令uniq删除重复的行
uniq用来删除重复的行,-c选项比较常用

使用uniq前,必须先给文件排序,否则不管用
shell基础(二)_第12张图片
shell基础(二)

统计重复的行有多少
shell基础(二)

tee 重定向并显示内容
把echo的内容通过管道符号,输出给tee命令到6.txt 然后在屏幕上面显示出来

shell基础(二)
tr,用于替换字符

-d表示删除某个字符,后面跟需要删除的字符
-s表示删除重复的字符

比如需要替换文件某个字符,把小写改成大写
split切割文档
-b表示根据大小来切割文档,默认单位为byte(字节)
-l表示根据行数来切割文档
随便切割一个文档,例如5.txt,切割1KB
shell基础(二)_第13张图片

指定目录文件为123开头的文件
shell基础(二)_第14张图片

十一、shell特殊符号

$
$可以用作变量前面的标识符号,还可以和!一起组合起来用

shell基础(二)_第15张图片


如果想要在一行中运行一个或者多个以上的命令,需要在命令之前加;
shell基础(二)

~
表示用户的家目录,root的家目录是/root,普通用户的家目录是/home/username
&
如果想把一条命令放在后台执行,需要加上符号&,通常用于命令长时间运行的情况下,可以和sleep(休眠)一起用
shell基础(二)_第16张图片

重定向> >> 2> 2>> &>

分别表示取代(>)和追加(>>)
2>错误重定向
2>>错误追加重定向
&>表示错误和正确的重定向输入到一个文件去

中括号[]表示一个范围
&&表示前面的命令执行成功后才会执行后面的命令,如果前面的执行不成功,后面的就不会执行
shell基础(二)
shell基础(二)

||表示或者,如果两条命令用来分割,如果第一条执行成功后第二条就不会执行,如果第一条错误,就会执行第二条
第一条执行成功,第二条不执行
shell基础(二)
第一条不成功,执行第二条

shell基础(二)

普通符号
*任意一个字符
?任意一个字符
#注释字符
\拓义字符
|管道符