目录
1.Linux初识
1.1Linux课程介绍
Linux分为以下两部分:Linux系统--理论+实践,Linux网络--理论+实践。
Linux配置环境和语言:刚开始,配置环境是:Centos+vim+gdb,使用语言是C语言;到课程中后期配置环境:Ubuntu+VsCode,使用语言是C++。
提示:C++课程部分我已经学完,后面会把博客补上,前期的课程还是比较多的,所以这里先说一下以便后续的准备。
1.2Linux的发展
要了解Linux,先要理解一下操作系统,操作系统在电脑上一般是Windows,苹果,这两个主流的操作系统以及我们现在学的Linux也是一种操作系统,这些操作系统必须具有以下特点:更高效,更稳定,更安全。
Linux是开源项目,开源本质:发现问题且无利益冲突,相对于其他的闭源项目,Linux具有更高的安全性,因为开源代表它会有更多人维护它,从而有更大的优势!
那Linux为什么不被广泛使用?
主要原因是:(1)Linux比苹果晚;(2)Linux不是商业公司推动的,而是由开源组织推动。次要原因是:Linux并没有做出太多的图形化界面,在Windows和苹果上,我们所看到的图标这些都是图形化界面;因为没有图形化界面,所以Linux系统并不能吸引用户,而苹果为了赚钱,做的图形化界面很好,吸引了更多用户使用。
实际上,Linux不做这个图形化界面就是因为图形化界面用处不大,有资源浪费,而Linux只要保证有人用就行,所以综合来看Linux不被人了解也是很正常的!
为什么我们要学习Linux呢?
主要是为了找工作,因为企业几乎一定会选择Linux系统的!开源的Linux大多是免费的,而且Linux还稳定并且安全,否则如果用那些其他的操作系统,用户数据可能就被泄漏了。
1.3Linux版本
(1)商业化发行版:CentOS(大部分企业),ubuntu(学校、学生学),主要是生产厂商对操作系统进行定制,操作系统源代码底层差不多一样,只是CentOS匹配的人是大部分企业,而ubuntu则为学生罢了,所以我们用的发行版本在一定程度上是类似的,我们下载的镜像以配置后面的环境与其他的版本也类似。
(2)Linux的技术发行版:我们可以在Linux官网看:https://www.kernel.org,打开后界面这样:

在官网中可以下载各个版本的源代码,建议下载这个链接的源代码:
https://www.kernel.org/pub/linux/kernel/v2.6/
这个链接里面有很多种源代码,不过这些我们先不着急下载。
如果要下载的话,建议用不是最新的版本,因为最新版本可能问题比较多(有些用户使用后会提出问题,然后会改进代码这种,所以等他们把问题解决差不多再下最好,也就是说越老版本越稳定)!
1.4Linux软件的安装和配置
Windows是支持双系统的,所以各位可以试着搜一下双系统的安装方法,但是这个方法是不建议使用的,因为它可能导致各种问题,包括但不限于以下几种(deepseek搜索结果,请仔细甄别):

所以这种方式非常不建议使用!不过如果真的想尝试的,可以自己去网上搜索教程。
第二种就是用vmware虚拟机,也可以使用vitualbox+操作系统的镜像(CentOS71 ubuntu 20.04和22.04),这个对电脑的要求还是不低的,而且用虚拟机的话,后面做项目可能会导致电脑很卡,下载时电脑也比较卡,而且之前我尝试过下载虚拟机,差不多花了7个小时时间(没成功),主要是镜像下载起来很麻烦,所以需要使用虚拟机这种方式不仅需要电脑好,可能还需要有充足的时间,不过大部分电脑还是能装虚拟机的。综合来看,虚拟机也是一个比较推荐的方式。
第三种就是使用云服务器,这种是最推荐的一种方式,这个我不方便透露太多细节,需要的可以自己去搜如何安装,这种方式是一个对电脑性能要求不高且安装速度比较快的一种方式,但是可能需要花一点钱,不过折算下来一年也不会多少。
以上的方式,最终要用Linux登陆:XShell,这个需要各位搜索XShell并安装最新版本的XShell,配置好环境后以后就只用在XShell上打开就行,经过上述步骤后就可以看到如下界面了:

安装的具体细节我这里不做过多讲解,只提供方式。
我的是用云服务器,使用的镜像是ubuntu 22.04,如果是其他的Linux版本(CentOS)可能会在运行结果上有差别,但是差别不大。
1.5Linux的用处
在Linux的课程介绍提到过,Linux是很多公司使用的操作系统,所以我们为了找工作需要学它,以下是Linux的用处:
1.进行命令行操作:
cpp
root@lavm-dzlb5y1t8a:~#
这是命令行,我们在后面输入字符,并按回车就可以查看该命令行运行的结果。如下示例是我创建一个名为code.txt的文件后删除code.txt的代码:

其中我们知道有root@......这一行代表命令行,而没有这个的则代表输出结果,其中root@......这一行是自动写出来的,#后面则是我执行的操作。
所以这是我们程序员使用Linux比较多的地方:命令行操作。
2.支持编程
比如我可以在Linux里面运行C语言代码,类似这样:

我们敲下回车后会进入以下界面:

我们就可以在这个界面编写C语言代码了,比如,我们输入以下代码:
cpp
#include<stdio.h>
int main()
{
printf("hello Linux\n");
return 0;
}
在这操作之后,我们按下Ctrl+X后再按Y,再按回车即可回到原来界面:

我们再输入gcc code.c回车并./a.out回车会有如下结果:

其实Linux确实可以运行其他语言,只是默认是C++而已,但是需要安装对应语言的安装包,这个感兴趣的可以自己去了解一下,因为这里涉及的知识点太多了,不方便讲。
所以Linux也是支持编程的,我们之后做项目可能会用到。
3.Linux支持系统和网络
我们输入whoami,按下回车就会有root这个结果:

这个代表我们当前用什么账号登录的该Linux系统,其实我们还可以在XShell新增用户,也就是说后面我们可以同时拥有很多账号,但是这个操作在我们日常也不怎么使用,不过我们在后续的学习过程中需要了解这个东西的用法。
2.Linux基础指令
2.1ls指令
语法:ls [选项] [目录或文件]
其中ls代表命令,[]代表这个东西可有可无,也就是说,我可以直接执行ls操作;也可以ls后接选项而不接目录或文件;还可以ls后接选项又接目录或文件。
功能:对于目录,该命令列出目录下的所有子目录与文件;对于文件,将列出文件名以及其他信息;若ls后没接任何目录或文件,则列出当前所处目录下的所有文件。
比如,我们在没有新建文件12.12的时候,执行ls操作,回车,得到如下结果:

这些代表我所在目录下的所有文件,但是如果我新建一个code.c的文件,再执行ls操作:

如果我们进行ls操作后接code.c文件,则会出现如下结果:

这个只列出了文件名,没有其他的信息,但是我们可以接一些其他选项从而能显示出其他信息。
不过在这之前我们可以先建一个目录后,再进入目录创建一部分文件演示另外一个功能:

先别管这些操作的具体含义,mkdir代表我创建了一个名字为12.12的目录,然后cd /root/12.12代表我进入到12.12这个目录。
如果我们直接ls的话,那么就会出现如下结果:

因为12.12这个是目录,而我们没有在它下面创建任何一个文件或者目录,所以,连一行都不会显示!
按照刚刚的方法,我们可以再创建名为hello的目录和名为code.c的文件:

这样我们可以发现ls就有结果了,因此我们还会发现另外一个特点:普通文件会显示成白色(无色),而目录会显示成蓝色。
那么,如何删除这些文件和目录,并回退到之前的操作呢?
我这里就只写代码了,这些操作后面会讲解的:

通过这些操作我们可以发现,在12.12这一个目录下已经不存在任何子目录或者文件了。
如果想回退到之前的路径(位置),可以这样操作:cd /root,我们可以通过ls来查看是否真的回退了:

因此我们又可以推出另外一个结论:12.06、12.12、code.c、d1都是root目录下的文件或子目录,也就是说,root也是目录!
接下来我们就可以讲ls后面的常用选项了,记住是:常用选项!不是全部选项!
2.1.1-l选项
用处:对于文件,列出文件的详细信息;对于目录,则列出该目录下所有文件以及子目录的详细信息。
例如,我们可以进行如下操作ls -l,结果为:

我们当前所处位置是在/root,这里能列出root目录下的所有文件和子目录的详细信息,那么如果不在该位置如何查询呢?
下面例子中,我们先到/root/12.12然后再列出/root的文件的详细信息的操作:

也就是说其实我们完全可以在ls -l操作后接一段路径(即文件或目录的位置),就可以直接得到该文件或者子目录的详细信息。
如果我们接一串文件的路径呢?
下面示例展现了当我们接/root/code.c文件后的结果:

可以看出,与之前的目录输出结果不同,它还会列出该文件的文件名。
实践讲完了,我们可以了解一下理论知识。
如果我们在Windows下新建一个空文件,那它会不会占据磁盘空间?
新建一个文件,显示为0kB,它代表的是文件的内容为空,如果我们理解它不占空间的话,那么实际上,我们刚刚ls -l /root/code.c是不会显示出任何内容的。也就是说,如果说文件只包含文件内容的话,那么这个说法是不对的!
所以说我们现在要重新再理解一下文件这个名字的含义:
文件名、文件修改时间、文件类型等等,我们都可以统称为文件属性,在我们创建文件时,这些文件属性就自动包含进去了,而在计算机中 属性 也算数据,所以,属性也要占据磁盘空间!换句话说,文件=文件内容+文件属性。
之后我们会对文件进行写入,追加,删除这些操作,而这些操作有两类:(1)对文件内容进行操作;(2)对文件属性进行操作。后面的touch指令会对文件属性进行操作,而cp和echo指令会对文件内容进行操作。
2.1.2-a选项
用处:列出目录下的所有文件,包括以.开头的隐藏文件。
比如,我们可以对/root进行ls -a操作:

我们需要先cd /root回到/root这个路径下,然后进行操作;或者直接ls -a /root也可以:

那么,如果我们不小心对文件进行-a操作会怎么样?
以下是我们对/root/code.c进行ls -a的操作后的结果

可以看到,它会输出该文件的路径。
如何理解-a操作?
-a可以理解成-all,也就是说-a可以列出所有文件,如果路径本身是文件,那么就列出该文件的(绝对)路径。
后面还有一些指令需要前置知识,所以等到合适的时机会进行讲解的,以后的指令也基本这样
2.2pwd指令
语法:pwd [选项]
功能:显示用户当前所在的目录
如:我们输入pwd有:

若我们进入/root/12.12则有:

pwd后面也可以接选项,但是都不常见,所以在这里就不多说了,后面用到再说!
3.总结
Linux是一个比较难学的一个东西,它比较抽象,但是只要肯努力,Linux一定会被你们拿下的!
