【Linux】环境变量与文件查找

本文介绍了Shell中的变量定义、环境变量设置与管理方法,并详细解释了如何使用whereis、which、find等命令进行文件搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自鸡蛋Lino的实验报告https://www.shiyanlou.com/courses/reports/542292

变量定义

#定义变量
declare $变量名
#或者直接赋值也自动定义变量,注意变量之前不带"$"
变量名=值
#打印变量的值,"$"代表引用变量的值
echo $变量名

在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,处理创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。

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

  • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
  • Shell 本身内建的变量。
  • 从自定义变量导出的环境变量。
相关命令说明
 
  • set | 显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量
  • env | 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
  • export| 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量

输出环境变量

#将普通变量输出为环境变量,能被子进程继承
export 变量名
#比较文件的命令
vimdiff 1.txt 2.txt 3.txt ....

3.命令的查找路径与顺序

$PATH环境变量设置命令搜索路径

#输出当前命令搜索路径的设置
echo $PATH

#./程序名 表示执行当前目录下的指定程序
$PATH中临时添加自定义路径,用冒号连接路径
PATH=$PATH:/home/shiyanlou/Code

如果永久添加需要修改配置文件 zsh是.zshrc bash是.bashrc 本次修改用户目录下的文件

$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
变量修改

变量的修改有以下几种方式:

变量设置方式说明
${变量名#匹配字串}从头向后开始匹配,删除符合匹配字串的最短数据
${变量名##匹配字串}从头向后开始匹配,删除符合匹配字串的最长数据
${变量名%匹配字串}从尾向前开始匹配,删除符合匹配字串的最短数据
${变量名%%匹配字串}从尾向前开始匹配,删除符合匹配字串的最长数据
${变量名/旧的字串/新的字串}将符合旧字串的第一个字串替换为新的字串
${变量名//旧的字串/新的字串}将符合旧字串的全部字串替换为新的字串
变量删除

可以使用unset命令删除一个环境变量:

$ unset temp

6.如何让环境变量立即生效

$ source .zshrc

或者

$ . ./.zshrc

注意第二种方式必须指定完整的绝对或相对路径

二、搜索文件

与搜索相关的命令常用的有如下几个whereis,which,find,locate

  • whereis简单快速

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

  • locate快而全

通过"/var/lib/mlocate/mlocate.db"数据库查找,系统会使用定时任务每天自动执行updatedb命令更新一次该数据库,有时需要手动执行一次updatedb命令将新的文件数据添加进数据库,它可以用来查找指定目录下的不同文件类型,可以递归子目录进行查找,如查找 /etc 下所有以 sh 开头的文件:

$ locate /etc/sh
$ locate /home/shiyanlou/Code/\*.txt

经测试好像locate 后面要跟绝对路径,另外""必须用\来转义

-c 是仅统计数目 -i 是不区分大小写

  • which小而精

    它只从PATH环境变量指定的路径中去搜索命令

$ which man
#查找系统中所有文件名中含D且在第三位的.txt文件

find / -name \?\?D\*.txt

#显示结果含有权限不够的信息,可以如下屏蔽

find / -name \?\?D\*.txt 2>/dev/null

#还可以加sudo执行
#另外,文件名加引号,可以直接用?或*,不用转义
#查找大小在10k-20k之间的*.txt
find / -name '*.txt' -size +10k -size -20k
#查找空目录和空文件
find . -empty
#查找实验楼组的文件
find . -group shiyanlou

#在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件

find /tmp -size +10000000c -and -mtime +2

#在/tmp目录中查找所有不属于panda的文件
find /tmp ! -user panda

#查找属于shiyanlou用户的文件并显示文件信息
find . -user shiyanlou -ls

#删除找到的*.txt
find . -name '*.txt' -exec rm {} \;
#以上 \; 是为了转义;字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值