Linux系统的一些常用的基本命令(二)

 

1. rm 是强大的删除命令,不仅可以删除文件,也可以删除目录。这个命令的基本信息如下。

  • 命令名称:rm
  • 英文原意:remove files or directories。
  • 所在路径:/bin/rm。
  • 执行权限:所有用户。
  • 功能描述:删除文件或目录。
[root@localhost ~]# rm[选项] 文件或目录

选项:
-f:强制删除(force)
-i:交互删除,在删除之前会询问用户
-r:递归删除,可以删除目录(recursive)

2. cp 是用于复制的命令,其基本信息如下:

  • 命令名称:cp;
  • 英文原意:copy files and directories;
  • 所在路径:/bin/cp;
  • 执行权限:所有用户;
  • 功能描述:复制文件和目录;
[root@localhost ~]# cp [选项] 源文件 目标文件

选项:
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-i:询问,如果目标文件已经存在,则会询问是否覆盖;
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件;
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r:递归复制,用于复制目录;

3. mv 是用来剪切的命令,其基本信息如下。

  • 命令名称:mv。
  • 英文原意:move(rename)files。
  • 所在路径:/bin/mv。
  • 执行权限:所有用户。
  • 功能描述:移动文件或改名。
[root@localhost ~]# mv 【选项】 源文件 目标文件

选项:
-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
-v:显示详细信息;

4. 前面讲解 ls 命令时,我们已经知道长格式显示的第一列就是文件的权限,例如:

[root@localhost ~]# ls -linstall.log
-rw-r--r--.1 root root 24772 1月 14 18:17 install.log

                                                           

第 1 位代表文件类型。Linux 不像 Windows 使用扩展名表示文件类型,而是使用权限位的第 1 位表示文件类型。虽然 Linux 文件的种类不像 Windows 中那么多,但是分类也不少,详细情况可以使用"info ls"命令查看。笔者在这里只讲一些常见的文件类型。

  • -"-":普通文件。
  • -"b":块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件 /dev/sda1 就是这种文件。
  • -"c":字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。
  • -"d":目录文件。Linux 中一切皆文件,所以目录也是文件的一种。
  • -"l":软链接文件。
  • -"p":管道符文件。这是一种非常少见的特殊设备文件。
  • -"s":套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。


第 2~4 位代表文件所有者的权限。

  • -r:代表 read,是读取权限。
  • -w:代表 write,是写权限。
  • -x:代表 execute,是执行权限。

如果有字母,则代表拥有对应的权限;如果是"-",则代表没有对应的权限。

第 5~7 位代表文件所属组的权限,同样拥有"rwx"权限。

第 8~10 位代表其他人的权限,同样拥有"rwx"权限。

这就是文件基本权限的含义,那我们看看下面这个文件的权限是什么。

[root@localhost ~]#ls -linstall.log
-rw-r--r--.1 root root 24772 1月 14 18:17 install.log

这个文件的所有者,也就是 root 拥户,拥有读和写权限;所属组中的用户,也就是 root 组中除 root 用户以外的其他用户,拥有只读权限;而其他人拥有只读权限。

最后,我们再看看权限位的这个"."的作用。这个点是在 CentOS 6 以上的系统中才出现的,在以前的系统中是没有的。刚开始,笔者也饱受这个点的困扰,在各种资料中都查不到这个点的说明。直到无意中查询了 "info ls" 命令,才明白这个点的含义:如果在文件的权限位中含有".",则表示这个文件受 SELinux 的安全规则管理。

5. chmod 是修改权限的命令,其基本信息如下:
命令名称:chmod。
英文原意:change file mode bits。
所在路径:/bin/chmod。
执行权限:所有用户。
功能描述:修改文件的权限模式。

[root@localhost ~]# chmod [选项] 权限模式 文件名

选项
-R:递归设置权限,也就是给子目录中的所有文件设定权限
权限模式
chmod 命令的权限模式的格式是"[ugoa] [[+-=] [perms]]",也就是"[用户身份][[赋予方式][权限]]"的格式,我们来解释一下。

用户身份:

  • -u:代表所有者(user)。
  • -g:代表所属组(group)。
  • -o:代也人(other)。
  • -a:代表全部身份(all)。

赋予方式:

  • -+:加入权限。
  • --:减去权限。
  • -=:设置权限。

权限:

  • -r:读取权限(read)。
  • -w:写权限(write)。
  • -x:执行权限(execute)。
用"+"加入权限。
[root@localhost ~]# touch lmls
#建立测试文件
[root@localhost ~]# ll lmls
-rw-r--r--1 root root 0 6月 15 02:48 lmls
#这个文件的默认权限是"所有者:读、写权限;所属组:只读权限;其他人:只读权限"
[root@localhost ~]# chmod u+x lmls
#给所有者加入执行权限
[root@localhost ~]# ll lmls-rwxr--r-- 1 root root 0 6月 15 02:48 lmls
#权限生效

数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。
我们来看看这些数字权限的含义,

  • 4:代表"r"权限。
  • 2:代表"w"权限。
  • 1:代表"x"权限。
[root@localhost ~]# chmod 755 lmls
#给文件赋予"755权限"
[root@localhost ~]#ll lmls
-rwxr-xr-x 1 root root 0 6月15 02:48 lmls

解释一下"755权限":

  • 第一个数字"7":代表所有者的权限是"4+2+1",也就是读、写和执行权限。
  • 第二个数字"5":代表所属组的权限是"4+1",也就是读和执行权限。
  • 第三个数字"5":代表其他人的权限是"4+1",也就是读和执行权限。

数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个:

  • 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
  • 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
  • 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。

权限对文件的作用。

  • -读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。
  • -写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意,对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。
  • -执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。

权限对目录的作用

  • -读(r):对目录有读 (r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行 ls 命令,查看目录下的内容了。
  • -写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。
  • -执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入目录。

系统读取 cangls 文件的过程是这样的:

  • 通过 /test/ 目录的 inode 信息,找到 /test/ 目录的 block。
  • 在 /test/ 目录的 block 中,查看到 cangls 文件的 inode 号。
  • 通过 cangls 文件的 inode 号,找到了 cangls 文件的 inode 信息。
  • 确定是否有权限访问 cangls 文件的内容。
  • 通过 inode 信息中 block 的位置,找到 cangls 文件实际的 block。
  • 读取 block 数据,从而读取出 cangls 文件的内容。

既然如此,那么 /test/ 目录的文件名放在哪里呢?当然放在 / 目录的 block 中了,而/目录的 inode 号(/ 目录的 inode 号是 2)是系统已知的。也就是说,在系统中读取任意一个文件,都要先通过 / 目录的 inode 信息找到 / 目录的 block,再查看 / 目录的 block,从而可以确定一级目录的 inode 信息。然后一级一级地查找到最终文件的 block 信息,从而读取数据。

总结:因为文件名保留在上级目录的 block 中,所以对文件拥有写权限,是不能删除文件本身的,只能删除文件中的数据(也就是文件 block 中的内容)。要想删除文件名,需要对文件所在目录拥有写权限。

2) 目录的可用权限。

对目录来讲,如果只赋予只读(r)权限,则是不可以使用的。大家想想,要想读取目录下的文件,你怎么也要进入目录才可以吧?而进入目录,对目录来讲,需要执行(x)权限的支持。

目录的可用权限其实只有以下几个。

  • 0:任何权都不赋予。
  • 5:基本的目录浏览和进入权限。
  • 7:完全权限。

6. chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。

  • 命令名称:chown。
  • 文原意:change file owner and group。
  • 所在路径:/bin/chown。
  • 执行权限:所有用户。
  • 功能描述:修改文件和目录的所有者和所属组。
[root@localhost ~]# chown [选项] 所有者:所属组文件或目录

选项:
-R: 递归设置权限,也就是给子目录中的所有文件设置权限
修改文件的所属组。
chown 命令不仅可以修改文件的所有者,也可以修改文件的所属组。例如:
[root@localhost ~]# chown user:user laowang
# ":"之前是文件的所有者,之后是所属组。这里的":"也可以使用"."代替
[root@localhost ~]# ll laowang
-rw-r--r-- 1 user user 0 6月 16 05:12 laowang

普通用户修改权限。
在讲权限作用的时候强调过,并不是只有 root 用户才可以修改文件的权限,而是超级用户可以修改任何文件的权限,普通用户只能修改自己文件的权限。也就是说,只有普通用户是这个文件的所有者,才可以修改文件的权限。我们试试:

[root@localhost ~]# cd /home/user/
#进入user用户的家目录
[root@localhost user]# touch test
#由root用户新建文件test
[root@localhost user]# ll test
-rw-r--r--1 root root 0 6月 16 05:37 test
#文件所有者和所属组都是root用户
[root@localhost user]# su- user
#切换为user用户
[user@localhost ~]$ chmod 755 test
chmod:更改"test"的权限:不允许的操作 #user用户不能修改test文件的权限
[user@localhost ~]$ exit
#退回到root身份
[root@localhost user]# chown user test
#由root用户把test文件的所有者改为user用户
[root@localhost user]# su- user
#切换为user用户
[user@localhost ~]$ chmod 755 test
#user用户由于是test文件的所有者,所以可以修改文件的权限
[user@localhost ~]$ ll test
-rwxr-xr-x 1 user root 0 6月 16 05:37 test
#查看权限

7. chgrp 是修改文件和目录的所属组的命令,其基本信息如下:

  • 命令名称:chgrp。
  • 英文原意:change group ownership。
  • 所在路径:/bin/chgrp。
  • 执行权限:所有用户。
  • 功能描述:修改文件和目录的所属组。
chgrp 命令比较简单,就是修改文件和目录的所属组。我们来试试:

[root@localhost ~]# touch test2
#建立测试文件
[root@localhost ~]# chgrp user test2
#修改test2文件的所属组为user用户组
[root@localhost ~]# ll test2
-rw-r--r-- 1 root user0 6月 16 05:54 test2
#修改生效

8. umask 默认权限是 Linux 权限的一种,主要用于让 Linux 中的新建文件和目录拥有默认权限。Linux 是一个比较安全的操作系统,而安全的基础就是权限,所以,在 Linux 中所有的文件和目录都要有基本的权限,新建的文件和目录当然也要有默认的权限。
在 Linux 中,通过 umask 默认权限来给所有新建立的文件和目录赋予初始权限,这一点和 Windows 不太一样,Windows 是通过继承上级目录的权限来给文件和目录赋予初始权限的。
査看系统的 umask 权限:

[root@localhost ~]# umask
0022
#用八制数值显示umask权限
[root@localhost ~]# umask -S
u=rwx, g=rx, o=rx
#用字母表示文件和目录的初始权限

使用"-S"选项,会直接用字母来表示文件和目录的初始权限。我们査看数值的 umask 权限,看到的是 4 位数字"0022",其中第一个数字"0"代表的是文件的特殊权限(SetUID、SetGID、Sticky BIT),特殊权限我们放在后续章节来详细讲解,现在先不讨论。也就是后 3 位数字"022"才是真正的 umask 默认权限。

umask默认权限的计算方法

在学习 umask 默认权限的计算方法之前,我们需要先了解一下新建文件和目录的默认最大权限。

  • 对文件来讲,新建文件的默认最大权限是 666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
  • 对目录来讲,新建目录的默认最大权限是 777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

我们在这里还是按照权限字母来讲解 umask 权限的计算方法。我们就按照默认的 umask 值是 022 来分别计算一下新建文件和目录的默认权限吧。

  • 文件的默认权限最大只能是 666,换算成字母就是"-rw-rw-rw-";而 umask 的值是 022,也换算成字母就是"-----w--w-"。把两个字母权限相减,得到的就是新建文件的默认权限:(-rw-rw-rw-) - (-----w--w-)=(-rw-r--r--)。
  • 目录的默认权限最大可以是 777,换算成字母就是"drwxrwxrwx";而 umask 的值是022,也换算成字母就是"d----w--w-"。也把两个字母权限相减,得到的就是新建目录的默认权限:(drwxrwxrwx) - (d----w--w-)=(drwx-r-xr-x)。

umask 默认权限的修改方法

umask 默认权限可以直接通过命令来进行修改,例如:

[root@localhost ~]# umask 002
[root@localhost ~]# umask 033

不过,通过命令进行的修改只能临时生效,一旦重启或重新登录就会失效。如果想让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile。例如:

[root@localhost ~]# vi /etc/profile
...省略部分内容...
if [ $UID -gt 199]&&[ "'id -gn'" = "'id -un'" ]; then umask 002
#如果UID大于199(普通用户),则使用此umask值
else
umask 022
#如果UID小于199(超级用户),则使用此umask值
fi
…省略部分内容…

9. man 是最常见的帮助命令,也是 Linux 最主要的帮助命令,其基本信息如下。

  • 命令名称:man。
  • 英文原意:format and display the on-line manual pages。
  • 所在路径:/usr/bin/man。
  • 执行权限:所有用户。
  • 功能描述:显示联机帮助手册。
[root@localhost ~]# man [选项]命令

选项:
-f:査看命令拥有哪个级别的帮助
-k: 査看和命令相关的所有帮助

在系统中还有两个命令。

  • whatis:这个命令的作用和 man -f 是一致的。
  • apropos:这个命令的作用和 man -k 是一致的。

10. info 命令也可以获取命令的帮助。和 man 命令不同的是,info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。

11. help 是非常简单的命令,而且不经常使用。因为 help 只能获取 Shell 内置命令的帮助,但在 Linux 中绝大多数命令是外部命令,所以 help 命令的作用非常有限。而且内置命令也可以使用 man 命令获取帮助。

help 命令的基本信息如下。

  • 命令名称:help。
  • 英文原意:help。
  • 所在路径:Shell 内置命令。
  • 执行权限:所有用户。
  • 功能描述:显示 Shell 内置命令的帮助。

--help 选项

绝大多数命令都可以使用"--help"选项来査看帮助,这也是一种获取帮助的方法。例如:

[root@localhost ~]# ls --help

这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版。

12. whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件,而只能搜索系统命令。whereis 命令的基本信息如下。

  • 命令名称:whereis。
  • 英文原意:locate the binary, source, and manual page files for a command。
  • 所在路径:/usr/bin/whereis.
  • 执行权限:所有用户。
  • 功能描述:査找二进制命令、源文件和帮助文档的命令。
看英文原意,就能发现 whereis 命令不仅可以搜索二进制命令,还可以找到命令的帮助文档的位置。
[root@localhost ~]# whereis [选项] 命令

选项:
-b: 只査找二制命令;
-m: 只查找帮助文档;

13. which 也是搜索系统命令的命令。和 whereis 命令的区别在于,whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。

which 命令的基本信息如下。

  • 命令名称:which。
  • 英文原意:shows the full path of(shell)commands。
  • 所在路径:/usr/bin/which。
  • 执行权限:所有用户。
  • 功能描述:列出命令的所在路径。

which 命令非常简单,可用选项也不多,我们直接举个例子:

[root@localhost ~]# which ls
alias ls='ls --color=auto'
/bin/ls
#which 命令可以查找到命令的别名和命令所在位置
#alias 这段就是别名,别名就是小名,也就是说,当我们输入 ls 命令时,实际上执行的是 ls--color=auto

14. whereis 和 which 命令都是只能搜索系统命令的命令,而 locate 命令才是可以按照文件名搜索普通文件的命令。
但是 locate 命令的局限也很明显,它只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。如果要按照复杂条件执行搜索,则只能求助于功能更加强大的 find 命令。locate 命令的优点鮮常明显,那就是搜索速度非常快,而且耗费系统资源非常小。这是因为 locate 命令不会直接搜索硬盘空间,而会先建立 locate 数据库,然后在数据库中按照文件名进行搜索,是快速的搜索命令。
locate 命令的基本信息如下。

  • 命令名称:locate。
  • 英文原意:find files by name。
  • 所在路径:/usr/bin/locate。
  • 执行权限:所有用户。
  • 功能描述:按照文件名搜索文件。
locate 命令只能按照文件名来进行搜索,所以使用比较简单。
[root@localhost ~]# locate [选项] 文件名

选项:
-i:忽略大小写

locate 命令的数据库。
我们在使用 locate 命令的时候,可能会发现一个问题:如果我们新建立一个文件,那么 locate 命令找不到这个文件。例如:

[root@localhost ~]# touch cangls
[root@localhost ~]# locate cangls
#新建立的文件,locate命令找不到

这是因为 locate 命令不会直接搜索硬盘空间,而会搜索 locate 数据库。这样做的好处是耗费系统资源小、搜索速度快;缺点是不是实时更新的,而要等用户退出登录或重启系统时,locate 数据库才会更新,所以我们无法查找到新建立的文件。

既然如此,locate 命令的数据库在哪里呢?

[root@localhost ~]#ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 2328027 6月 14 02:08/var/lib/ mlocate/mlocate.db
#这是 locate 命令实际搜索的数据库的位置

这个数据库是二进制文件,不能直接使用 Vim 等编辑器査看,而只能使用对应的 locate 命令进行搜索。如果我们不想退出登录或重启系统,则也可以通过 updatedb 命令来手工更新这个数据。例如:

[root@localhost ~]# locate cangls
#没有更新数据库时,找不到cangls文件
[root@localhost ~]# updatedb
#更新数据库[root@localhost ~]# locate cangls
/root/cangls
#新建立的文件已经可以搜索到了

15. find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

find 命令的基本信息如下:

  • 命令名称:find。
  • 英文原意:search for files in a directory hierarchy.
  • 所在路径:/bin/find。
  • 执行权限:所有用户。
  • 功能描述:在目录中查找文件。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容

find 是比较特殊的命令,它有两个参数:
第一个参数用来指定搜索路径;
第二个参数用来指定搜索内容。

按照文件名搜索

[root@localhost ~]#find 搜索路径 [选项] 搜索内容

选项:
-name: 按照文件名搜索;
-iname: 按照文件名搜索,不区分文件名大小;
-inum: 按照 inode 号搜索;

按照文件大小搜索

[root@localhost ~]#find 搜索路径 [选项] 搜索内容

选项:
-size[+-]大小:按照指定大小搜索文件

find 命令的默认单位不是字节。如果不写单位,那么 find 命令是按照 512 Byte 来进行査找的。 我们看看 find 命令的帮助。

[root@localhost ~]# man find
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
'b' for 512-byte blocks (this is the default if no suffix is used)
#这是默认单位,如果单位为b或不写单位,则按照 512Byte搜索
'c' for bytes
#搜索单位是c,按照字节搜索
'w' for two-byte words
#搜索单位是w,按照双字节(中文)搜索
'k'for Kilobytes (units of 1024 bytes)
#按照KB单位搜索,必须是小写的k
'M' for Megabytes (units of 1048576 bytes)
#按照MB单位搜索,必须是大写的M
'G' for Gigabytes (units of 1073741824 bytes)
#按照GB单位搜索,必须是大写的G

按照修改时间搜索

Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。
[root@localhost ~]# find搜索路径 [选项] 搜索内容

选项:
-atime [+-]时间: 按照文件访问时间搜索
-mtime [+-]时间: 按照文改时间搜索
-ctime [+-]时间: 按照文件修改时间搜索
这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 "[+-]"时间的含义。
-5:代表@内修改的文件。
5:代表前5~6天那一天修改的文件。
+5:代表6天前修改的文件。

按照权限搜索

在 find 中,也可以按照文件的权限来进行搜索。权限也支持 [+/-] 选项。我们先看一下命令格式。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:

-perm 权限模式:査找文件权限刚好等于"权限模式"的文件
-perm -权限模式:査找文件权限全部包含"权限模式"的文件
-perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件

按照所有者和所属组搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:
-uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件
-gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件
-user 用户名:按照用户名査找所有者是指定用户的文件
-group 组名:按照组名査找所属组是指定用户组的文件
-nouser:査找没有所有者的文件

按照文件类型搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容

选项:
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件

逻辑运算符

[root@localhost ~]#find 搜索路径 [选项] 搜索内容

选项:

-a:and逻辑与
-o:or逻辑或
-not:not逻辑非

 Example -a:and逻辑与

find 命令也支持逻辑运算符选项,其中 -a 代表逻辑与运算,也就是 -a 的两个条件都成立,find 搜索的结果才成立。
举个例子:

[root@localhost ~]# find.-size +2k -a -type f
#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件

在这个例子中,文件既要大于 2KB,又必须是普通文件,find 命令才可以找到。再举个例子:

[root@localhost ~]# find.-mtime -3 -a -perm 644
#在当前目录下搜索3天以内修改过,并且权限是644的文件

 其他选项

1) -exec选项
这里我们主要讲解两个选项"-exec"和"-ok",这两个选项的基本作用非常相似。我们先来看看 "exec"选项的格式。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令2{}\;

首先,请大家注意这里的"{}"和"\;"是标准格式,只要执行"-exec"选项,这两个符号必须完整输入。

其次,这个选项的作用其实是把 find 命令的结果交给由"-exec"调用的命令 2 来处理。"{}"就代表 find 命令的査找结果。

我们举个例子,刚刚在讲权限的时候,使用权限模式搜索只能看到文件名,例如:

[root@localhost test]#find.-perm 444
./test2

如果要看文件的具体权限,还要用"ll"命令査看。用"-exec"选项则可以一条命令搞定:

[root@localhost test]# find.-perm 444 -exec ls -l {}\;
-r--r--r-- 1 root root 0 6月 17 11:05 ./test2
#使用"-exec"选项,把find命令的结果直接交给"ls -l"命令处理

"-exec"选项的作用是把 find 命令的结果放入"{}"中,再由命令 2 直接处理。在这个例子中就是用"ls -l"命令直接处理,会使 find 命令更加方便。

2) -ok选项
"-ok"选项和"-exec"选项的作用基本一致,区别在于:"-exec"的命令会直接处理,而不询问;"-ok"的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。例如:

[root@localhost test]# find .-perm 444 -ok rm -rf{}\;
<rm…./test2>?y  <-需要用户输入y,才会执行
#我们这次使用rm命令来删除find找到的结果,删除的动作最好确认一下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值