即shell变量,shell中的变量同样具有不同的数据类型,但不用专门指定数据类型。
主要在创建如数组等其他类型变量时会用到
$ declare tmp
ps:这里注意变量名必须是数字、字母、下划线开头
使用 =
,但需要注意等号两边要保留一个空格,格式才正确
$ tmp = CSDN
使用echo
语句读取变量,$
用来引用变量
$ echo $ tmp
环境变量区别与普通变量,如上介绍的属于用户自定义变量,环境变量的作用域大于自定义变量,shell
环境变量作用于自身和它的子进程,也就是可以简单理解为在当前进程和它的子进程中有效的即为环境变量。
ps:环境变量名一般大写,使用$
引用
命令 | 说明 |
---|---|
export | 显示从shell中导出成环境变量的变量,也可以用来将一个普通变量变为环境变量。 |
set | 显示shell的所有变量,包括自定义变量和导出的环境变量。 |
env | 显示与当前用户相关的变量,并且可以让命令在指定环境中运行。 |
方法:环境变量的生存周期存在于shell
中,因此要想更改它的生存周期变为永久性变量只需要将其添加到/etc/profile
文件中即可。
解释:在用户的home目录下还存在一个.profile
文件,.profile
文件只对当前用户永久生效,当切换用户时文件无法生效,但/etc/profile
文件对所有用户都生效。
我们在平时输入一个命令时,shell就是通过PATH这个环境变量的路径来搜索命令的。可以使用$ echo $PATH
来查看设定好的搜索路径。
当我们在一个目录下创建好一个shell脚本或者可执行程序时,如何像调用命令一样执行脚本或程序,这时候就需要将脚本或程序的路径添加到PATH路径里,注意这里要采用绝对路径。
$ PATH=$PATH:/home/yonghuming/dir
但这种方式只对当前的shell有效,一旦退出终端就会失效。因此,我们采用下面一种方法使这个路径永久有效。
每个用户的home目录中有一个当shell启动时默认执行的一个配置脚本,用来初始化环境,包括添加一些用户自定义变量等,因此我们可以通过这种方式,每次启动shell时自动将自定义变量添加到PATH路径中。
step1
:首先,查看当前用户目录下使用的shell。
$ echo $SHELL
ps:如果使用的是zsh,则配置文件为.zshrc,若是bash,配置文件为.bashrc
step2
然后,就可以添加路径到配置文件中了。(以下以zsh为例)
$ echo "PATH=$PATH:/home/yonghuming/dir" >> .zshrc
#注意这里>>采用的是追加方式
最后,更改后的配置文件并不会立马生效,我们可以用source
命令使其立即生效(在当前用户目录下操作)。
$ source .zshrc
#这里使用相对路径
更改操作
变量设置方式 | 说明 |
---|---|
${变量名#匹配的字串} |
从头往后匹配,删除符合匹配最短的字串的数据,若是两个## ,则删除符合匹配字串的最长数据 |
${变量名%匹配的字串} |
从后往前匹配,删除符合匹配最短字串的数据,若是两个%% ,则删除符合匹配字串的最长数据 |
${变量名/旧字串/新字串} |
将符合旧字符串的第一个字串替换为新字串,若是两个// ,就全部替换 |
实例如下:
$ mypath=$PATH
$ PATH=${mypath%/home/yonghuming/dir}
#也可以使用通配符*表示任意多个字符
$ PATH=${mypath%*/dir}
#我们采用的是>>追加方式,因此从尾部开始查找并删除
删除操作
直接使用unset命令
如:$ unset mupath
(1)whereis
-b(查找二进制文件)-m(帮助文件)-s(源代码文件)从数据库中查询
(2)which
(用来确定是否安装了某个程序)从path路径中查找命令并返回第一个搜到的结果
$ which ping
$ which man
(3)find [path] [option] [action]
(常用且重要)
与时间相关的命令参数:
参数 | 说明 |
---|---|
-atime n | 最后访问时间 ,n天之前的一天内访问的文件 |
-ctime +n | 最后修改文件内容的时间,n天之前(不包括n天)修改过的文件 |
-mtime -n | 最后修改文件属性的时间,n天之内(包含n天)修改的文件 |
例如:
$ sudo find /etc/ -name myfile
#在etc目录下找myfile文件,etc目录下用sudo访问
(4)locate
(查找指定目录下的不同类型文件)
注意:locate非内置命令,需要下载安装
参考如下:
$ sudo apt-get update //加载安装包
$ sudo apt-get install locate //下载locate
$ sudo updatedb //更新数据库
$ locate /etc/he
#查找以etc目录下he开头的文件(递归子目录进行查找)
$ locate /usr/share/\*.jpg
#查找该目录下的jpg文件,注意/转义字符
相关参数:-c参数统计文件数量,-i忽略大小写查找,类似的还有-b、-m、-s。
实验参考来源:蓝桥云课
你的点赞是我前进的动力~