C高级(Day21)

news2024/11/16 15:33:03

一、学习内容

  1. shell指令

    1. 学习回顾

      1. mkdir
        1. 创建目录

      2. cd
        1. 切换目录 cd \ cd . \ cd ..

      3. touch 、 vim
        1. 创建文件

      4. rm
        1. 删除文件 rm -r 删除文件/删除目录

      5. rmdir
        1. 只能删除空目录

      6. cp
        1. 复制文件

      7. mv
        1. 移动、重命名、剪切

      8. cat
        1. 显示文件内容

      9. ls
        1. 查看目录下的所有文件 ls -a 、ls -l

      10. pwd
        1. 查看当前工作目录的位置

      11. echo
        1. 类似于printf() 将信息打印在终端上

      12. > >>
        1. >搭配echo在文件中写入内容 ,>>在已有的内容后面追加内容

    2. 连接网络
      1. 查看是否连接网络
        1. 方法: 终端输入命令:ping baidu.com

        2. 未连接网络的状态

        3. 已连接网络的状态

      2. 连接网络
        1. 桥接网络

          1. 桥接网络连接,ubuntu和windows使用的不是同一个ip网址

            1. 方法一

            2. 方法二

        2. .NAT连接网络

          1. .NAT网络连接,ubuntu和windows使用的是同一个ip网址

            1. 方法一

            2. 方法二:

    3. 更新软件源

      1. 具体步骤
        1. 更新的原因:默认ubuntu的软件管理器是外国的,那么下载下来的软件,更新需要从国外进行拉取,速度慢,更新为国内的,速度快。

        2. 软件源的种类:清华源,阿里源,中科大源....

        3. 如何更新:百度搜素ubuntu的清华软件源....

      2. 整体步骤
        1. 1.查看/etc/apt/sources.list文件是否存在,存储的软件源
              需要把给文件备份
                  sudo cp /etc/apt/sources.list  /etc/apt/sources.list.save
                  
          2.修改 /etc/apt/source.list 源文件
                   打开:sudo vim  /etc/apt/sources.list  
                   删除原内容: ggdG   全文删除
                   替换新的软件源        
                   保存退出:wq
          3.配置文件生效
              sudo apt-get update           更新
              重启   

    4. 在线安装/离线安装

      1. 在线安装
        1. man apt-get (可以看具体的功能)

        2. apt-get

          1. 常用的 比如:source download install...

        3. 1. sudo apt-get install 软件名    在线安装软件
              eg: sudo apt-get install oneko
                 运行: oneko
                 后面运行:oneko &
                 杀死进程:kill -9 进程号
          2. sudo apt-get remove 软件名    卸载软件(配置文件包不被删除)
          
          3. sudp apt-get clean  清理软件包,默认是一下路径
              /var/cache/apt/archives
          4. sudo apt-get download   在线下载安装包到当前目录下
          5. sudo apt-get update 更新

      2. 离线安装 dpkg
        1. sudo dpkg  选项                  软件名
                      -i      --->install  离线安装
                      -r      --->remove    离线卸载(不删除配置文件)
                      -P      --->purge     离线卸载(完全卸载)

    5. 文件相关的指令

      1. head
        1. 功能:查看文件的前几行

          1. head 文件名     默认查看指定文件的前10行
            head -n 文件名  默认查看指定文件的前n行

      2. tail
        1. 功能:查看文件的后几行

          1. tail 文件名      默认查看指定文件的后10行
            tail -n 文件名   默认查看指定文件的后n行

      3. 管道符 |
        1. 功能:上一个指令的输出 作为下一个指令的输入

          1. 格式:  指令1  |    指令2     | 指令3 |  ...
            
            eg :   查看文件 /etc/passwd的第5行
                   head -5 /etc/passwd  |  tail -1  //该文件的前5行代码作为下一个指令的输入
                   
            eg: 查看文件/etc/passwd文件的倒数第2行
                tail -2 /etc/passwd | head -1 //该文件的后两行的第一行

      4. file
        1. 功能:查看文件详细信息

          1. file 文件名 查看指定文件的详细信息

      5. find
        1. 功能:查找文件 (类似于wimdows下的搜索文件操作)

          1. find 文件名   ---->查看当前目录文件/目录
            或者 find 文件名 -name    ---->查看当前目录文件/目录
            
            find 路径 -name 文件名   ----->查看指定路径下的文件
            
            find 多用于模糊查找,实际就是模式匹配 *
            find 指定路径 -name sh*
            find 指定路径 -name sh\*
            find 指定路径 -name "sh*"

      6. wc (word count)
        1. 功能:计算每个文件中的行数 单词个数 字节数

          1. wc 文件名   在终端回显指定文件的行数 单词个数 字节数 文件名
            wc -c 文件名 在终端回显指定文件的字节数 
            wc -w 文件名 在终端回显指定文件的单词数
            wc -l 文件名 在终端回显指定文件的行数

      7. grep
        1. 功能:实现字符串的模式匹配

          1. grep "查看的字符串" 文件名   
            
            grep -i "查看的字符串" 文件名    在文件中查找字符串忽略大小写
            
            grep -n "查看的字符串" 文件名    在文件中查找字符串显示行号
            
            grep -w "查看的字符串" 文件名    在文件中查找字符串以单词的形式
            
            grep "^字符串" 文件名   查找以该字符串开头的内容
            grep "字符串$" 文件名   查找以该字符串结尾的内容
            grep "^字符串$" 文件名   查找以该字符串开头和结尾的内容(该字符串独占一行)

      8. 通配符(通常可以和指令进行结合)
        1. 种类

          1. * 匹配多个字符

          2. ? 匹配一个字符

          3. [] 匹配一个字符,一般用于区间(有范围的)

      9. chmod

        1. 功能 : 修改文件权限

          1. 文件权限:
                r:读   w:写    x:执行     -:不具备权限
            文件权限的分类:
                u: user  文件拥有者
                g: group  文件拥有者所在组
                o: other  其他用户
                a: all  所有用户
                
            +:在原来的权限基础上增加权限
            -:在原来的权限基础上减少权限
            =:设置新的权限
            
            方式1: 使用字符方式修改
               chmod u+x,g+w  文件名
               chmod g-r 文件名
               chmod o=w 文件名
               
            方式2:八进制修改权限
            r w x
            1 1 1
            chmod 777 文件名
            chmod 664 文件名

      10. chown

        1. 功能: 修改文件属主以及文件的属组

          1. chown 修改属主名 文件名    (修改该文件的主名)
            
            chown :修改属组名 文件名    (修改该文件的组名)
            
            chown 修改属名: 文件名    (修改该文件的主、组名一样)

  2. 脑图

二、总结

学习内容概述

1. 虚拟机网络配置:

通过 `ping` 命令测试虚拟机与外部网络的连通性。学习如何使用 NAT 网络模式,并配置虚拟机的网络适配器以实现网络通信。

2. 共享文件夹设置:

通过虚拟机共享主机文件夹,学习如何在 Linux 虚拟机中访问主机系统中的文件,配置 `VirtualBox` 的共享文件夹功能,确保文件传输的便捷性。

3. 软件包管理工具:

学习如何使用 `apt-get` 命令在 Ubuntu 系统上安装、更新和删除软件包,并理解依赖关系处理的基本机制。

4. 内核模块的管理:

学习加载、卸载 Linux 内核模块的基本命令,如 `modprobe`、`lsmod` 等,掌握内核模块的基本概念,并能够在需要时手动管理内核模块。

5. Makefile 和编译过程:

理解 `Makefile` 在 C/C++ 项目中的作用,学习如何编写简单的 `Makefile` 文件,管理项目的多文件编译。

6. 系统调用与设备驱动开发:

学习如何在 C 中使用系统调用与设备驱动相关的操作,掌握文件描述符、设备文件等底层概念。

学习难点

1. 虚拟机与网络配置的调试:

配置虚拟机的网络模式,特别是 NAT 和桥接模式时,容易出现网络不通的情况,需要深入理解虚拟机的网络适配器和主机的网络配置之间的交互。

2. 共享文件夹的权限设置:

配置共享文件夹时,可能会遇到权限问题或文件不可见的情况,需要理解 Linux 文件系统的权限管理,并正确配置虚拟机用户的访问权限。

3. 内核模块的加载与卸载:

内核模块与系统内核紧密相关,错误的操作可能导致系统不稳定,因此如何安全、正确地加载和卸载模块是学习的难点。

4. Makefile 的编写:

对于大型项目,`Makefile` 的编写复杂且要求较高,特别是多文件编译和依赖关系的处理,容易出现编译错误或依赖问题。

主要事项

1. 网络配置和测试:

确保虚拟机能够与外部网络正常通信,特别是在跨网络模式的切换时,使用 `ping` 和其他网络诊断工具进行测试和排障。

2. 共享文件夹的使用:

通过正确配置共享文件夹,实现主机与虚拟机之间的文件共享,注意文件的读写权限,避免权限冲突问题。

3. 包管理器的高效使用:

使用 `apt-get` 等工具进行软件包管理,确保安装软件的正确性和依赖关系的解决,并能及时更新和清理不需要的软件包。

4. 内核模块管理:

在必要时掌握如何使用 `modprobe`、`rmmod` 等命令管理内核模块,并熟悉常见的内核模块问题处理。

5. Makefile 编写:

通过 `Makefile` 文件管理项目编译,掌握规则定义、变量使用等技巧,确保项目能正确、快速地进行编译。

 未来学习的重点

1. Linux 内核开发:

进一步深入学习 Linux 内核开发,理解内核空间与用户空间的交互,探索设备驱动开发和系统调用的实现原理。

2. 网络编程与调试:

掌握更多 Linux 下的网络编程知识,学习如何调试网络连接,理解网络协议栈的基本原理,特别是在虚拟化环境下的网络调试。

3. 高级 Makefile 使用:

继续深入学习 `Makefile`,理解自动化编译的高级用法,如模式匹配、自动依赖生成,以及如何通过 `Makefile` 实现复杂项目的高效构建。

4. 虚拟化技术深入研究:

学习虚拟化技术的底层实现原理,探索如 `KVM`、`Docker` 等技术的使用与优化,提升在虚拟化环境中的开发效率。

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

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

相关文章

kali的tplmap使用报错解决

问题 当我们直接使用kali下的tplmap时报错了。 Tplmap 0.5 Automatic Server-Side Template Injection Detection and Exploitation Tool Testing if GET parameter name is injectable Exiting: module collections has no attribute Mapping 这是因为tplmap要求的版本…

USB 3.1 标准 A 型到 USB 3.1 标准 A 型或 B 型的电缆组件

电线分配 下表定义了电线编号和电线的信号分配: Unshielded twist pair:非屏蔽双绞线Shielded differential pair:屏蔽差分对Braid:编织层Cable external braid to be 360 terminated on to plug metal shell:电缆外部…

文笔差只因没找对工具,这5个AI帮你变身写作高手!

在详细评估了超过二十种AI写作辅助应用后,我挑选了四款特别出色的工具来向您介绍。这些工具不仅能显著提高您的写作速度,而且在特定用途下能够创造出优秀的内容,从而避免了一些常见的AI写作缺陷。 通常情况下,对AI生成内容感到不…

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

目录 删除套餐 需求分析和设计 代码开发 根据id查询套餐 mapper层 Service层 ServiceImpl层 Mapper层 批量删除套餐 mapper层 Service层 ServiceImpl层 Mapper层 SetmealMapper.xml 修改套餐 需求分析和设计 代码开发 起售停售套餐 需求分析和设计 代码开发…

【智享AI直播官网】—智享AI直播源码部署—OEM贴牌!

【智享AI直播官网】—智享AI直播源码部署—OEM贴牌! 在当今数字化浪潮的推动下,直播行业正以前所未有的速度蓬勃发展,而AI(人工智能)技术的融入更是为这一领域注入了新的活力与无限可能。【智享AI直播官网】作为行业内…

gMLP:Pay Attention to MLPs--模型代码讲解

gMLP模型代码讲解 IntroductiongMLP网络结构Spatial Gating Unit (SGU) codegMLPBlockSpatial Gating Unit 基于MLP-Mixer 的改进… Introduction 总的来说,gMLP 在视觉和NLP领域的惊人有效性表明,自我注意并不是扩大机器学习模型的必要因素&#xff0c…

基于STM32的DHT11功能实现(操作时序)

1.引脚定义 Pin名称注释1VDD供电 3-5.5V2GND接地,电源负极3DATA串行数据,单总线4NC空脚,请悬空 2.数据格式 DHT11 采用单总线协议与单片机通信,单片机发送一次复位信号后,DHT11 从低功耗模式转换到高速模式&#xff…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块,支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输,还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

全国自闭症学校全寄宿制:为特殊儿童提供专业教育护理

在全国范围内,随着对自闭症儿童教育需求的日益增长,全寄宿制自闭症学校逐渐成为了一种重要的教育模式。这些学校以其专业的教育团队、全面的生活护理以及个性化的教学方案,为自闭症儿童提供了一个安全、稳定、充满爱的成长环境。在广州&#…

走进灯塔工厂,腾讯云携手业界专家共筑AI智造未来

现在,我国工业正处于从数字化向智能化转型的关键阶段,而人工智能、云计算和大数据等前沿技术正成为推动这进程的核心力量。以大模型为例,大模型通过高效处理和分析海量数据,帮助企业挖掘出有价值的规律和趋势,有效拓展…

使用双向链表和哈希表实现LRU缓存

在日常开发中,缓存 是一个非常常见且重要的技术手段,能够显著提升系统性能。为了保证缓存的有效性,需要实现一种机制,在缓存空间不足时,能够自动淘汰最久未被使用的数据。这种机制就是**LRU(Least Recently…

CSS文本格式化

通过 CSS 中的文本属性您可以像操作 Word 文档那样定义网页中文本的字符间距、对齐方式、缩进等等,CSS 中常用的文本属性如下所示: text-align:设置文本的水平对齐方式;text-decoration:设置文本的装饰;te…

面试题-部分

目录 1. 从输入url到渲染页面,中间经历了什么? 2. vue中的v-if和v-show有什么区别 3. 什么是Css中的回流(重排)与重绘 4. 介绍一下let、const、var的区别 5. 箭头函数和普通函数有什么区别 6. Css中常用的水平垂直居中解决方…

传输大咖49 | 科学研究院跨网文件交换高效、安全解决方案

在科学研究领域,数据的价值堪比黄金。科学研究所的日常运作依赖于大量的数据交换,高效的文件交换系统离不开内部合作和与外部合作伙伴的交流。然而,随着数据量的激增和网络环境的复杂性,传统的文件交换方法很难满足需求。本文将讨…

RK3568 android11 适配鼎桥MT5710-CN 5G模块

一,概述 鼎桥MT571X设备和Android系统主要通过USB接口进行数据通信,Android系统上的Linux内核需要根据鼎桥模块设备上报的USB设备接口加载USB驱动,USB驱动正确加载后,鼎桥模块才能正常工作。 Android系统中支持鼎桥模块设备相关的Linux内核驱动架构,如下图所示: 在Lin…

js删除emoji表情问题

emoji标签占位两个 &#xff0c;直接删除后一位会出现乱码符&#xff1b; 判断是否是emoji function isEmoji(char) {let code char.charCodeAt(0);return code>55296&&code<57343 } // 使用方法&#xff0c;传入单字符 console.log(isEmoji(1)); // false con…

Kubernetes 配置管理

一、什么是 ConfigMap&#xff1f; 在传统架构中&#xff0c;配置文件往往被保存在宿主机上&#xff0c;程序启动是可以指定某个配置文件&#xff0c;但是使用容器部署时&#xff0c;容器所在的节点并不固定&#xff0c;所以不能使用这种方式&#xff0c;此处在构建镜像时&…

【Redis】主从复制(下)--主从复制原理和流程

文章目录 主从复制原理主从节点建立复制流程图数据同步 psyncpsync的语法格式 psync运行流程全量复制全量复制的流程全量复制的缺陷有磁盘复制 vs 无磁盘复制 部分复制部分复制的流程复制积压缓冲区 实时复制 主从复制原理 主从节点建立复制流程图 保存主节点的信息从节点(sla…

感悟:糟糠之妻不下堂和现在女性觉醒的关系

古人说“糟糠之妻不下堂”真是害惨了中国女性&#xff0c;古代之所以有这一说法&#xff0c;大概是因为男子可以三妻四妾&#xff0c;妻子永远是正妻&#xff0c;也不需要讲究什么从一而终&#xff0c;更不会讲什么男德&#xff0c;只会要求女性学习女德、女训之类&#xff0c;…

性能测试:性能测试报告

性能测试报告是性能测试的产出物之一&#xff0c;它是对系统性能测试结果和数据的总结和分析&#xff0c;记录了系统在不同负载和场景下的性能表现和性能问题。性能测试报告提供了有关系统性能的详细信息&#xff0c;供项目团队、开发人员和其他相关利益相关者参考。 性能测试…