环境变量与文件查找

环境变量

1.变量

所谓的变量是指计算机中用于记录的一个值的符号,这些符号将用于不同的运算处理中。为了便于运算和处理,大部分的编程语言都会区分变量的类型,英语分别记录数值、字符或者字符串等数据类型。这里的变量准确说是Shell变量,Shell变量也有不同的类型,也可以参与运算,有作用域限定。

变量的作用域:变量的有效范围,比如一个函数中、一个源文件中或者全局范围。在该范围内只能有一个同名变量,一旦离开则该变量无效。

变量申明、打印

2.环境变量

环境变量就是作用域比自定义变量大,比如Shell的环境变量作用于自身和它的子进程。在所有UNIX和类UNIX系统中,每个进程都有其各自的环境变量,默认情况下,每个进程被创建时,都将继承父进程的绝大部分环境设置。Shell程序作为一个进程运行在操作系统之上,我们在Shell中运行的大部分命令都将以Shell子进程的方式运行。


环境变量与文件查找_第1张图片
Shell时序图

通常我们会涉及到三种环境变量:

  • 当前Shell进程私有用户自定义变量,set命令;
  • Shell本身內建变量,env命令;
  • 从自定义变量导出的环境变量,export命令;
命令 说明
set 显示当前Shell所有环境变量,包括內建环境变量、用户自定义变量和导出的环境变量
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
export 显示从Shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量
环境变量与文件查找_第2张图片
环境变量
环境变量与文件查找_第3张图片
本地变量和环境变量

注意:为了与普通变量区别,通常我们习惯将环境变量名设为大写。

3.命令查找路径与顺序

操作系统搜索命令是通过PATH来搜索的,与Windows一致。PATH里面保存了Shell执行的命令的搜索路径。

PATH路径

4.添加自定义路径到“PATH”环境变量

上图可知,PATH里面的路径以:作为分割符,所以可以按照如下的方法添加自定义路径:

  • 添加绝对路径到PATH

    添加路径到PATH

    注意一定要使用绝对路径

  • 编写并编译测试代码:
    #include int main(void) { printf("hello world!\n"); return 0; }

    hell.o

  • 移动编译后hello文件到/home/shiyanlou/Code/bin目录,在任意目录执行hello:

    执行hello

5.修改删除已有变量

  • 变量修改
    变量修改有以下几种方式:
变量设置方式 说明
${变量名#匹配字符串} 从头向后开始匹配,删除符合匹配字符串的最短数据
${变量名##匹配字符串} 从头向后开始匹配,删除符合匹配字符串的最长数据
${变量名%匹配字符串} 从尾向前开始匹配,删除符合匹配字符串的最短数据
${变量名%%匹配字符串} 从尾向前开始匹配,删除符合匹配字符串的最长数据
${变量名/旧字符串/新字符串} 将符合旧字符串的第一个字符串替换为新的
${变量名#旧字符串/新字符串} 将符合旧字符串的所有字符串替换为新的
  • 删除变量
    可以使用unset命令删除一个环境变量

6.让环境变量立即生效

可以使用source命令让环境变量立即生效,如下编辑~/.vimrc后,再查看文本就可以看到默认显示行号。

让环境变量立即生效

文件查找

与文件查找有关的常用命令如下:whereis,which,find,cate

  • whereis简单快速

    whereis

    whereis只搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s),所以这个搜索很快,因为它并没有从硬盘中一次查找,而是直接从数据库中查询。

  • locate快而全

    locate

    通过“/var/lib/mlocate/mlocate.db”数据库查找,不过这个数据库不是实时更新的,系统会使用定时任务每天自动执行update命令更新一次,所以有时候刚添加的文件,可能会找不到,需要手动执行updatedb命令。
    如果只想统计数目,可以加上-c参数,-i参数可以忽略大小写进行查找,whereis-b,-m,-s同样可以使用。

  • which小而精

    which

    which本身是Shell內建的一个命令,我们通常使用which来确定是否安装了某个指定的软件,因为它只从PATH环境变量指定的路径中去搜索命令。

  • find精而细
    find命令非常强大,它不但可以通过文件类型、文件名进行查找而且可以根据文件属性(时间戳、文件权限等)进行搜索。

    find

find命令第一个参数为路径,基本命令格式为find [path] [option] [path]

与时间相关的参数:

参数 说明
-atime 最后访问时间
-ctime 创建时间
-mtime 最后访问时间

-mtime参数为例:

  • -mtime n:n为数字,表示为在n填之前的一天之内修改过的文件
  • -mtime +n:列出在n天之前(不包含n天本身)被修改过的文件
  • -mtime -n:列出在n天之内(包含n天本身)被修改过的文件
  • newer file:列出比file还要新的文件名
    环境变量与文件查找_第4张图片
    n时间图示

    列出/home目录下,当天(24小时内)有改动的文件:
    当天24小时内修改过的文件

你可能感兴趣的:(环境变量与文件查找)