Linux环境变量与文件查找

使用declare命令创建名为tmp的变量: declare tmp
对tmp变量进行赋值:tmp = shiyanlou
使用echo命令和**$符号来读取变量tmp的值:echo $tmp
默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。
打印环境变量信息的三个命令:
set:显示
当前Shell所有变量**,包括其内建环境变量、用户自定义变量及导出的环境变量。
env:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
export:显示从Shell中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。
Linux变量分为两类:
1、永久变量:需要修改配置文件,使其永久有效。
2、临时变量:使用export命令声明,变量在shell关闭时失效。
存放shell变量的文件是:/etc/bashrc,只对当前用户永久生效。
存放环境变量的文件是:/etc/profile,对所有用户永久生效。如果需要添加永久有效的环境变量,只要打开文件并添加所需环境变量即可。

创建并执行shell脚本文件:
touch hello_shell.sh #创建shell脚本文件
gedit hello_shell.sh #用gedit打开并编辑文件
为文件添加可执行权限:chmod 755 hello_shell.sh
执行脚本:./hello_shell.sh

创建并执行C语言程序:
gedit hello_world.c #创建并编辑C程序文件
gcc -o hello_world hello_world.c #使用gcc生成可执行文件(gcc生成二进制文件默认具有可执行权限)

添加自定义路径到“PATH”环境变量:PATH= P A T H : / h o m e / s h i y a n l o u / m y b i n P A T H 里 面 的 路 径 是 以 : 作 为 分 割 符 。 手 动 添 加 后 的 环 境 变 量 只 在 当 前 s h e l l 有 效 , 在 退 出 终 端 再 打 开 后 就 会 失 效 。 要 想 让 添 加 的 环 境 变 量 全 局 有 效 或 者 每 次 启 动 s h e l l 时 自 动 执 行 上 面 的 添 加 自 定 义 路 径 到 P A T H 的 命 令 , 则 需 要 自 动 执 行 方 式 。 在 每 个 用 户 的 h o m e 目 录 中 有 一 个 s h e l l 每 次 启 动 时 会 默 认 执 行 一 个 配 置 脚 本 , 以 初 始 化 环 境 , 包 括 添 加 一 些 用 户 自 定 义 环 境 变 量 等 。 z s h 的 配 置 文 件 是 . z s h r c , 可 以 简 单 使 用 下 面 命 令 直 接 添 加 内 容 奥 . z s h r c 中 : e c h o " P A T H = PATH:/home/shiyanlou/mybin PATH里面的路径是以:作为分割符。手动添加后的环境变量只在当前shell有效,在退出终端再打开后就会失效。要想让添加的环境变量全局有效或者每次启动shell时自动执行上面的添加自定义路径到PATH的命令,则需要自动执行方式。 在每个用户的home目录中有一个shell每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等。zsh的配置文件是.zshrc,可以简单使用下面命令直接添加内容奥.zshrc中: echo "PATH= PATH/home/shiyanlou/mybinPATHshell退shellPATHhomeshellzsh.zshrc使.zshrcecho"PATH=PATH:/home/shiyanlou/mybin" >> .zshrc
修改和删除已有变量:
变量设置方式 说明
${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串
变量删除:实用unset命令删除环境变量
如何让环境变量立即生效:
前面我们在shell中修改配置脚本文件后,必须要退出终端重新打开或者重启主机才能生效。要想让其立即生效,可使用source命令:source .zshrc
文件搜索:
whereis简单快速:只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。它没有依次从硬盘中查找,而是直接从数据库中查询。
locate快而全面:它是通过“/var/lib/mlocate/mlocate.db”数据库查找,系统使用定时任务定期更新,可以手动使用命令updatedb来更新内容。它可以用来查找指定目录下的不同类型文件:
查找/etc下所有以sh开头的文件:locate /etc/sh
查找/usr/share/下所有jpg文件:locate /usr/share/*.jpg
另外,在查找过程中,它会自动递归子目录进行查找。
如果只想统计数目可加上-c参数,忽略大小写查找则加-i,-b只查找二进制文件,-m只查找帮助文件,-s只查找源代码文件。
which小而精:它是从PATH环境变量指定的路径中去搜索命令,因此通常用which来判断是否安装了某个软件。
find精而细:可通过文件类型、文件名、文件属性进行搜索。
使用规则:find [查找目录] [查找规则] [查找完后执行的action]
【查找规则】
1、根据文件名查找
-name //根据文件名查找(精确查找)
-iname //根据文件名查找,但是不区分大小写
*表示通配任意的字符
?表示通配任意的单个字符
[]表示通配括号里面的任意一个字符
2、根据文件所属用户和组来查找
-user //根据属主来查找文件
-group //根据属组来查找文件
3、根据uid和gid来查找
find /tmp -uid 500 //查找uid是500 的文件
find /tmp -gid 1000 //查找gid是1000的文件
4、-a -o -not的使用
-a 连接两个不同的条件(两个必须同时满足)
-o 连接两个不同的条件(二者满足其一便可)
-not 对条件取反
5、根据文件时间戳属性查找
-atime 最近一次访问时间(单位是 天) -amin(分钟)
-mtime 最近一次内容修改时间 -mmin
-ctime 最近一次属性修改时间 -cmin
find /tmp -atime +5 //查找五天内没有访问的文件
find /tmp -atime -5 //查找五天内访问过的文件
-mtime n:在n天之前的“一天内”修改过的文件。
-mtime +n:列出在n天之前(不包括n天本身)被修改过的文件。
-mtime -n:列出在n天之内(包括n天本身)被修改过的文件。
-newer file:file为一个已存在的文件,列出比file还要新的文件名。
列出home目录中,当天(24小时内)有改动的文件:find ~ -mtime 0
列出用户家目录下比code文件夹新的文件:find ~ -newer /home/shiyanlou/Code

6、根据文件类型查找文件 -type
f //普通文件
d //目录文件
l //链接文件
b //块设备文件
c //字符设备文件
p //管道文件
s //socket文件
7、根据文件大小查找 -size
find /tmp -size 2M //大小为2M的文件
find /tmp -size +2M //大于2M的文件
find /tmp -size -2M //小于2M的文件
8、根据文件权限查找文件 -perm
find /tmp -perm 755 //查找该目录下权限是755的文件
find /tmp -perm +222 //表示只要有一类用户(属组、属主、其他)的匹配写权限就行
find /tmp -perm -222 //表示必须所有类别用户都满足有写权限
9、-nouser 和 -nogroup
find / -nouser -a -nogroup //整个目录中没有属组和属主的文件
【查找完执行的action】
-print //默认
-ls //查找完用ls显示
-ok[commend] //查找后执行命令时询问用户是否执行
-exec [commend] //查找后执行命令的时候不询问用户,直接执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值