【Linux入门】工具篇


前言

本章主要讲述Linux权限的概念,以及Linux项目的调试器gdb的使用,Linux项目自动化构建工具 - make/Makefile(makefile)...

一、Linux的权限

在Linux当中权限分为“人的权限”与“文件的权限”

1.人的权限

 人的权限指的通常是两种状态:1.超级用户,2.普通用户
 超级用户基本不受任何限制,logout退出超级用户。
 普通用户在linux能做的事情有限。
命令提示符的表现:超级用户为“#”,普通用户为“$”。

在这里插入图片描述


2.文件的权限

我们先思考这样一个问题,文件的权限是为了什么?
当我写了一个文件,我需要与你协同合作…
当我和你处于竞争关系,我写的代码不希望给你看见…
当我是leader,我希望将这个文件给你看看,让你学习,但不希望你修改…

因为有需求,所以我们的权限分为多种

2.1 : 文件访问者的分类(人)

  • 文件和文件目录的所有者:u -->user
  • 文件和文件目录的所有者所在的组的用户:g -->group
  • 其他用户: o -->other
    在这里插入图片描述

2.2:普通文件基本权限:

1. r/4 (读):对于文件而言,具有读取权限的内容
2. w/2 (写):对于文件而言,具有改变文件内容的权限
3. x/1(执行):对于文件而言,具有是否有权限执行文件。

在这里插入图片描述
当前我们有一个test.c的文件,它的功能就是打印hello linux,我们是这个文件的user,所以说我们有写读的权限,我们可以通过命令chmod来改变文件的权限。以加多一个x(执行)为例。chmod u+x test.c

在这里插入图片描述
结果看到就是test.c变绿了,也就是变成可执行的。同理改变其他ugo的文件权限,还有a表示所有用户!!

小测试:可以测试用echo往文件写,cat把文件打印出来,看看对应都需要什么权限。


3.文件掩码:
通常目录的起始权限:777,普通文件的起始权限为666,这些可以通过umask设置,umask当中对应二进制出现的,在新建的文件当中对应位置为0,也就是“掩饰”掉了这些位置。

  • 超级用户文件掩码默认为:0022
  • 普通用户的文件掩码默认为:0002

如0002,一般我们只关心后面的三个数002,对应u,g权限不变,而o-写的权限。


3.目录的权限

  • 若要在目录下创建文件,需要w权限。
  • 若要在目录下读取它的文件列表,要r权限。
  • 若要进入一个目录要什么权限,x权限。

其中如果目录没有x权限,那么即使你有w,r权限也无法在目录下做对应的工作了!
在这里插入图片描述
上图,当你即使有其他权限也基本上对目录有任何影响,删除目录也如此,删除目录需要递归到目录中当中删除一个个文件。


4.粘滞位的作用

有这样一种场景,当root有这样一个目录,目录下有一个文件,你没有这个文件的读写执行,但是你想试试能不能删,让我们试一试

在这里插入图片描述
在上面这种情况我们发现我们处在other当中没有w的权限(ll -d …/1),于是我们不能够删除目录下的文件。我们目录加上w权限给o加上w颜色变深
在这里插入图片描述
也就是说,我们的其他人的目录下的文件,一旦我们拥有w权限,我们可以在别人的文件夹里删别人的文件!这合理吗?

解决方案:添加粘滞位/不给other写权限
指令:chmod +t 文件名
这里当中的t覆盖了x的位置,但是是具有x的功能的,因为如果没有x,进入不了目录
在这里插入图片描述


二、yum

1.软件初理解

Linux的软件包管理器yum,通常linux有三种安装软件的方式:

  • 源码
  • rpm包
  • yum命令行

由于yum能帮我们解决依赖关系,他是一个命令/工具 -->(配置文件),当中指令了我们应该去哪里下载资源,所以我们是日常使用的比较多的。

2.通常使用

比我需要下载一个lrzsz(用于linux和windows通过xshell互传文件),我们可以先通过grep list | grep lrzsz

查找:yum list | grep lrzsz(通过管道过滤掉我们不需要的)
在这里插入图片描述
安装:sudo yum install lrzsz
在这里插入图片描述

卸载: sudo yum remove lrzsz在这里插入图片描述

3.安装扩展源和更新yum源

在这里插入图片描述
下面扩展的安装只需要yum install -y epel-release
而更新yum源:

  • 需要你先将这个Centos-Base.repo备份一下(移到其他地方)
  • 百度Centos7 更新yum源,然后wget下载一个centos7的yum源,然后重命名成Centos-Base.repo,然后放到/etc/yum.repos.d这个路径下
    在这里插入图片描述

三、make/makefile

make是一条指令,makefile是一个文件,解决了依赖关系和依赖方法,并且自动化编译,一旦写好了这个文件,只需要一个make命令,整个工程就能够完全自动化编译。
假设我们有一个test.c文件,那么我们要的目标文件test就是左边,加上冒号之后右边是他的依赖文件,他所依赖的就是test.c,这里就完成了自动化构建,那么自动化清理呢?
在这里插入图片描述
在这里插入图片描述

1. .PHONY

其中的.PHONY可以认为是一个定义伪目标的过程,伪目标的性质就是每次他都会被执行。
接下来解释一下每次都执行的意思
make:第二次执行时会报需要被更新的错误,它内部根据文件是否被修改(修改)然后来判断文件是否被跟新,因为文件的编译是需要大量时间的(工程大的时候)在这里插入图片描述
make clean:这个每次都能执行,因为删除并不会消耗什么时间在这里插入图片描述
当然.PHONY:test也是没问题的,但是不推荐这样子写。
makefile默认生成第一个可执行程序,所以make test/make在上面都是可以正常运行的,但是当我们把clean和test换个位置(make)就不会执行我们想要的了

在这里插入图片描述

2.其他表示方法(特殊符号)

一般目标文件:依赖列表也可以用以下的方法表示
在这里插入图片描述

3.依赖多个文件时

在这里插入图片描述


总结

第一次linux的博客就写到这里啦!!!

Guess you like

Origin blog.csdn.net/weixin_52344401/article/details/121335884