Linux 命令进阶篇之一

预备知识:

     前面我们学习了linux的文件系统,了解的文件系统的结构,也学了linux档案的属性和权限,以及其设定。

      当我们执行命令操作一个文件的时候,却不知道这个文件为何种文件怎么办呢?

      当我们执行一个指令,我们想知道这个指令是放在哪个目录里面的。该怎么办呢?

      当我们要找一个文件,却不知道它在哪儿,该怎么办呢?

      所有我们这节实验就是要解决以上的问题。

      分别会学到:文件类型查看命令:file ;搜索命令:which,whereis,以及find命令。

      什么指令在什么样的权限下能够运行的介绍如下:(极其重要!!!)

1、让用户进入某个目录成为工作目录的基本权限:

      可使用的指令:例如cd等改变工作目录的命令

      目录所需权限:用户对这个目录至少需要具有x权限

      额外需求:如果用户想要在这个目录内利用ls列出档案,则用户对此目录还需要r的权限

2、用户在某个目录内读取一个文件的基本权限:

      可用命令:例如cat,more,less等

      目录所需权限:用户对该目录至少需要具有x权限

      文件所需目录:使用者对档案至少需要具有 r 的权限才行

3、让使用者修改一个文件的权限:

      可使用的指令:如vim编辑器等

      目录所需权限:用户对该目录至少具有x权限

      文件所需权限:使用者对该文件至少具有r,w权限

4、让一个使用者可以建立一个文件的权限:

      目录所需权限:用户对该目录至少需要w,x权限

5、让用户进入某个目录并执行该目录下的某个命令所需权限:

      目录所需权限:该用户在该目录至少需要x权限

      文件所需权限:使用者对该文件至少需要x权限。

 

1、利用file命令查看那文件的类型

      命令:file

      语法:file [-bLvz] 文件

解释:-b:显示结果,但是不显示文件名称

      -L:直接显示符号链接所指向的文件的类型

      -v:显示版本信息

      -z:测试去读取压缩文件的内容

      直接file 文件,不加任何参数可以显示文件类型

      例查看cd /etc 这里面的文件:

      

 

 

 

 

      查看adjtime 文件类型

      

 

 

 

 

      知其文件类型,查看 –b 功能:

      

 

 

 

 

      更多显示了文件名。

      例:l 开头的,为链接文件,查看-L参数其可以帮助直接显示链接文件所指的文件的类型的功能如下:

      

      

 

 

 

 

 

    linux命令搜寻之which命令

      命令:which

      语法:which [-a] 命令

解释:-a:将PATH中可以找到的指令都列出来,而不是第一个被找到的名称

      利用which mkdir寻找mkdir命令位置:

      

2、档案查找命令

      命令之一:whereis

      语法:whereis [-bmsu] 目录或文件名

解释:-b:只找binary(二进制)格式的文件

      -m:只找在说明文件manual路径下的文件

      -s:只找source来源档案

      -u:搜索不在上述三个项目当真的其他特殊档案

      查看一下上述参数的功能,还有通过-m设置的只找跟passwd命令相关的帮助文件:

 

      

 

      

 

 

 

 

     

      实验发现whereis搜索非常快速,因为它是基于数据库的。这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用 whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。

      但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

      命令之二:locate

      语法:locate [-ir] keyword

解释:-i :忽略大小写

      -r :使用正规运算式做寻找的条件

      locate 使用很简单,只要后面跟关键字即可,搜索起来也非常快速,因为它也是基于数据库的。

      

      搜索所有有关passwd的档案,出错了。为什么呢?按照提示,说没有数据库,刚刚我们说locate是基于数据库的,没有数据库怎么行呢?我们执行updatedb 修复一下,再次搜索:

      

 

 

 

 

 

 

3、命令之find

      语法:find [路径] [option] [action]

解释:find的参数有很多,我们介绍简单一点的,更多用法记得man find 。

      与时间相关的选项:-atime,-ctime和-mtime,以-mtime说明:

      -mtime n :n 为数字

      -mtime +n :n天之前(不含n天本身)

      -mtime -n:n天之内(含n天本身)

      -nwer file:file为一个存在的文件,列出比file更新的文件。

find相关的时间的意义:

      

      +4代表大于等于5天前

      -4:代表等于4天内

      4:代表4-5那一天。

      例1:将过去系统上面24小时内有更改(mtime)的内容列出来:方法,输入find / -mtime 0,然后回车即可

      数字0 代表当前时间,所有代表从现在到24小时前

 

4、按名称查找

      find [路径] -name 名称

      找出 /etc/下 名为passwd的文件

      

 

 

 

 

 

 

 

分析与思考

1、请说明whereis和find有何区别?它们各自的优缺点是什么?

      whereis :这个命令可以用来查找二进制(命令)、源文件、man文件,即主要用来查找可直接执行的命令,可以查找别名。适用于查找安装好的命令

       find:这个命令是通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠。并且支持各种查找条件。但是功能强大肯定是有代价的,那就是搜索速度          慢。如果要实现某些特殊条件的查找,比如找出某个用户的size最大的文件,就只能用find。

2、请使用man page,如何使用find 命令查找/etc下大于500K的文件?

      find ~ -size+500k

3、让一个普通用户heetian能够进行cp /dir1/file1 /dir2的命令时,请说明dir1,file1,dir2的最小所需权限为何?

 

      dir1:x

      file1:r

 

      dir2:w,x

 

 

 

 

 

 

 

posted on 2021-09-07 17:22  叶子与风  阅读(67)  评论(0)    收藏  举报