我们继续学习Linux
egrep
egrep命令用于在文件内查找指定的字符串。
egrep执行效果与grep-E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。
egrep命令使用介绍:
命令格式:egrep [范本模式] [文件或目录]
命令功能:egrep命令用于在文件内查找指定的字符串
命令的常用参数选项说明:
-c 只输出匹配的行数
-i 不区分大小写
-h 查询多个文件时不显示文件名
-l 查询文件时只显示匹配字符所在的文件名
-n 显示匹配的行及其行号
-s 不显示不存在或不匹配文本的错误信息
-v 显示不匹配的所有行
-E 允许使用扩展模式匹配。例如:findfile文件中查询包含04的行
一般常用的几种用法和情景:
a.查找当前目录下所有文件中包含字符串linux的文件
egrep linux *
chmod命令
chmod命令用于改变linux系统文件或目录的访问权限,用它控制文件或目录的访问权限。
该命令有两种用法,一种是包含字母和操作符表达式的文字设定法,另一种是包含数字的数字设定法,这里只介绍文字设定法。
文件或目录的访问权限分为读、写和执行三种。
以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。
而执行权限表示允许将该文件作为一个程序执行。
文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。
用户也可根据需要把访问权限设置为需要的任何组合。
chmod命令使用介绍:
命令格式:chmod [options] mode files
命令功能:chmod命令用于改变linux系统文件或目录的访问权限
命令的常用参数选项说明:
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息
u 目录或者文件的当前的用户
g 目录或者文件的当前的群组
o 除了目录或者文件的当前用户或群组之外的用户或者群组
a 所有的用户及群组
r 读权限,用数字4表示
w 写权限,用数字2表示
x 执行权限,用数字1表示
- 删除权限,用数字0表示
s 特殊权限
常用的方式:
a.比如我们搭建一个网站的时候,网站的安装脚本提示对某个文件没有可执行的权限,然后我们要给这个指定的文件所有用户组增加可执行的权限
chmod a+x database.php
b.或者后来我们发现是apache这个用户组没有可执行权限,为了安全考虑,其他用户组没必要具有可执行权限,我们可以这样操作
chmod ug+w,o-x database.php
这句话的意思是这样的
文件属主(u)增加执行权限
与文件属主同组用户(g)增加执行权限
其他用户(o)删除执行权限
c.或者我们有一天发现了某个文件夹内的文件都需要一个可写的权限,比如缓存目录,我们可以这样为整个目录增加权限
chmod -R u+w cache/
chown
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID
组可以是组名或者组ID
文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
chown命令使用介绍:
命令格式:chown [options] mode files
命令功能:chown命令用于将指定文件的拥有者改为指定的用户或组
命令的常用参数选项说明:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
一般常用的情景如下
a.我们用root用户在服务器上创建了一个文件,但是这个文件是要给nginx来使用的,所以他的拥有者和组必须是nginx,因为root的权限太高了,nginx对这个文件的访问会被系统拒绝,我们这样做
chown nginx:nginx nginx.conf
b.然后我们开始搭建网站,发现网站的/var/www/html下的文件都是root的,但是这些文件打算给nginx来使用,作为网站的根目录,怎么办
chown -R nginx:nginx /var/www/html
c.或者我们只打算改变这个文件的组
chown :nginx index.html
In
ln是Linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(Link)它就可以,不必重复的占用磁盘空间
上面这些话的意思就是,就像大家天天用的Windows一样,安装游戏的时候不是都提示你是否在桌面创建快捷方式,这个快捷方式,起始就是一个(Link),程序的真实位置并不在桌面上,但是你点击桌面的快捷方式就可以打开游戏
ln命令使用介绍:
命令格式:ln [option] [src] [dst]
命令功能:ln 命令用于为某一个文件在另外一个位置建立一个同步的链接
命令的常用参数选项说明:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
常用的情景如下
a.比如我们自己写了一个脚本在/home/code/scp_key.sh上,但是我们想在bash中输入scp_key时候就执行这个脚本,我们可以把这个路径加入到PATH中去,或者这样
ln -s /home/code/scp_key.sh /usr/bin/scp_key
注意给脚本添加执行权限
我们把这个文件建立一个软连接在/usr/bin下面,这样我们每次在bash中 输入scp_key的时候,就可以执行那个脚本了,因为/usr/bin是在PATH中的,软链接的好处就是你如果要给scp_key.sh添加了一些功能,改完scp_key.sh之后,不用改变在/usr/bin的那个链接,就可以使用新功能了
但是缺点也是显而易见的,如果/home/code/scp_key.sh文件丢失,那么软连接也会失效
b.如果你确定了这个代码已经很完美了,不需要改了,那我们可以创建硬链接
ln /home/code/scp_key.sh /usr/bin/scp_key
源文件被删除后,并不会影响硬链接文件
如果你删除了硬链接文件,然后再重建一个一样名字的文件,这个文件还会默认变成硬链接文件,内容和你删除前保持一致