引言
小伙伴们,不管是学习c++还是学习其他语言在我们学的路上都绕不过操作系统,而且,老生常谈的Linux更是每个计算机人的必修,那么我们对Linux的了解可能只是从别人那听到的简单的这个系统很牛,巴拉巴拉的,但是我们还是不太懂,那么今天我们就来学习有关Linux的基础。
Linux
了解Linux
我们先从一个故事来简单了解一下Linux的由来吧。
从前有一个叫林纳斯的小伙子,他很喜欢电脑,但是对当时那些要花大价钱才能用的操作系统不满意。于是,他决定自己动手,丰衣足食,就自己写了一个操作系统的核心部分。这个核心部分,就是我们今天说的Linux内核。
林纳斯把这个内核放在网上,说:“嘿,大家一起来玩吧,你们可以随便用,随便改。” 结果,一大群人被吸引过来,他们觉得这个主意太酷了,就开始帮忙一起写代码,一起改进这个系统。
这些人来自世界各地,他们通过网络聚集在一起,形成了一个强大的社区。他们不仅把Linux做得越来越好,还做了很多基于Linux的操作系统,比如Ubuntu、Fedora等等,让普通人也能轻松使用。
因为Linux是大家共同创造的,所以它的代码是开放的,这意味着任何人都可以看到它,修改它,甚至拿去卖。这种开放的态度让Linux变得非常强大和灵活,现在几乎所有的互联网巨头,比如谷歌、Facebook,都在用Linux来搭建他们的服务器。
所以,Linux不仅仅是一个操作系统,它还是一群人共同协作、不断创新的故事。
有关Linux的故事帮助大家知道它是怎么来的,如果小伙伴们对Linux由来想了解的更清楚一点,大家可以百度或者谷歌搜索一下,那么现在都有哪些Linux的发行版呢
Linux发行版
- 1、CentOS 7
红帽(Redhat)组织于2014年收购了CentOS,现在的CentOS是红帽在维护。
主要用在服务器上- 优点:稳定性好,有专业团队维护,适用面广
- 缺点:已经停止更新了,不太适用于普通用户
- 2、Ubuntu
- 应用面最广的LINUX发行版,适合普通用户使用。
- 每年会在10月和4月发布两个版本,其中偶数年的四月会发布LTS(长期维护版本),一般的LTS版本会
维护5年。今年发行的24.04 LTS有了Ubuntu pro的名字,宣布维护12年。
- 3、其他的类Unix系统
- ArchLinux、Debian、FreeBSD
Linux文件系统
文件系统会使用树状结构对所有硬盘上的文件进行管理,这个管理系统就叫文件系统。在windows下,每个盘符下都是一个树状结构,以盘符根,各盘符独立;
而在LINUX下,只有一个树状结构,所有的文件和目录全部挂在根目录下。
- 重要目录:
1. /homehome路径下,放着所有用户的主目录,即每个用户的私人文件夹
2. /rootroot用户的主目录
3. /etc系统和各种应用程序的配置文件
4. /usr/usr/local : 用于存放用户自己安装的一些应用程序的文件/usr/bin : 用于用户自己安装的一些指令
- 路径:
/ :根目录,所有的文件和文件夹都挂载在根目录下~ :主目录,用户的自定义空间,通常主目录在/home下. :当前路径.. :上一级路径,通常用于相对路径绝对路径:指的是从根到自己的路径,可以用 pwd 指令抓取。
相对路径:指的是从自己到待跳转目标的路径
软件下载与环境配置
-
虚拟机VMware
VMware作为虚拟化技术的代表软件,可以虚拟整个操作系统供我们学习和使用,会单独搭建环境而不会因为操作失误而影响我们的主机,同时在虚拟机上安装Linux系统会比在主机上安装更方便。虚拟机安装链接:点击附件网盘链接 提取码:h094
-
CentOS7系统
在学习一门新东西的时候我们往往会从最老的开始学起,因为越是老软件,老系统,用户使用的时间越长,大家才会对其研究越深,研究资料也会越多,方便我们学习。下载链接:点击附件网盘链接 提取码:18c4
装载步骤:
1.打开虚拟机并点击创建新的虚拟机,然后下一步。
2.找到刚下好的CentOS7并选择安装,点击下一步。
3.填写用户名和密码,为了方便我们学习,我们的密码建议和小杨一样设置为123
然后点击下一步。
4.修改虚拟机名称(不改也行)并设置存放位置,点击下一步。
5.设置虚拟磁盘大小,建议20G,点击下一步。
6.点击完成,完成创建虚拟机并开机
7.当界面显示如图所示时,表示已成功进入虚拟机
8.打开虚拟机后右键桌面并点击Open Terminal
,这下我们就可以开始我们对指令的学习了。
- 安装编译器
在命令框输入如下命令:
sudo yum install -y gcc
sudo yum install -y gcc-c++*
输入后如图所示等待即可,第一条是删除指令,由于做示范,小杨特意把之前的下载好的删掉的。
下载完成后命令框的提示行会回闪
- 建立root权限用户
用vim编译器打开sudoers文本可以看到所有用户
输入如下命令
sudo vim /etc/sudoers
用 su root
切换超级用户,并用vim打开上述文件,复制第100行到101行,将刚刚复制出的那一行的,这个操作可以看下边对vim操作的注解。
root
改成自己的用户名,即可直接用sudo获取管理员权限
如图所示
- 切换阿里云镜像
输入以下指令,这是我在学习过程中使用的镜像,小伙伴们可以试试,这个镜像可以加速我们稍后下载文件或者软件的速度。
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
yum工具和vim工具
-
CentOS下的yum工具
yum是一个CentOS下的应用程序,可以用来自动安装软件,以gcc为例指令如下:
sudo yum install -y gcc
-
vim工具
vim工具是Linux自带的文本编辑器,vim下一共有三种模式,进来以后是普通模式。
普通模式:在这个模式下可以对文件进行翻阅、复制粘贴、跳转等操作。
末行模式:也叫命令模式,可以执行一些复杂的指令,如查找替换、设置行号、保存退出等。
编辑模式:在这个模式下可以自由编辑文本- 如何切换三种模式:
普通模式->末行模式:直接输入指令即可
末行模式->普通模式:删除指令即可
普通模式->编辑模式:按i,其他方法无需记忆(O/S)
编辑模式->普通模式:按Esc - 普通模式下的常用指令
- 如何切换三种模式:
yy:复制一行%yy:复制n行dd:剪切一行%dd:剪切n行p:粘贴gg:跳转到开头%gg:跳转到第n行开头u:撤销
- 末行模式下的常用指令
:w:保存文件:q:退出:wq:保存并退出:q!:强制退出:wq!:强制保存退出:set nu:显示行号:set nonu:关闭行号显示/字段:查找该字段,按n下一个
:s/字段1/字段2/g 查找字段1替换成字段2
:%s/字段1/字段2/g 查找所有的字段1替换成字段2
基础命令与必备参数
命令的参数:
- 命令后面可以跟上一个 - 来表示后面要加一个短参数,具体每个命令可以加什么参数可以参考 man 指令里的结果
- 多个参数可以写在一起
man
man
指令是Linux下的一个帮助菜单,后面可以跟上一个词条,这个词条可以是一个命令,也可是一些C语言的函数
ls
列表显示命令,用于列表显示当前文件夹下的内容
※文件夹是用蓝色显示的
ls
指令的后面可以跟一个路径,表示显示指定路径的文件信息。
- 重要参数:
-a :显示隐藏文件
※在linux下,以 . 开头的文件叫隐藏文件-l :列表显示详细信息
cd
cd
指令用于跳转路径。
cd
后面可以跟绝对路径或者相对路径去跳转到目标路径下。
cd
如果后面什么都不跟,则回到主目录
cd
后面如果跟了一个 - ,表示后退,但只能后退一步
mkdir
创建一个空文件夹
mkdir
后面可以跟多个文件夹名,可以一并创建
- 重要参数:
-p :可以递归创建空文件夹,例如 mkdir -p a/b/c/d 的意思就是,
创建空文件夹d,但如果其父目录不存在,则递归创建a、b、c后,再创建d
rmdir
删除一个空文件夹
rmdir
后面可以跟多个文件夹名,可以一并删除
※rmdir
只能删除空文件夹
touch
touch
命令可以创建新文件,空文件,也可以用来改变文件最后更改时间
cat
抓取文件内容
重要参数:
-n :可以显示行号
cp
复制文件,基本格式是 cp A B
功能1:将文件创建备份
如果A、B均不是目录且A文件存在,则含义为将A复制成B。
功能2:将文件复制到指定目录
如果A不是目录且A文件存在,B是一个存在的目录,则含义为将A复制到B里
※ cp
无法复制目录,当A是目录时会报错
- 重要参数
-r
:允许cp复制目录
-f
:复制时不经过询问直接复制
复制目录,基本格式是cp -r A B
功能1:将目录创建备份
如果A时目录、B不是一个存在的目录,则含义为将A复制成B。
功能2:将目录复制到指定目录
如果A是目录且A目录存在,B也是一个存在的目录,则含义为将A复制到B里
※cp
的核心是判断B是否是已经存在的路径。
mv
移动文件或目录,基本格式是 mv A B
功能1:给目录或文件重命名
如果A和B都是文件或都是路径,且B不存在,则意味着将A改名成B
功能2:移动目录或者文件
如果B是已经存在的路径,则意味着是将A(无论是文件还是目录)移动到B里
rm
删除文件,rm后可以跟一个文件列表,表示删除多个文件
- 重要参数
-r
:允许rm删除目录
-f
:删除时不经过询问直接删
Linux的C/C++代码
基本方法:
1、使用vim编辑代码
2、使用gcc/g++编译代码
3、用 ./a.out
运行
补充:
gcc
的部分参数
-o
:后面跟一个文件名,表示编译出来的文件命名为这个文件名
-g
:表示编译为debug模式,可以用来调试
※加了-g
参数后,用gdb调试时可以看到代码
重定向
把原本要输出到屏幕上的东西输出到文件去
重定向符号 >
,例如ls > 1.txt
就是将ls的输出结果直接放到文件1.txt中,不再显示在屏幕上
※ 重定向时,如果文件已经存在,则会覆盖,不存在则创建
如果想要追加,那么用 >>
即可
※ 向屏幕输出的耗时远高于向文件输出
管道符
管道符的作用就是把上一条信息的内容经过管道处理后丢出来然后做接下来的操作
管道符号 |
管道常用功能:
less
:用less
软件打开文件,可以翻页预览
tail/head
:只要尾10行或者头10行,可以加-n
参数并指定行数()
grep
:筛选出包含某个指定对象的行,可以加-v
参数反向选取,即不包含某个关键字的行
例如: grep "guanjianzi" 1.txt | cat 1.txt >2.txt
作业练习:使用Linux指令完成下列任务:
-
- 创建和编辑文件:
- 在你的主目录下创建一个名为 project 的文件夹。
- 在 project 文件夹中,使用 touch 命令创建三个空文件: file1.txt 、 file2.txt 、file3.txt
- 使用 echo 命令,向 file1.txt 中写入“Hello, World!”。
- 使用 echo 命令,向 file1.txt 中追加“Goodbye, World!”。
- 使用 echo 命令,向 file1.txt 中追加“Good night!”。
-
- 复制和修改文件:
- 将 project 文件夹复制为 project_backup 。
- 使用 cat 命令和管道 | ,结合 grep 命令(假设你想筛选出包含“World”的行),将file1.txt中包含“World”的行合并到一个新文件 filtered.txt 中,将该文件放置在project_backup 文件夹下。
-
- 目录和文件操作:
- 在 project_backup 文件夹中,创建一个名为 logs 的文件夹。
- 在 logs 文件夹中,使用 touch 命令创建三个日志文件: log1.log 、 log2.log 、log3.log 和三个任意 txt 文件。
- 将 project_backup/logs/log1.log 移动到 project 文件夹中
- 删除 project_backup/logs 文件夹中剩余的日志文件。
结语
有关Linux的基础就简单说到这里吧,其实还有一些进阶的知识,我们留在下一章,也有的小伙伴对Linux的学习并不用很深,有所了解到这就差不多了,这章的内容已经对一些基础指令都写进去了,大家可以点赞收藏加关注哦,小杨会持续给大家分享更好的文章的。
都学到这里啦!给棒棒哒自己点个赞吧,好牛的!!!
明天也要继续努力哟!!!冲冲冲!!!