linux从入门到精通三:Linux下的目录、文件操作、帮助和搜索命令等

视频链接和参考资料来源处
(http://www.atguigu.com/linux_video.shtml#linux_yw)

文章目录


前言

以下的命令大部分都要牢记


一、命令的基本格式

1.命令的提示符

[root@localhost ~]#

[]:这是提示符的分隔符号,没有特殊含义。*

root:显示的是当前的登录用户,我们现在使用的是 root 用户登录

@:分隔符号,没有特殊含义。**

localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。

~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。

#:命令提示符。超级用户是#,普通用户是$





2.命令的基本格式

注:在所有计算机文档里,讲格式内容,出现了[](中括号)都是可选项,有没有都可以。

[root@localhost ~]# 命令 [选项] [参数]

举个例子:ls命令
命令名称:ls。
英文原意:list。
所在路径:/bin/ls。
执行权限:所有用户
功能描述:显示目录下的内容。

ls命令既可操作目录,也可操作文件!!

[root@localhost ~]#ls [选项] [文件名或目录名]
选项:
-a: 显示所有文件
--color=when: 支持颜色输出,when 的值默认是 always(总显示颜色),也可以是
never(从不显示颜色)和 auto(自动)
-d: 显示目录信息,而不是目录下的文件
-h: 人性化显示,按照我们习惯的单位显示文件大小
-i: 显示文件的 i 节点号(索引)
-l: 长格式显示
[root@localhost ~]# ls -l
总用量 44
-rw-------. 1 root root 1207 114 18:18 anaconda-ks.cfg
#权限 引用计数 所有者 所属组 大小 文件修改时间 文件名

我们已经知道“-l”选项用于显示文件的详细信息,那么“-l”选项显示的这 7 列分别是什么含义?
第一列:权限。

第二列:引用计数。 文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。

第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户

第四列:所属组。默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
为什么要分所有者,所属组?
为了分配权限的时候指定权限方便(所有者可以指定所属组,尽量给所属组权利小一点)

第五列:大小。默认单位是字节。

第六列:文件修改时间。文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。

第七列:文件名。


①:Linux中 .开头的文件是隐藏文件,查看方式 ls -a
注:看不懂的文件,颜色越深的文件不要随意碰!!!
在这里插入图片描述
②:所有的目录都有两个相同的系统重要文件,没事不要碰!

在这里插入图片描述
③:ls -lh 人性化显示文件大小 h:human

ls -l默认是字节为单位
在这里插入图片描述
④:ls --color={alowas never auto}用来改显示颜色

⑤:ls -lh →查看的是目录下的子文件
ls -ldh →查看目录本身,不是子文件
ls -li→查看文件i节点号

在这里插入图片描述

选项:是用于调整命令的功能的。
参数:是命令的操作对象,如果省略参数,是因为有默认参数
如果这个命令的选项和参数是在[]中,那么这个命令的选项和参数是可以没有的

二.目录操作命令

1.ls命令操作已学

2.cd命令

cd 是切换所在目录的命令
命令名称:cd。
英文原意:change directory。
所在路径:Shell 内置命令。
执行权限:所有用户。
功能描述:切换所在目录。

2.1 cd命令的简化用法

在这里插入图片描述
返回家目录有两种方法:直接敲cd或cd ~
显示当前目录:pwd
在这里插入图片描述

2.2 绝对路径与相对路径

绝对路径:以跟目录为参照物,从根目录开始,一级一级进入目录
相对路径:以当前目录作为参照物,进行目录查找

参照的是根目录,就是绝对路径;参照的是当前目录,就是相对路径

①:cd /usr/ →usr左侧加了/(根目录),为绝对路径
cd usr/ →usr左侧没有加/,为相对路径

②:cd /usr/ →usr右边的这个/代表目录下的意思,有没有都可以
cd /usr/=cd /usr

③:同样的命令用相对路径可能会报错,初学者推荐绝对路径,后期再用相对路径



2.3 pwd命令

pwd 命令是查询所在目录的命令,基本信息如下:
命令名称:pwd
英文原意:print name of current/working directory
所在路径:/bin/pwd
执行权限:所有用户。
功能描述:查询所在的工作目录。





3.mkdir命令

mkdir 是创建目录的命令,其基本信息如下。
命令名称:mkdir。
英文原意:make directories。
所在路径:/bin/mkdir。
执行权限:所有用户。
功能描述:创建空目录。
命令格式如下:

[root@localhost ~]# mkdir [选项] 目录名 // 目录名必须有,没加[]号
选项:
-p: 递归建立所需目录

mkdir命令不能把目录建到指定的路径下,所以务必注意使用mkdir的时候一定要看清楚自己此时所在的目录

只能在家目录(~目录)和临时目录(/tmp)下建新目录


①:不能建立同名目录
②-p 选项可以递归建立空目录

在这里插入图片描述



4.rmdir命令,很少用这个命令删除目录

既然有建立目录的命令,就一定会有删除目录的命令 rmdir,其基本信息如下。
命令名称:rmdir。
英文原意:remove empty directories。
所在路径:/bin/rmdir。
执行权限:所有用户。
功能描述:删除空目录。

[root@localhost ~]# rmdir [选项] 目录名
选项:
-p: 递归删除目录

①:rmdir 命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错。
②:这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用 rm命令

4.1简单讲讲rm命令,它可以一次性删除

rm命令既可以删文件也可以删目录
rm -r 目录名    (它会问你是否要删除此目录),尽量用这种,安全,有后悔余地
rm -rf 目录名     强制删除,不能后悔,可能会造成误删除
/ / 如果先前装了软件extundelete软件,再误删除的话,可以找回

在这里插入图片描述





三.文件操作命令

学vi前,如何写入和修改文件呢

用echo命令创建并写入和修改文件

格式如下

echo 内容 >> 文件名,没有的话它会自动创建

在这里插入图片描述

1.touch命令

创建空文件或修改文件时间,这个命令的基本信息如下。
命令名称:touch。
英文原意:change file timestamps。
所在路径:/bin/touch。
执行权限:所有用户。
功能描述:修改文件的时间戳。

①:如果文件不存在,就创建一个新文件
②:如果文件存在,就修改文件时间

在这里插入图片描述
在这里插入图片描述





2.stat命令

stat 是查看文件详细信息的命令,而且可以看到文件的三个时间,其基本信息如下。
命令名称:stat。
英文原意:display file or file system status。
所在路径:/usr/bin/stat。
执行权限:所有用户。
功能描述:显示文件或文件系统的详细信息。

[root@localhost ~]# stat anaconda-ks.cfg 
 文件:"anaconda-ks.cfg"
 大小:1453 块:8 IO 块:4096 普通文件
设备:803h/2051dInode:33574991 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2018-11-06 23:22:23.409038121 +0800
最近更改:2018-10-24 00:53:08.760018638 +0800 #数据修改时间
最近改动:2018-10-24 00:53:08.760018638 +0800 #状态修改时间
Linux不计入创建时间!!!

在这里插入图片描述
数据修改时间:我改了里面的内容
状态修改时间:我改了这个文件的属性,如权限,所有者所属组等等




3.cat命令

cat 命令用来查看文件内容。这个命令的基本信息如下。
命令名称:cat。
英文原意:concatenate files and print on the standard output。
所在路径:/bin/cat。
执行权限:所有用户。
功能描述:合并文件并打印输出到标准输出

格式如下:

注意选项大小写!!选项有大写,命令名称全是小写。
linux中回车符用$表示,tab键用^表示
[root@localhost ~]# cat [选项] 文件名
选项:
-A:相当于-vET 选项的整合,用于列出所有隐藏符号
-E:列出每行结尾的回车符$ 
-n:显示行号
-T:把 Tab 键用^I 显示出来
-v:列出特殊字符    / / 小写的v!!!

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如何查看命令的帮助文档:man、info命令等等
cat命令的缺点:看的不全,不太适合查看大文件



4.more命令(分屏显示)搜索文件没提示

more 是分屏显示文件的命令,其基本信息如下。
命令名称:more。
英文原意:file perusal filter for crt viewin。
所在路径:/bin/more。
执行权限:所有用户。
功能描述:分屏显示文件内容。

more 命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。常用的交互命令如下。
空格键:向下翻页。
b:向上翻页。
回车键:向下滚动一行。
/字符串:搜索指定的字符串。 这个搜索功能不太好用,没有提示,了解一下就行了
q:退出






5.less命令(分行显示)搜索文件有提示

less 命令和 more 命令类似,只是 more 是分屏显示命令,而 less 是分行显示命令,其基本信息如下。
命令名称:less。
英文原意:opposite of more。
所在路径:/usr/bin/less。
执行权限:所有用户。
功能描述:分行显示文件内容

操作如下:
按↑往上
按↓往下
q键退出
/字符串:搜索字符串,有高亮






6.head命令

head 是用来显示文件开头的命令,其基本信息如下。
命令名称:head。
英文原意:output the first part of files。
所在路径:/usr/bin/head。
执行权限:所有用户。
功能描述:显示文件开头的内容

命令格式

[root@localhost ~]# head [选项] 文件名
选项:
/ / head 不加选项默认显示前10-n 行数: 从文件头开始,显示指定行数
-v: 显示文件名

在这里插入图片描述

在这里插入图片描述





7.tail命令

既然有显示文件开头的命令,就会有显示文件结尾的命令。
tail 命令的基本信息如下。
命令名称:tail。
英文原意:output the last part of files。
所在路径:/usr/bin/tail。
执行权限:所有用户。
功能描述:显示文件结尾的内容。

格式如下

[root@localhost ~]# tail [选项] 文件名
选项:
/ / tail不加选项默认显示后10-n 行数: 从文件结尾开始,显示指定行数
-f: 监听文件的新增内容;

主要来看看 -f选项,其实tail -f 也没什么用

在 tail -f命令下按ctrl+c退出,不是按q键

监听就是如果我再开了一个终端,在另一个终端下我给这个文件里添加内容,我在本终端下能实时的看到他添加的内容,仅此而已

在这里插入图片描述
在这里插入图片描述





tail -f最重要的用途:动态地查看文件内容。如果我们想要动态地查看文件内容时,不要忘了这个命令



8.ln命令(link,链接)

在这里插入图片描述

8.1.文件的block块放这个文件的数据
8.2.目录的block块放这个目录的所有子文件的各个文件名和这个目录对应的i节点号。
8.3.每个文件的inode块里放这个文件的i节点号、时间、权限、位置(不保存本文件的文件名),/的i节点号会被初始化为一个值,永远固定

在这里插入图片描述

8.4. 正式讲ln命令

我们来看看 ln 命令的基本信息。
命令名称:ln。
英文原意:make links between file。
所在路径:/bin/ln。
执行权限:所有用户。
功能描述:在文件之间建立链接

格式如下
[root@localhost ~]# ln [选项] 源文件 目标文件
选项:
-s:建立软链接文件。如果不加“-s”选项,则建立硬链接文件
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
/ / 注意源文件在前,目标文件在后
/ / 不加选项,默认是硬链接
如何创建硬链接
[root@localhost ~]# touch cangls
[root@localhost ~]# ln /root/cangls /tmp/
#建立硬链接文件,目标文件没有写文件名,会和原名一致
#也就是/root/cangls 和/tmp/cangls 是硬链接文件
/ / 注意源文件在前,目标文件在后
如何创建软链接
[root@localhost ~]# touch bols
[root@localhost ~]# ln -s /root/bols /tmp/
#建立软链接文件
硬链接与软连接的特征

硬链接特征:
1.源文件和硬链接文件拥有相同的 Inode 和 Block
2.修改任意一个文件,另一个都改变
3.删除任意一个文件,另一个都能使用

4. 硬链接标记不清,很难确认硬链接文件位置,不建议使用
5.硬链接不能链接目录,压力太大,消耗资源太多
6.硬链接不能跨分区


①:硬链接的两个文件其实都指向源文件block块,只不过起了个别名,所以修改任意一个文件,另一个都改变;但删除任意的文件,另一个都能使用

②:硬链接最大的标记就是:两个文件是同一个i节点号,同事引用计数加了1,其他标记一概没有
在这里插入图片描述
在这里插入图片描述






软链接特征:
1.软链接和源文件拥有不同的 Inode 和 Block
2.两个文件修改任意一个,另一个都改变
3.删除软链接,源文件不受影响;删除源文件,软链接不能使用
4.软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变
5.软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文
件权限
6.软链接可以链接目录
7.软链接可以跨分区
8.软链接特征明显,建议使用软连接


①:软链接可以理解为windows下的快捷方式
②:比如把bcd文件软链接到/tmp/bcd_s (注意软链接必须写绝对路径)

③此时bcd_s文件的block块没有真实数据,它放的是源文件bcd的i节点号,我们根据这个i节点号就可以找到源文件bcd,所以bcd与bcd_s的i节点号是不一样的
在这里插入图片描述
④:也就是从tmp目录下进来,找到bcd_s,根据bcd_s找到bcd
tmp→bcd_s→bcd

⑤:如果是硬链接,tmp目录的block块放的是bcd_s的文件名,然后bcd_s的i节点号=bcd的i节点号,所以bcd_s其实就=bcd,tmp直接指向了bcd
tmp→bcd_s(bcd)






四.目录和文件都能操作的命令(默认都是-i 选项)

1.rm命令

rm 是强大的删除命令,不仅可以删除文件,也可以删除目录。
这个命令的基本信息如下。
命令名称:rm。
英文原意:remove files or directories。
所在路径:/bin/rm。
执行权限:所有用户。
功能描述:删除文件或目录

命令格式

[root@localhost ~]# rm [选项] 文件或目录
选项:
-f: 强制删除(force) 
-i: 交互删除,在删除之前会询问用户
-r: 递归删除,可以删除目录(recursive)



2.cp命令(复制不是链接,两者修改互不相关)

cp 是用于复制的命令,其基本信息如下:
命令名称:cp。
英文原意:copy files and directories。
所在路径:/bin/cp。
执行权限:所有用户。  功能描述:复制文件和目录

命令格式

[root@localhost ~]# cp [选项] 源文件 目标文件
/ / 注意源文件在前,目标文件在后,别搞反顺序了
选项:
/ / 记得-a选项就行,其他了解
-a: 相当于-dpr 选项的集合,这几个选项我们一一介绍
-d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i: 询问,如果目标文件已经存在,则会询问是否覆盖
-p: 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
-r: 递归复制,用于复制目录
/ / 复制目录记得加-r选项

①:默认是 -i 选项
②:cp -a 会使得目标文件与源文件一模一样(不止内容一样,各个属性(所有者、所属组、权限等)也一样)但它不是硬链接,因为链接文件的话,修改其中一个文件另外一个文件都会改变,但复制文件不会。

在这里插入图片描述
在这里插入图片描述





3.mv命令

mv 是用来剪切的命令,其基本信息如下。
命令名称:mv。
英文原意:move (rename) files。
所在路径:/bin/mv。
执行权限:所有用户。
功能描述:移动文件或改名

格式如下:

[root@localhost ~]# mv [选项] 源文件 目标文件
选项:
-f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-v: 显示详细信息
/ / 默认是 -i 选项
/ / mv剪切文件不需要加选项
/ / mv剪切目录也不需要加选项

在这里插入图片描述
在这里插入图片描述




五.基本权限管理

1.权限的介绍

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

[root@localhost ~]# ls -l install.log
-rw-r--r--. 1 root root 24772 114 18:17 install.log

第一列的权限位如果不计算最后的“.”(这个点的含义我们在后面解释),则共有 10 位,这 10位权限位的含义如下图所示
在这里插入图片描述
①:第 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”权限



2.基本权限命令

1.chmod命令

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

命令格式:

[root@localhost ~]# chmod [选项] 权限模式 文件名
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设定权限
/ / 注意是大写的R

权限模式

chmod 命令的权限模式的格式是“[ugoa][[±=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”的格式,我们来解释一下。
1.用户身份。
u:代表所有者(user)
g:代表所属组(group)
o:代表其他人(other)
a:代表全部身份(all)

2 .赋予方式
+:加入权限。
-:减去权限。
=:设置权限。

3.权限。
r:读取权限(read)。
w:写权限(write)。
x:执行权限(execute)。

①:设置权限的方式举例: chmod u=rwx,g=rw,o=rw 文件名/目录名
设置权限就是直接给u g o 赋予什么权限

②:给多个人员加权限:chmod g+x,o+r,g+w 文件名/目录名
减权限同理

③:在实际中不可能出现u的权限要小于g和o的情况
在这里插入图片描述
在这里插入图片描述



数字权限

数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权限的含义,但在实际中我们一般用数字权限,所以要牢牢掌握

4:代表“r”权限
2:代表“w”权限。
1:代表“x”权限。

常用权限

数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个。所有者的权限必须大于等于所属组和其他人的权限

1.644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限

2.755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。

3.777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患

在实际的服务器中不允许出现给文件或目录赋予777权限



2.chown命令,即可修改所有者也可修改所属组

chown 是修改文件和目录的所有者和所属组的命令,其基本信息如下。
命令名称:chown。
英文原意:change file owner and group。
所在路径:/bin/chown。
执行权限:所有用户。
功能描述:修改文件和目录的所有者和所属组。

格式如下:

[root@localhost ~]# chown [选项] 所有者:所属组 文件或目录
/ / .可以代替:
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设置权限

①:新建了用户,就自动建立了用户组(默认同名作为初始组)

②:普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。
普通用户可以修改所有者是自己的文件的权限

在这里插入图片描述在这里插入图片描述



3.chgrp命令,少用

chgrp 是修改文件和目录的所属组的命令,其基本信息如下。
命令名称:chgrp。
英文原意:change group ownership。
所在路径:/bin/chgrp。
执行权限:所有用户。
功能描述:修改文件和目录的所属组。



3.基本权限的作用

3.1.权限含义的解释

首先,读、写、执行权限对文件和目录的作用是不同的。

1.权限对文件的作用。

  • 读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令。

  • 写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。

  • 执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在 Linux 中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。




    2.权限对目录的作用。

  • 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行 ls 命令,查看目录下的内容了。

  • 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写(w)权限是最高权限。

  • 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行 cd 命令,进入目录

①:对目录有写权限,才能删这个目录。删这个目录下的子文件也需要有对这个目录有写权限
②:文件block块中没有文件名
③:上一级目录的block块中存放子目录的文件名




3.2.目录的可用权限

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

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

①:目录的可用权限至少为5
②:目录可赋予的权限只有0、4、7,赋4、2、6都没什么意义
③:对目录来讲,不要给其他人的权限赋予7,实际生产中严禁777!!!






4.Umask权限,知道有这么回事就行

当我们新建一个文件或目录后,系统会自动给他们赋予一个默认权限,那么这个权限是怎么来的呢?通过umask得来的

4.1 查看系统系统的umask权限,普通用户002,root用户为022

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

4.2 umask 权限的计算方法

我们需要先了解一下新建文件和目录的默认最大权限。

  • 对文件来讲,新建文件的默认最大权限是 666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。

  • 对目录来讲,新建目录的默认最大权限是 777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

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

  • 文件的默认权限最大只能是 666,而 umask 的值是 022
    “-rw-rw-rw-”减去 “-----w–w-”等于“-rw-r–r—”
  • 目录的默认权限最大可以是 777,而 umask 的值是 022
    “drwxrwxrwx”减去“d----w–w-”等于“drwx-r-xr-x





    注意:①:umask 默认权限的计算绝不是数字直接相减,且没有负权限,相减得到是个负数,那么就是没有权限
    ②:权限只有几个数:4、2、1以及它们三者相互相加得到的数,除此之外其他得到的数相当于0
    例如 umask 是 033 呢?
    文件的默认权限最大只能是 666,而 umask 的值是 033
    “-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r–r—”



4.3修改umask的值

进入配置文件:/etc/profile,找到umask,更改
注意:这是环境变量配置文件,里面保存了多个环境变量(包括umask),修改后会影响操作环境,所以不建议修改





六.帮助命令

一般用man,找不到了用info,help基本不用

1.man命令

man 是最常见的帮助命令,选项超级多。 也是 Linux 最主要的帮助命令,其基本信息如下。 命令名称:man。
英文原意:format and display the on-line manual pages。
所在路径:/usr/bin/man。
执行权限:所有用户。
功能描述:显示联机帮助手册

格式如下:

[root@localhost ~]# man [选项] 命令
选项:
-f: 查看命令拥有哪个级别的帮助
-k: 查看和命令相关的所有帮助
/ / man -k 的用处不大,它是查找所有帮助文档中只要含有这个命令的就给你列出来
/ / 上面列举的只是常用的选项

man命令的快捷键

在这里插入图片描述
在这里插入图片描述

man命令的帮助级别

man -k 基本不用!

在这里插入图片描述




①:先用 man -f 命令,查看此命令有哪些级别的帮助
②:再 man n 命令,进去看此命令对应的n级别的帮助

在这里插入图片描述





2.info命令

info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节 (info是一套书,可以通过一下快捷键来操作)
在这里插入图片描述




3.help命令

现在大多数命令(无论是shell内置还是外部命令)都可以用help 获取帮助
help 命令的基本信息如下。
命令名称:help。
英文原意:help。
所在路径:Shell 内置命令。
执行权限:所有用户。
功能描述:显示 Shell 内置命令的帮助。可以使用 type 命令来区分内置命令与外部命令
shell 是 Linux 的命令解释器

在这里插入图片描述

注意用法

命令 --help


4.type命令,用来查看命令是shell内置命令,还是外部命令

在这里插入图片描述

5.小tips

①:想知道命令在哪:whereis 命令
②:想知道用户是谁:whoami
③:想知道命令干啥的:whatis 命令
④:想知道当前在哪:pwd






七.搜索命令

1.whereis 命令

whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件,而只能搜索系统命令,如果找的是shell内置命令,肯定找不到这个命令在哪,但可以找到它的帮助文档。whereis 命令的基本信息如下。
命令名称:whereis。
英文原意:locate the binary, source, and manual page files for a command。
所在路径:/usr/bin/whereis。
执行权限:所有用户。
功能描述:查找二进制命令、源文件和帮助文档的命令
在这里插入图片描述



2.which命令

which 也是搜索系统命令的命令。和 whereis 命令的区别在于:
①:whereis 命令可以在查找到二进制命令的同时,查找到命令帮助文档的位置;
②:而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令
(别名就相当于一个小名,且which找不到帮助文档的位置,只能找到命令的位置)。
③:(对于所有用户生效)别名的配置文件在:/etc/skel/.bashrc

在这里插入图片描述

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





3.locate命令

搜索文件建议用locate,查找速度快,消耗资源少,而且不需要加搜索路径

3.1 基本用法

locate 命令才是可以按照文件名搜索普通文件的命令。

  • 优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db(要记数据库的位置),可以使用 updatedb 命令强制更新数据库。

  • 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件

locate 命令的基本信息如下。
命令名称:locate。
英文原意:find files by name。
所在路径:/usr/bin/locate。
执行权限:所有用户。
功能描述:按照文件名搜索文件

直接locate 文件名就可以,不需要加其他的东西

在这里插入图片描述


3.2 配置文件

①:locate命令没有找到内容的原因之一可能是数据库没更新,更新库:退出后重新登录或者输入命令updatedb
在这里插入图片描述
②:配置文件内容了解一下就行,但路径和名称都要记

③:locate找不到文件的另一个原因是配置文件的原因,它屏蔽掉了一些文件和目录

[root@localhost ~]# vi /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
#开启搜索限制,也就是让这个配置文件生效
PRUNEFS = "……" #在 locate 执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES = "……" #在 locate 执行搜索时,禁止搜索带有这些扩展名的文件
PRUNEPATHS = "……" #在 locate 执行搜索时,禁止搜索这些系统目录



4.find命令,更复杂的搜索命令

find 命令的基本信息如下。
命令名称:find。
英文原意:search for files in a directory hierarchy。
所在路径:/bin/find。
执行权限:所有用户。
功能描述:在目录中搜索文件。

4.1按照文件名搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
/ / 注意一下格式:搜索路径在前紧接着的是选项,最后才是搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索

注:可以用.号代表当前目录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

①:-inum的参数是i节点号
②:可以通过find -inum 搜索硬链接的文件,但其实他也确定不了哪个是源文件

4.2按照文件大小搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小: 按照指定大小搜索文件

这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件

find 命令的单位,默认为512字节
[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 或不写单位,则按照 512 Byte 搜索
 '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

在这里插入图片描述在这里插入图片描述

4.3按照修改时间搜索

Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间(Linux中文件没有创建时间!),我们也可以按照时间来搜索文件

如果后面是time,(atime、mtime、ctime)那么单位就是天,一般都是天
如果后面是min,(amin、mmin、cmin)那么单位就是分钟

在这里插入图片描述

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
/ / 访问:access
-mtime [+|-]时间: 按照文件数据修改时间搜索
/ / 信息:imformation
-ctime [+|-]时间: 按照文件状态(属性)修改时间搜索
/ / 状态:condition

这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说“[±]”时间的含义。
-5:代表 5 天内修改的文件。
5:代表前 5~6 天那一天修改的文件。
+5:代表 6 天前修改的文件。
在这里插入图片描述
在这里插入图片描述



4.4按照权限搜索,并不常见

命令格式如下:

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件,注意是刚好等于
-perm -权限模式:查找文件权限全部包含“权限模式”的文件,注意是全部包含
-perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件,注意是任意一个包含就行

注:
①+权限模式:所有者,所属组,其他 这三者的权限只要有一个权限比搜索的大或者等于就可以搜索到
②-权限模式:三个身份的权限都必须包含权限模式(至少大于等于)

比如:
-444:搜索u、g、o的权限都大于等于444的文件,如果是660的话则不可以搜索到权限为660的文件,因为0<4
+444:如果是660的话,可以搜索的到权限为660的文件

在这里插入图片描述



4.5按照所有者和所属组搜索,一般很少用

常见选项是-nouser

注:新建用户uid>500,搜uid和gid还真不常用

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件

按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。
只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在Linux 中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者

在这里插入图片描述
在这里插入图片描述



4.6按照文件类型搜索,可以用来排除干扰项

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件

在这里插入图片描述



4.7逻辑运算符

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非

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

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

2)-o:or 逻辑或 -o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立,find 命令就可以找到结果。例如:
[root@localhost ~]# find . -name cangls -o -name bols
./cangls
./bols
#在当前目录下搜索文件名要么是 cangls 的文件,要么是 bols 的文件

3)-not:not 逻辑非 -not 是逻辑非,也就是取反的意思。举个例子: 注:-not=!, !的左右两边都需要有空格
[root@localhost ~]# find . -not -name cangls
#在当前目录下搜索文件名不是 cangls 的文件

在这里插入图片描述



4.8 其他选项

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

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

①:这个选项的作用其实是把命令1的结果(保存在{}里)作为命令2的操作对象,用命令2处理{}里的内容
②:注意格式,有exec就必须有 \ ;
③命令2不识别别名
④:-exec不适合执行删除!!!建议用-ok



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

在这里插入图片描述





5.grep 命令:补充命令,匹配字符串

grep 的作用是在文件中提取和匹配符合条件的字符串行。
命令格式如下:

find查文件,grep搜数据

[root@localhost ~]# grep [选项] "搜索内容" 文件名
选项:
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
--color=auto: 搜索出的关键字用颜色显示

find 也是搜索命令,那么 find 命令和 grep 命令有什么区别呢?
1)find 命令
find 命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,find用的是通配符,而通配符是完全匹配(find 命令可以通过-regex 选项,把匹配规则转为正则表达式规则,但是不建议如此)。*

2)grep 命令
grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,grep用的是正则表达式,而正则表达式是包含匹配

3)通配符与正则表达式的区别
在这里插入图片描述
例:a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b
在这里插入图片描述

①:find是完全匹配的,比如找abc文件,他能准确地找到abc这一个文件
②:grep找,只要含有这几个字母的都能找到(包含匹配)
(这是因为正则表达式和通配符的原因造成的)


③:只要是操控文件名和目录名的命令都可操作通配符→用于完全匹配
④:用通配符文件名最好用“ ”括起来(通配符也可加到“ ”里)


⑤:任何一个字母加在正则符前什么都找不到
比如:在abc文件中找到含有a字母的数据
grep “a*” abc →它找到的是abc中全部的数据
因为正则表达式中*的含义:匹配前一个字符重复0次或任意多次。重复0次,其实就是相当于搜的是全部数据
在这里插入图片描述⑥:因为grep是包含匹配,它跟搜索的数据中字母顺序无关,只要有就行
⑦:如果要按顺序,必须加限位符(^,$,也可以是文本中的字符串)
⑧:正则是含有匹配!!!

在这里插入图片描述



6.管道符:补充命令(shell内置命令),搜索只能用grep

命令格式: 命令 1 | 命令 2
命令 1 的正确输出作为命令 2 的操作对象

等于-exec,但格式不能通用,且命令1的结果无论为什么,后面都变成了字符串

任何文件的结果都可通过 >> 保存到文件里

如 ll /etc/ >> abc (ll /etc/ 的结果保存到文件abc中)




1)例子 1:
举个例子,我们经常需要使用“ll”命令查看文件的长格式,不过在有些目录中文件众多,比如/etc/目录,使用“ll”命令显示的内容就会非常多,只能看到最后的内容,而不能看到前面输出的内容。
这时我们马上想到 more 命令可以分屏显示文件内容,可是怎么让 more 命令分屏显示命令的输出呢?

[root@localhost ~]# ll -a /etc/ | more

2)例子 2: 我想在命令 ll /etc/的结果中搜索 yum 的文件名,应该使用 find 命令?还是 grep 命令?用grep ```javascript [root@localhost ~]# ll -a /etc/ | grep yum ```

注:①:只要加了管道符 |,无论前面结果是什么,后面都变成了字符串
②:所以无论搜的是什么,一律用grep
③:find不能用管道符 |


3)例子 3: netstat 命令(CentOS 7 中,需要安装 net-snmp.x86_64,net-tools.x86_64 两个包才有此命令。7.5系统中已经自动安装)格式如下:
[root@localhost ~]# netstat [选项] / / netstat 日后会讲
选项:
-a: 列出所有网络状态,包括 Socket 程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用 IP 地址和端口号显示,不使用域名与服务名
-p: 显示 PID 和程序名
-t: 显示使用 TCP 协议端口的连接状况
-u: 显示使用 UDP 协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表
[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l #如果想知道具体的网络连接数量,就可以再使用 wc 命令统计行数

IP就相当于门牌号,端口就相当于收件人





7.命令的别名:补充命令

命令的别名,就是命令的小名,主要是用于照顾管理员使用习惯的。

用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件~/.bashrc

命令格式:
[root@localhost ~]# alias
#查询命令别名
[root@localhost ~]# alias 别名='原命令' #设定命令别名
例如:
[root@localhost ~]# alias ser='service network restart'
#用 ser 别名,替代 service network restart 命令

注:①:别名的优先级高于系统命令,如果重名了,可能导致系统命令消失,所以起别名前先敲一下这个别名看有没有效果

②:放在/etc下的配置文件对所有用户生效
③:放在~(home)目录下的则只对自己生效




8.常用快捷键:补充命令(一定要背!)

在这里插入图片描述

⑧:两下tab键:列出所有以当前字符开头的文件

⑨:字母打错了要删这个字母:ctrl+backspace


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值