6 用户权限类

6.1 用户管理命令

6.1.1 useradd 添加新用户

Linux useradd 命令用于建立用户帐号。
useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
1)基本语法 :::info useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]
useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
useradd 用户名 (功能描述:添加新用户)
useradd -g 组名 用户名 (功能描述:添加新用户到某个组) ::: 2)参数说明

  • -c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
  • -d<登入目录> 指定用户登入时的起始目录。
  • -D 变更预设值.
  • -e<有效期限> 指定帐号的有效期限。
  • -f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
  • -g<群组> 指定用户所属的群组。
  • -G<群组> 指定用户所属的附加群组。
  • -m 自动建立用户的登入目录。
  • -M 不要自动建立用户的登入目录。
  • -n 取消建立以用户名称为名的群组.
  • -r 建立系统帐号。
  • -s 指定用户登入后所使用的shell。
  • -u 指定用户ID。

3)案例实操
(1)添加一个用户

  1. ~ useradd -c 'Linux system user' tangseng
  2. ~ ls -ld /home/tangseng
  3. drwx------ 2 tangseng tangseng 90 May 25 10:02 /home/tangseng

6.1.2 passwd 设置用户密码

Linux passwd命令用来更改使用者的密码
1)基本语法 :::info passwd 用户名 (功能描述:设置用户密码)
passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
必要参数:

  • -d 删除密码
  • -f 强迫用户下次登录时必须修改口令
  • -w 口令要到期提前警告的天数
  • -k 更新只能发送在过期之后
  • -l 停止账号使用
  • -S 显示密码信息
  • -u 启用已被停止的账户
  • -x 指定口令最长存活期
  • -g 修改群组密码
  • 指定口令最短存活期
  • -i 口令过期后多少天停用账户 ::: 2)案例实操
    (1)设置用户的密码

    1. ~ passwd tangseng

    6.1.3 id 查看用户是否存在

    Linux id命令用于显示用户的ID,以及所属群组的ID。
    id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
    1)基本语法 :::info id 用户名 ::: 2)参数说明 :::info

  • -g或—group 显示用户所属群组的ID。

  • -G或—groups 显示用户所属附加群组的ID。
  • -n或—name 显示用户,所属群组或附加群组的名称。
  • -r或—real 显示实际ID。
  • -u或—user 显示用户ID。
  • -help 显示帮助。
  • -version 显示版本信息。 ::: 3)案例实操
    1. ~ id tangseng

    6.1.4 su 切换用户

    su:swith user 切换用户
    1)基本语法 :::info su 用户名称 (功能描述:切换用户,只能获取用户的执行权限,不能获取环境变量)
    su - 用户名称(功能描述:切换到用户并获取该用户的环境变量以及执行权限) ::: 2)案例实操
    (1)切换用户 ```bash ➜ ~ su tangseng [10:18:11 tangseng@kubesphere-docker root]$ echo $PATH /usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [10:18:19 tangseng@kubesphere-docker root]$ exit

➜ ~ su - tangseng Last login: Wed May 25 10:18:11 CST 2022 on pts/0 [10:18:25 tangseng@kubesphere-docker ~]$ echo $PATH /usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/tangseng/.local/bin:/home/tangseng/bin [10:18:31 tangseng@kubesphere-docker ~]$ logout

  1. <a name="EWhxf"></a>
  2. ### 6.1.5 userdel 删除用户
  3. 1)基本语法<br />(1)userdel 用户名 (功能描述:删除用户但是保存用户的主目录)<br />(2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)<br />2)选项说明
  4. | 选项 | 功能 |
  5. | --- | --- |
  6. | -r | 删除用户的同时,删除与用户相关的所有文件 |
  7. 3)案例实操<br />(1)删除用户但是保存用户主目录
  8. ```bash
  9. ➜ ~ userdel user1
  10. ➜ ~ ls -ld /home/user1
  11. drwx------ 2 1013 1013 111 May 24 14:14 /home/user1

(2)删除用户和用户主目录,都是删除

➜  ~ useradd user2
➜  ~ ls -ld /home/user2
drwx------ 2 user2       user2        90 May 24 14:13 user2
➜  ~ userdel -rf user2
➜  ~ ls -l /home/user2
ls: cannot access /home/user2: No such file or directory

6.1.6 who 查看登录用户信息

1)基本语法
(1)whoami (功能描述:显示自身用户名称)
(2)who am i (功能描述:显示登录用户的用户名以及登陆时间)
2)案例实操
(1)显示自身用户名称

➜  ~ whoami

(2)显示登录用户的用户名

➜  ~ who am i

6.1.7 sudo 设置普通用户具有root权限

1)添加 atguigu 用户,并对其设置密码

➜  ~ useradd atguigu
➜  ~ echo "Admin@h3c" | passwd --stdin atguigu
Changing password for user atguigu.
passwd: all authentication tokens updated successfully.

2)修改配置文件

➜  ~ vim /etc/sudoers
# 修改/etc/sudoers文件,找到下面一行(100行左右),在root下面添加一行,如下所示
## Allow root to run any commands anywhere
root    ALL=(ALL)   ALL
atguigu ALL=(ALL)   ALL

# 或者配置成采用 sudo 命令时,不需要输入密码
## Same thing without a password
# %wheel    ALL=(ALL)   NOPASSWD: ALL
atguigu ALL=(ALL)   NOPASSWD:ALL

3)案例实操
(1)用普通用户在/opt目录下创建一个文件夹

➜  ~ su - atguigu
Last login: Wed May 25 10:29:12 CST 2022 on pts/0
[10:29:17 atguigu@kubesphere-docker ~]$ ls -ld /opt
drwxr-xr-x. 5 root root 54 May 21 12:09 /opt
[10:29:34 atguigu@kubesphere-docker ~]$ sudo mkdir /opt/module
[10:29:47 atguigu@kubesphere-docker ~]$ ls -ld /opt/module
drwxr-xr-x 2 root root 6 May 25 10:29 /opt/module
[10:30:09 atguigu@kubesphere-docker ~]$ logout

➜  ~ chown atguigu:atguigu /opt/module
➜  ~ ls -ld /opt/module
drwxr-xr-x 2 atguigu atguigu 6 May 25 10:29 /opt/module

6.1.8 usermod 修改用户

:::info Linux usermod命令用于修改用户帐号。
usermod可用来修改用户帐号的各项设定。 ::: 1)基本语法 :::info usermod -g 用户组 用户名
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号] ::: 2)选项说明

  • -c<备注> 修改用户帐号的备注文字。
  • -d登入目录> 修改用户登入时的目录。
  • -e<有效期限> 修改帐号的有效期限。
  • -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
  • -g<群组> 修改用户所属的群组。修改用户的初始登录组,给定的组必须存在。默认组ID(GID)为100
  • -G<群组> 修改用户所属的附加群组。
  • -l<帐号名称> 修改用户帐号名称。
  • -L 锁定用户密码,使密码无效。
  • -s 修改用户登入后所使用的shell。
  • -u 修改用户ID。
  • -U 解除密码锁定。

3)案例实操
(1)将用户加入到用户组

➜  ~ usermod -g root atguigu
➜  ~ id atguigu
uid=1024(atguigu) gid=0(root) groups=0(root)

6.2 用户组管理命令

每个用户都有一个用户组, 系统可以对一个用户组中的所有用户进行集中管理。 不同Linux 系统对用户组的规定有所不同,
如Linux下的用户属于与它同名的用户组, 这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、 删除和修改。 组的增加、 删除和修改实际上就是对/etc/group文件的更新。

6.2.1 groupadd 新增组

groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
相关文件:

  • /etc/group 组账户信息。
  • /etc/gshadow 安全组账户信息。
  • /etc/login.defs Shadow密码套件配置。

1)基本语法 :::info groupadd 组名
groupadd [-g gid [-o]] [-r] [-f] group
参数说明:

  • -g:指定新建工作组的 id
  • -r:创建系统工作组,系统工作组的组 ID 小于 500;
  • -K:覆盖配置文件 /etc/login.defs
  • -o:允许添加组 ID 号不唯一的工作组。
  • -f,—force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的 GID_MIN 已经存在时,选择另一个唯一的 GID(即 -g 关闭)。 ::: 2)案例实操
    (1)添加一个 xitianqqujing 组

    ➜  ~ groupadd xitianqqujing
    ➜  ~ getent group xitianqqujing
    xitianqqujing:x:1025:
    

    6.2.2 groupdel 删除组

    Linux groupdel命令用于删除群组。
    需要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
    1)基本语法 :::info groupdel 组名 ::: 2)案例实操
    (1)删除 xitianqqujing 组

    ➜  ~ groupdel xitianqqujing
    

    6.2.3 groupmod 修改组

    Linux groupmod命令用于更改群组识别码或名称。
    需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
    1)基本语法 :::info groupmod -n 新组名 旧组名
    groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称] ::: 2)选项说明 :::info

  • -g <群组识别码> 设置欲使用的群组识别码。

  • -o 重复使用群组识别码。
  • -n <新群组名称> 设置欲使用的群组名称。 ::: 3)案例实操
    (1)修改 atguigu 组名称为 atguigu1

    ➜  ~ groupmod -n atguigu1 atguigu
    ➜  ~ getent group atguigu1
    atguigu1:x:1024:
    

    6.2.4 cat /etc/group 查看创建了哪些组

    (1)基本操作

    ➜  ~ cat /etc/group
    

    6.3 文件权限类

    6.3.1 文件属性

    Linux系统是一种典型的多用户系统, 不同的用户处于不同的地位, 拥有不同的权限。为了保护系统的安全性, Linux系统对不同的用户访问同一文件(包括目录文件) 的权限做了不同的规定。 在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。
    1)从左到右的 10 个字符表示
    image.png
    如果没有权限, 就会出现减号[ - ]而已。 从左至右用0-9这些数字来表示:
    (1) 0 首位表示类型
    在Linux中第一个字符代表这个文件是目录、 文件或链接文件等等

  • -代表文件

  • d 代表目录
  • l 链接文档(link file);
  • c 字符设备
  • b 块设备
  • s 套接字文件
  • p 管道文件

(2) 第1-3位确定属主(该文件的所有者) 拥有该文件的权限。 —-User
(3) 第4-6位确定属组(所有者的同组用户) 拥有该文件的权限, —-Group
(4) 第7-9位确定其他用户拥有该文件的权限 —-Other
2)rwx 作用文件和目录的不同解释
(1) 作用到文件:

  • [ r ]代表可读(read): 可以读取, 查看
  • [ w ]代表可写(write): 可以修改, 但是不代表可以删除该文件, 删除一个文件的前提条件是对该文件所在的目录有写权限, 才能删除该文件.
  • [ x ]代表可执行(execute):可以被系统执行

(2) 作用到目录:

  • [ r ]代表可读(read): 可以读取, ls查看目录内容
  • [ w ]代表可写(write): 可以修改, 目录内创建+删除+重命名目录
  • [ x ]代表可执行(execute):可以进入该目录

3)案例实操

➜  ~ ls -l
total 12
-rw-r--r-- 2 root root 3070 May 24 23:15 a.txt
-rw-r--r-- 2 root root 3070 May 24 23:15 a.txt.lnk
lrwxrwxrwx 1 root root    5 May 24 23:37 a.txt.softlnk -> a.txt
drwxr-xr-x 2 root root 4096 May 24 16:31 shell

文件基本属性介绍,如图所示
image.png
(1)如果查看到的是文件,链接数指的是硬链接个数
(2)如果查看到的是文件夹,链接数指的是子文件夹的个数

6.3.2 chmod 改变权限

1)基本语法
image.png
第一种方式变更权限 :::info chmod [{ugoa}{+-=}{rwx}] 文件或目录 ::: 第二种方式变更权限 :::info chmod [mode=421 ] [文件或目录] ::: 2)经验技巧 :::info u:所有者 g:所有组 o:其他人 a:所有人(u、 g、 o 的总和)
r=4 w=2 x=1 rwx=4+2+1=7 ::: 3)案例实操
(1)修改文件使其所属主用户具有执行权限

➜  ~ chmod u+x a.txt
➜  ~ ls -l a.txt
-rwxr--r-- 2 root root 3070 May 24 23:15 a.txt

(2)修改文件使得所属组用户具有执行权限

➜  ~ chmod g+x a.txt
➜  ~ ls -l a.txt
-rwxr-xr-- 2 root root 3070 May 24 23:15 a.txt

(3)修改文件所属主用户执行权限,并使得其他用户具有执行权限

➜  ~ chmod u-x,o+x a.txt
➜  ~ ls -l a.txt
-rw-r-xr-x 2 root root 3070 May 24 23:15 a.txt

(4)采用数据的方式,设置文件所有者,所属组,其他用户都是具有可读可写可执行权限

➜  ~ chmod 777 a.txt
➜  ~ ls -l a.txt
-rwxrwxrwx 2 root root 3070 May 24 23:15 a.txt

(5)修改整个文件夹里面的所有文件的所有者,所属组,其他用户都是具有可读可写可执行权限

➜  ~ chmod -R 777 shell

6.3.3 chown 改变所有者

Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 。
chown 需要超级用户 root 的权限才能执行此命令。
只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp 命令。
使用权限 : root
1)基本语法 :::info chown [选项] [最终用户] [文件或者目录]
chown [-cfhvR] [—help] [—version] user[:group] file… ::: 2)选项说明

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • —help : 显示辅助说明
  • —version : 显示版本

3)案例实操
(1)修改文件所有者

➜  ~ chown atguigu a.txt
➜  ~ ls -l a.txt
-rwxrwxrwx 2 atguigu root 3070 May 24 23:15 a.txt

(2)递归改变文件所有者和所有组

➜  ~ ls -ld dir
drwxr-xr-x 2 root root 6 May 25 14:09 dir
➜  ~ chown -R atguigu:atguigu dir
➜  ~ ls -ld dir
drwxr-xr-x 2 atguigu atguigu 6 May 25 14:09 dir

6.3.4 chgrp 改变所属组

Linux chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。
chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
在 UNIX 系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用 chgrp 指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
1)基本语法 :::info chgrp [最终用户组] [文件或者目录] (功能描述:改变文件或者目录的所属组)
chgrp [-cfhRv][—help][—version][所属群组][文件或目录…] 或 chgrp [-cfhRv][—help][—reference=<参考文件或目录>][—version][文件或目录…] ::: 2)参数说明

  • -c 或 —changes:效果类似”-v”参数,但仅回报更改的部分。
  • -f 或 —quiet 或 —silent: 不显示错误信息。
  • -h 或 —no-dereference: 只对符号连接的文件作修改,而不改动其他任何相关文件。
  • -R 或 —recursive: 递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v 或 —verbose: 显示指令执行过程。
  • —help: 在线帮助。
  • —reference=<参考文件或目录>: 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
  • —version: 显示版本信息。

3)案例实操
(1)修改文件的所属组

➜  ~ chgrp atguigu a.txt

7 搜索查找类

7.1 find 查找文件或者目录

find 指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件显示在终端中。
1)基本语法 :::info find [搜索范围] [选项]
find path -option [ -print ] [ -exec -ok command ] {} \; ::: 2)选项说明

  • find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
  • expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
  • -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
  • -amin n : 在过去 n 分钟内被读取过
  • -anewer file : 比文件 file 更晚被读取过的文件
  • -atime n : 在过去 n 天内被读取过的文件
  • -cmin n : 在过去 n 分钟内被修改过
  • -cnewer file :比文件 file 更新的文件
  • -ctime n : 在过去 n 天内创建的文件
  • -mtime n : 在过去 n 天内修改过的文件
  • -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
  • -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
  • -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
  • -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
  • -type c : 文件类型是 c 的文件。
  • d: 目录
  • c: 字型装置文件
  • b: 区块装置文件
  • p: 具名贮列
  • f: 一般文件
  • l: 符号连结
  • s: socket
  • -pid n : process id 是 n 的文件
  • 你可以使用 ( ) 将运算式分隔,并使用下列运算。
  • exp1 -and exp2
  • ! expr
  • -not expr
  • exp1 -or exp2
  • exp1, exp2 | 选项 | 功能 | | —- | —- | | -name <查询方式> | 按照指定的文件名查找模式查找文件 | | -user <用户名> | 查找属于指定用户名所有文件 | | -size <文件大小> | 按照指定的文件大小查找文件,单位为:
    b——块(512字节)
    c——字节
    w——字(2字节)
    k——千字节
    M——兆字节
    G——吉字节 |

3)案例实操
(1)按文件名,根据名称查找 / 目录下的filename.txt 文件

➜  ~ find / -name "*.txt"
➜  ~ find / -name "*.txt" -ls

(2)按拥有者:查找/opt目录下,用户名称为 -user 的文件

➜  ~ find /opt -user root -ls

(3)按文件大小:在 /home 目录下查找大于 200m 的文件(+n 大于,-n小于,n 等于)

➜  ~ find /home -size +200M | xargs ls -lh
-rw-r--r-- 1 root root 210M May 25 14:37 /home/bigimg

7.2 locate 快速定位文件路径

locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。 Locate 指令无需遍历整个文件系统, 查询速度较快。 为了保证查询结果的准确度, 管理员必须定期更新 locate 时刻。
1)基本语法 :::info locate 搜索文件
locate [-d ][—help][—version][范本样式…] ::: 2)经验技巧
由于 locate 指令基于数据库进行查询, 所以第一次运行前, 必须使用 updatedb 指令创建 locate 数据库。
3)参数说明

  • -b, —basename — 仅匹配路径名的基本名称
  • -c, —count — 只输出找到的数量
  • -d, —database DBPATH — 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
  • -e, —existing — 仅打印当前现有文件的条目
  • -1 — 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
  • -0, —null — 在输出上带有NUL的单独条目
  • -S, —statistics — 不搜索条目,打印有关每个数据库的统计信息
  • -q — 安静模式,不会显示任何错误讯息。
  • -P, —nofollow, -H — 检查文件存在时不要遵循尾随的符号链接
  • -l, —limit, -n LIMIT — 将输出(或计数)限制为LIMIT个条目
  • -n — 至多显示 n个输出。
  • -m, —mmap — 被忽略,为了向后兼容
  • -r, —regexp REGEXP — 使用基本正则表达式
  • —regex — 使用扩展正则表达式
  • -q, —quiet — 安静模式,不会显示任何错误讯息
  • -s, —stdio — 被忽略,为了向后兼容
  • -o — 指定资料库存的名称。
  • -h, —help — 显示帮助
  • -i, —ignore-case — 忽略大小写
  • -V, —version — 显示版本信息

4)案例实操
(1)查询文件夹

➜  ~ updatedb
➜  ~ locate tmp

7.3 grep 过滤查找以及 “|” 管道符

管道符, “|”, 表示将前一个命令的处理结果输出传递给后面的命令处理
Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
1)基本语法 :::info grep 选项 查找内容 源文件
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][—help][范本样式][文件或目录…] ::: 2)选项说明

  • -a 或 —text : 不要忽略二进制的数据。
  • -A<显示行数> 或 —after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 —byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 —before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 —count : 计算符合样式的列数。
  • -C<显示行数> 或 —context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 —directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 —regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 —extended-regexp : 将样式为延伸的正则表达式来使用。
  • -f<规则文件> 或 —file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 —fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 —basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 —no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 —with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 —ignore-case : 忽略字符大小写的差别。
  • -l 或 —file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 —files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 —line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 —only-matching : 只显示匹配PATTERN 部分。
  • -q 或 —quiet或—silent : 不显示任何信息。
  • -r 或 —recursive : 此参数的效果和指定”-d recurse”参数相同。
  • -s 或 —no-messages : 不显示错误信息。
  • -v 或 —invert-match : 显示不包含匹配文本的所有行。
  • -V 或 —version : 显示版本信息。
  • -w 或 —word-regexp : 只显示全字符合的列。
  • -x —line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定”-i”参数相同。

3)案例实操
(1)查找某个文件的第几行

➜  ~ ls | grep -n test
➜  ~ cat /etc/passwd | grep -n "root"