Linux学习看这一篇就够了,超超超牛的Linux基础入门

引言

  小伙伴们,不管是学习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指令完成下列任务:

    1. 创建和编辑文件:
    • 在你的主目录下创建一个名为 project 的文件夹。
    • 在 project 文件夹中,使用 touch 命令创建三个空文件: file1.txt 、 file2.txt 、file3.txt
    • 使用 echo 命令,向 file1.txt 中写入“Hello, World!”。
    • 使用 echo 命令,向 file1.txt 中追加“Goodbye, World!”。
    • 使用 echo 命令,向 file1.txt 中追加“Good night!”。
    1. 复制和修改文件:
    • 将 project 文件夹复制为 project_backup 。
    • 使用 cat 命令和管道 | ,结合 grep 命令(假设你想筛选出包含“World”的行),将file1.txt中包含“World”的行合并到一个新文件 filtered.txt 中,将该文件放置在project_backup 文件夹下。
    1. 目录和文件操作:
    • 在 project_backup 文件夹中,创建一个名为 logs 的文件夹。
    • 在 logs 文件夹中,使用 touch 命令创建三个日志文件: log1.log 、 log2.log 、log3.log 和三个任意 txt 文件。
    • 将 project_backup/logs/log1.log 移动到 project 文件夹中
    • 删除 project_backup/logs 文件夹中剩余的日志文件。

结语

  有关Linux的基础就简单说到这里吧,其实还有一些进阶的知识,我们留在下一章,也有的小伙伴对Linux的学习并不用很深,有所了解到这就差不多了,这章的内容已经对一些基础指令都写进去了,大家可以点赞收藏加关注哦,小杨会持续给大家分享更好的文章的。
  都学到这里啦!给棒棒哒自己点个赞吧,好牛的!!!
  明天也要继续努力哟!!!冲冲冲!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米rdemi红米ax3000t刷机 20240707最新配套完整程序整理合集

小米rdemi红米ax3000t刷机程序地址: https://www.123pan.com/s/LA1bVv-EOzVv.html 小米路由器SSH密码计算器 https://www.1234f.com/fuwu/ax3000t/ 最新更新地址:https://www.1234f.com/fuwu/openwrt/ 依次输入如下命令: curl -X POST h…

Leetcode 295.数据流的中位数

295.数据流的中位数 问题描述 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: Media…

算法013:水果成篮

水果成篮. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/fruit-into-baskets/ 这道题题目很长,仔细阅读过后,我们其实可以简化成&#xff…

聚焦数字创新,定义影像未来

国际数字影像产业园在明确产业定位与发展方向时,应聚焦于数字影像、文创、媒体等新兴产业领域,以技术创新为核心动力、产业升级为保障、市场拓展为途径、国际化发展为方向,推动园区的持续健康发展。 作为园区的核心产业,数字影像产…

第二证券股市知识:股票填权是怎么回事?利好还是利空?

1、股票填权的含义 股票填权是指在除权除息之后的一段时刻内,假设多数投资者看好该个股,股票的价格超过除权除息的基准价就叫做填权。上市公司假设能持续分红,就会向市场传递积极信号,招引更多投资者买入,越来越多的投…

使用Livox-Mid360激光雷达,复现FAST_LIO(保姆级教程)

前面我已经完成了mid360激光雷达的驱动安装,octomap的复现,昨天我去把这俩在正式环境中实测了一下,效果不好,走廊转角没建出来,我查了一下,应该是TF的原因,但这部分我还不太懂,看到有…

云计算【第一阶段(28)】DNS域名解析服务

一、DNS解析的定义与作用 1.1、DNS解析的定义 DNS解析(Domain Name System Resolution)是互联网服务中的一个核心环节,它负责将用户容易记住的域名转换成网络设备能够识别和使用的IP地址。一般来讲域名比 IP 地址更加的有含义、也更容易记住…

2024世界人工智能大会:deepin引领AI与操作系统融合新时代

内容来源:deepin(深度)社区 7月4日,WAIC 2024在上海拉开帷幕。大会围绕核心技术、智能终端、应用赋能三大板块,聚焦大模型、算力、机器人、自动驾驶等重点领域,集中展示一批“人工智能”创新应用最新成果。…

【web前端HTML+CSS+JS】--- JS学习笔记03

一、JS介绍 可以在前端页面上进行逻辑处理,来解决表单的验证等问题,提升效率,直接在前端提示问题,减少服务器压力 应用1:可以做静态验证和动态验证(进行异步请求) 应用2:可以解析后…

学习数据库2

在数据库中创建一个表student,用于存储学生信息 查看建表结果 向student表中添加一条新记录 记录中id字段的值为1,name字段的值为"monkey",grade字段的值为98.5 并查看结果 向student表中添加多条新记录 2,"bob"…

鸿蒙开发小案例(名片管理))

鸿蒙开发小案例(名片管理) 1、页面效果1.1 初始页面1.2 点击名片展开1.3 点击收藏1.4 点击编辑按钮 2、实现代码2.1 DataModel.ets2.2 RandomUtil.ets2.3 ContactList.ets 1、页面效果 1.1 初始页面 1.2 点击名片展开 1.3 点击收藏 1.4 点击编辑按钮 2、…

百度、谷歌、必应收录个人博客网站

主要是给各个搜索引擎提交你的sitemap文件,让别人能搜到你博客的内容。 主题使用的Butterfly。 生成sitemap 安装自动生成sitemap插件。 npm install hexo-generator-sitemap --save npm install hexo-generator-baidu-sitemap --save在站点配置文件_config.yml…

【手撕数据结构】卸甲时/空间复杂度

目录 前言时间复杂度概念⼤O的渐进表⽰法小试牛刀 空间复杂度 前言 要想知道什么是空/时间复杂度,就得知道什么是数据结构。 这得分两层来理解。我们生活中处处存在数据,什么抖音热点上的国际大事,什么懂的都懂的雍正卸甲等等一系列我们用户看得到的&a…

鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】

URL字符串解析 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…

【K8s】专题六(5):Kubernetes 稳定性之重启策略、滚动更新策略

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、重启策略 1、基本介绍 2、资源清单(示例) 二、滚动更新策略 …

Vue框架引入

vue简介 1.1.vue是什么?Vue官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ vue是一套构建用户界面的渐进式javascript框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…

Splunk Enterprise 任意文件读取漏洞(CVE-2024-36991)

文章目录 前言漏洞描述影响版本漏洞复现POC批量检测-nuclei脚本 修复建议 前言 Splunk Enterprise 是一款强大的机器数据管理和分析平台,能够实时收集、索引、搜索、分析和可视化来自各种数据源的日志和数据,帮助企业提升运营效率、增强安全性和优化业务…

【MYSQL】如何解决 bin log 与 redo log 的一致性问题

该问题问的其实就是redo log 的两阶段提交 为什么说redo log 具有崩溃恢复的能力 MySQL Server 层拥有的 bin log 只能用于归档,不足以实现崩溃恢复(crash-safe),需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩…

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…

Java进阶----继承

继承 一.继承概述 继承是可以通过定义新的类,在已有类的基础上扩展属性和功能的一种技术. 案例:优化 猫、狗JavaBean类的设计 狗类:Dog 属性:名字 name,年龄 age 方法:看家 watchHome(),Gett…