Hacker基础之Linux篇:基础Linux命令四

我们继续学习Linux

1. egrep

egrep命令用于在文件内查找指定的字符串。

egrep执行效果与grep-E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。

egrep命令使用介绍:

命令格式:egrep [范本模式] [文件或目录]

命令功能:egrep命令用于在文件内查找指定的字符串

命令的常用参数选项说明:

-c只输出匹配的行数

-i不区分大小写

-h查询多个文件时不显示文件名

-l查询文件时只显示匹配字符所在的文件名

-n显示匹配的行及其行号

-s不显示不存在或不匹配文本的错误信息

-v显示不匹配的所有行

-E允许使用扩展模式匹配。例如:findfile文件中查询包含04的行

一般常用的几种用法和情景:

1

查找当前目录下所有文件中包含字符串linux的文件

egrep linux *

2. 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特殊权限

常用的方式:

1

比如我们搭建一个网站的时候,网站的安装脚本提示对某个文件没有可执行的权限,然后我们要给这个指定的文件所有用户组增加可执行的权限

chmod a+x database.php

2

或者后来我们发现是apache这个用户组没有可执行权限,为了安全考虑,其他用户组没必要具有可执行权限,我们可以这样操作

chmod ug+w,o-x database.php

这句话的意思是这样的

文件属主(u)增加执行权限

与文件属主同组用户(g)增加执行权限

其他用户(o)删除执行权限

3

或者我们有一天发现了某个文件夹内的文件都需要一个可写的权限,比如缓存目录,我们可以这样为整个目录增加权限

chmod -R u+w cache/

3. chown

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID

组可以是组名或者组ID

文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

chown命令使用介绍:

命令格式:chown [options] mode files

命令功能:chown命令用于将指定文件的拥有者改为指定的用户或组

命令的常用参数选项说明:

-c显示更改的部分的信息

-f忽略错误信息

-h修复符号链接

-R处理指定目录以及其子目录下的所有文件

-v显示详细的处理信息

-deference作用于符号链接的指向,而不是链接文件本身

一般常用的情景如下

1

我们用root用户在服务器上创建了一个文件,但是这个文件是要给nginx来使用的,所以他的拥有者必须是nginx,因为root的权限太高了,nginx对这个文件的访问会被系统拒绝,我们这样做

chown nginx:nginx nginx.conf

2

然后我们开始搭建网站,发现网站的/var/www/html下的文件都是root的,但是这些文件打算给nginx来使用,作为网站的根目录,怎么办

chown -R nginx:nginx /var/www/html

3

或者我们只打算改变这个文件的组

chown :nginx index.html

3. ln

lnLinux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(Link)它就可以,不必重复的占用磁盘空间

上面这些话的意思就是,就像大家天天用的Windows一样,安装游戏的时候不是都提示你是否在桌面创建快捷方式,这个快捷方式,起始就是一个(Link),程序的真实位置并不在桌面上,但是你点击桌面的快捷方式就可以打开游戏

ln命令使用介绍:

命令格式:ln [option] [src] [dst]

命令功能:ln命令用于为某一个文件在另外一个位置建立一个同步的链接

命令的常用参数选项说明:

-b删除,覆盖以前建立的链接

-d允许超级用户制作目录的硬链接

-f强制执行

-i交互模式,文件存在则提示用户是否覆盖

-n把符号链接视为一般目录

-s软链接(符号链接)

-v显示详细的处理过程

常用的情景如下

1

比如我们自己写了一个脚本在/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文件丢失,那么软连接也会失效

2

如果你确定了这个代码已经很完美了,不需要改了,那我们可以创建硬链接

ln /home/code/scp_key.sh /usr/bin/scp_key

源文件被删除后,并不会影响硬链接文件

如果你删除了硬链接文件,然后再重建一个一样名字的文件,这个文件还会默认变成硬链接文件,内容和你删除前保持一致

本文完

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180330G1B66A00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券