Linux命令进阶篇之一

Linux命令进阶篇之一

本实验主要介绍了linux一些基本的命令,学会使用文件类型查看命令:file ;搜索命令:which,whereis,以及find命令等。

实验简介

实验所属系列:Linux操作系统

实验对象: 本科/专科信息安全专业

相关课程及专业:计算机基础,计算机网络

实验时数(学分):2学时

实验类别:实践类

预备知识

本实验要求实验者具备如下的相关知识。

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

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

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

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

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

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

本实验需要登陆系统后,请使用“useradd heetian”创建一个用户,以便后面的实验。

权限与指令直接的关系:之前我们有讲过权限与用户,档案直接的关系。那么我们接下来说一下什么指令在什么样的权限下才能够运行吧。(极其重要!!!)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验目的

  1. 掌握文件查看命令:file

  2. 掌握命令位置查找之which命令

  3. 掌握如何就行档案搜索

实验环境

CentOS6.5 试验台

网络拓扑见下图:

Linux命令进阶篇之一_第1张图片

实验步骤一

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

命令:file

语法:file [-bLvz] 文件

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

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

-v:显示版本信息

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

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

更多用法请使用manpage查看。

接下来就来感受下:cd /etc 这里面的文件多~

Linux命令进阶篇之一_第2张图片

快来看看 adjtime 这个是个什么类型的文件呢?

在这里插入图片描述

哦~,原来是个文本文件呢。来试试 –b 参数:

在这里插入图片描述

文件名显示了呢。

也许你会发现有这样的文件:l 开头的,就是链接文件了,我们试试 -L参数吧,可以直接显示链接文件所指的文件的类型呢!!

Linux命令进阶篇之一_第3张图片

Linux命令进阶篇之一_第4张图片

linux命令搜寻之which命令

命令:which

语法:which [-a] 命令

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

我们用which mkdir来找找mkdir命令在哪儿

在这里插入图片描述

我们来做个测试:

在这里插入图片描述

在这里插入图片描述

当我们用root用户的时候,为什么能找到ifconfig ,但是用普通用户就找不到了呢?

是这样的,which是根据用户的PATH变量设定的路径去找的。echo $PATH就能查看当前用户的PATH变量设定了,以后会详细讲这个东西的:

在这里插入图片描述

实验步骤二

档案查找命令

命令之一:whereis

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

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

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

-s:只找source来源档案

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

来试试吧:

在这里插入图片描述

只找跟passwd命令相关的帮助文件:

在这里插入图片描述

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

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

命令之二:locate

语法:locate [-ir] keyword

解释:-i :忽略大小写

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

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

在这里插入图片描述

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

Linux命令进阶篇之一_第5张图片

实验步骤三

命令之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相关的时间的意义:

Linux命令进阶篇之一_第6张图片

+4代表大于等于5天前

-4:代表等于4天内

4:代表4-5那一天。

例1:将过去系统上面24小时内有更改(mtime)的内容列出来:

Linux命令进阶篇之一_第7张图片

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

按名称查找

find [路径] -name 名称

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

在这里插入图片描述

实验结果

实验步骤一
Linux命令进阶篇之一_第8张图片
Linux命令进阶篇之一_第9张图片
Linux命令进阶篇之一_第10张图片

实验步骤二
Linux命令进阶篇之一_第11张图片
Linux命令进阶篇之一_第12张图片

实验步骤三
Linux命令进阶篇之一_第13张图片
在这里插入图片描述

分析与思考

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

区别:whereis命令是通过文件索引数据库而非PATH来查找的,find命令是通过直接搜索硬盘的方式查找的。
whereis的优点:效率很高。
whereis的缺点:只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
find的优点:保证查找的信息绝对可靠。并且支持各种查找条件。
find的缺点:搜索速度慢

2、请使用man page,如何使用find 命令查找/etc下大于500K的文件?
命令find /etc -size +500k
Linux命令进阶篇之一_第14张图片

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

r(read contents indirectory):具有读取目录结构列表的权限。一个目录具有【r】权限,表示可以查询该目录下的文件名数据,
因此,可以利用【ls -l】显示该目录下的内容列表。
w(modify contents of directory):具有改动该目录结构列表的权限,如建立新的文件与目录、删除已存在的文件和目录、
将已存在的文件或目录进行更名和移动该目录的文件、目录位置。
x(access directory):表示用户能否进入该目录成为工作目录(当前所在目录)

dir1,file1,dir2的最小所需权限分别为 x r wx 要能够读file1而且能够修改dir2内的数据

补充 Linux下执行命令所需要的权限以及重要的目录与命令

权限

1.进入目录

进入目录需要x(执行)权限

测试方法:创建三个目录dir1,dir2,dir3

使用chmod命令,去掉第1个目录用户的r(读)权限,去掉第2个目录用户的w(写)权限,去掉第3个目录用户的x(执行)权限

依次进入目录,发现只有dir3,出现 Permission denied。

2.在目录中执行各种命令

1.touch命令
touch命令需要目录的w权限

测试方法:依次使用touch命令,对于dir1,dir2,使用touch创建一个文件file1,发现dir2出现Permission denied

2.ls命令
ls命令需要目录的r权限

测试方法:依次对于dir1,dir2使用ls命令,发现dir1出现Permission denied

3.rm命令
rm命令需要目录的w权限

原因:创建一个文件或目录都需要w权限,那么没有w权限,都创建不了如何删除呢?

4.mv命令
mv命令需要目录的w权限

原因:创建一个文件或目录都需要w权限,那么没有w权限,都创建不了如何移动或者重命名呢?

补充 which whereis locate find 区别与比较

1、which
    这条命令主要是用来查找系统PATH目录下的可执行文件。说白了就是查找那些我们已经安装好的可以直接执行的命令。比如:
    which ls
    alias ls='ls --color=auto'
     /bin/ls
    其中的alias代表的是命令别名。这里需要说明的是which是可以分辨出命令的别名的,你也可以通过which 命令别名查找到命令的位置。这点下面要介绍的命令是做不到的。
2、whereis
    这个命令可以用来查找二进制(命令)、源文件、man文件。与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广。例如:
    [root@MR pip-1.5.4]# whereis ls
    ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
    可以看到whereis还找到了ls命令的相关man文件。这条命令一般情况下只找的出命令相关的文件,并不能找出任意指定的文件。
3、locate
    这个命令也是通过数据库查找文件,但是这个命令的适用范围就比whereis大多了。这个命令可以找到任意你指定要找的文件,并且可以只输入部分文件名(前面两个命令是要输入完整文件名的)。同时locte还可以通过-r选项使用正则表达式,功能十分强大。例如:
[root@MR pip-1.5.4]# locate ls |head -n 5
/wlsvhtest-tap0
/wlsvhtest-wlan1
/bin/alsaunmute
/bin/false
/bin/ls
    这里只显示了前五条,但是实际上locate输出的内容是非常多的。
    需要注意的是locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令更新索引数据库。
4、find
    find命令要比前边几条复杂的多,功能也强大的多。这条命令是通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠。并且支持各种查找条件。但是功能强大肯定是有代价的,那就是搜索速度慢。所以一般前边几种找不出来的情况下才会使用find。另外如果要实现某些特殊条件的查找,比如找出某个用户的size最大的文件,那就只能用find了。

    总结:
    which主要用来查找可直接执行的命令,可以查找别名。whereis比which的搜索范围大了一些,同时可以查找源文件和man文件。这两个命令适用于查找安装好的命令。
    locate的查找范围更大,可以查找任意类型文件。适合快速查找指定文件。
    find最强大也最慢。适合查找前几个命令找不到的文件。
https://blog.csdn.net/l1902090/article/details/24887997

参考https://blog.csdn.net/l1902090/article/details/24887997

其他文章传送处

文件管理基础命令一
文件管理基础命令二
获取帮助命令
了解你的系统
Linux档案权限篇之一
Linux命令进阶篇之二

你可能感兴趣的:(linux)