Linux第二课:LinuxC高级 学习记录day01

0、大纲

0.1、Linux

软件安装,用户管理,进程管理,shell 命令,硬链接和软连接,解压和压缩,功能性语句,结构性语句,分文件,make工具,shell脚本

0.2、C高级

函数指针,指针函数,函数指针数组,c语言补充(枚举,共用体,存储类型,递归函数)

0.3、课程介绍

0.3.1嵌入式系统

        把软件嵌入到硬件里面

        嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

0.3.2、Linux起源

寻·科普|第二期:聊聊Linux的前世今生

1965 麻省理工 贝尔实验室 奇异公司

        multics -->满足同时登录300个用户

        失败--》资金

1969 汤姆森.肯 (太空旅行游戏) 4个周 unics

        2个人同时登录使用,汇编语言

1970 unix

        丹尼斯·里奇-->c语言之父

        贝尔实验室,unics的基础进行二次开发,c语言写,命名为unix

        推广--》大学推广

        两个分支:

        伯克利分校(TCP/IP) systemV

1983 斯托曼 GNU(自由软件组织) libc gcc make bash解析器

        GPL 协议--》开源协议 *****

1991 林纳斯--》linux开源不收费

1、UNIX和Linux的区别

        1)Linux是开发源代码的自由软件,而UNIX是对源代码实行知识产权保护的传统商业软件

        2)UNIX系统大多与硬件配套,而Linux则可运行在多种硬件平台上

2、了解不同操作系统的内核

        Windows —— NT

        ubuntu —— Linux

        Android —— Linux

        macOs ios —— UNIX

1、系统命令

1.1、查看系统版本

查看操作系统版本

        lsb_release -a 或者 -r

        cat /etc/issue -->查看文件内容

查看内核版本

        uname -a 或者 -r

        cat /proc/version  --> 文件中查看

1.2、内核系统架构

应用层:app、shell命令

内核层:(五大功能)

        内存管理、文件管理、设备管理、网络管理、进程管理

硬件层:鼠标、键盘、lcd

1.3、系统关机或重启

关机:

        sudo shutdown -h now :立即关机

        sudo shutdown -h +时间 “提示语句” : 定时关机

                // 时间前面的“+”必须有,时间单位是min

        sudo shutdown -h 时间:定时关机

                // 时间前面没有“+”,时间单位是几点几点,按照Ubunatu的时间 

重启:

        sudo shutdown -r now:立即重启

        sudo shutdown -r +时间:定时重启

        sudo shutdown -r 时间:定时重启

        sudo reboot now:立即重启

1.4、网络配置

1.4.1、虚拟机提供的网络类型

1)桥接模式:主机和虚拟机分别拥有不同的ip地址,可以实现和外界设备通信

2)NAT模式:也可以联网,但是和主机共用同一个ip地址,外界无法识别虚拟机和主机发送的信息

3)仅主机模式:不能联网,只能和主机通信

1.4.2、如何查看虚拟机是否联网

ping www.baidu.com

1.4.3、配置桥接网络

1)保证虚拟机提供了桥接模式

菜单栏中----->虚拟机----->设置---->网络适配器---->桥接模式

2)保证虚拟机可以设置桥接网络

菜单栏----->编辑------>虚拟网络编辑器

更改设置(如没有桥接模式)----->添加网络(添加桥接网络)

1.4.4、问题:无法添加桥接网络

1)尝试还原默认设置后,再重新添加桥接网络

2)如果1没有用,找到VMware的软件安装包,双击安装包修改该软件

3)如果1和2都没有用,安装更高版本的VMware

桥接到主机网卡

如果自动失败,手动找到主机的网卡

1)找到网络---->属性

2)描述的位置即是主机的网卡

3)找到主机网卡后,不选自动直接桥接到主机具体的网卡

以上解决之后没有

可以尝试以下命令

sudo nmcli network off

sudo nmcli network on

1.5、Linux下的软件安装

1.5.1、软件包管理机制

        debian linux:deb 软件包:ubuntu用

1)二进制软件包(deb):.deb —— 安装软件的软件包

2)源码包(deb-src): .dsc —— 

        redhat linux:rpm 软件包

1.5.2、软件包命令

1.5.3、软件包的管理工具

1、dpkg:离线安装

特点:安装时需要软件包存在,不需要从镜像站点获取软件包,不需要联网,不能检查软件的依赖关系

dpkg 命令:

        sudo dpkg -i 软件包完整名称        // 安装软件

        sudo dpkg -r 软件名        // 卸载软件

        sudo dpkg -P 软件名        // 完全卸载

        sudo dpkg -s 软件名        // 查看软件安装状态

        sudo dpkg -L 软件名        // 列出软件目录信息

2、apt:在线安装

特点:安装时不需要软件包存在,需要从镜像站点获取软件包,需要网络,能检查软件之间的依赖关系

apt-get命令

        sudo apt-get install 软件名        // 下载并安装软件

        sudo apt-get remove 软件名        // 卸载软件

        sudo apt-get remove --purge 软件名        // 完全卸载

        /var/cache/apt/archives        // 软件安装包默认存放的路径

        sudo apt-get clean        //清除下载的软件包

        sudo apt-get download 软件名        //下载软件包,但是不安装

会出提示:只下载,不安装

        sudo apt-get upgrade 软件名        // 更新软件

        sudo apt-get update        // 更新源,镜像站点源

3、更新软件源

更新ubuntu下载软件的来源

        因为Ubuntu默认是国外的软件源,更新成国内的软件源

清华源:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

阿里原:ubuntu镜像_ubuntu下载地址_ubuntu安装教程-阿里巴巴开源镜像站

163源,中科大源

需要修改/ect/apt/sources.list文件(该文件是Ubuntu下载软件时默认查找的网址)

1、将原来的软件源保存一份,sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2、sudo vi /etc/apt/source.list文件,把从网页中拷贝的清华源的内容,复制到sources.list中

wq!强制保存退出

3、sudo apt-get update

 2、shell命令

        需要被shell(命令解析器)解析的命令

用户、shell、内核、硬件的关系

2.1、解析器的分类

Bourne Shell(简称sh):Bourne Shell由AT&T贝尔实验室的S.R.Bourne开发,也因开发者的姓名而得名。它是Unix的第一个Shell程序,早已成为工业标准。目前几乎所有的Linux系统都支持它。不过Bourne Shell的作业控制功能薄弱,且不支持别名与历史记录等功能。目前大多操作系统是将其作为应急Shell使用。

C Shell(简称csh):C Shell由加利福尼亚大学伯克利分校开发。最初开发的目的是改进Bourne Shell的一些缺点,并使Shell脚本的编程风格类似于C语言,因而受到广大C程序员的拥护。不过C Shell的健壮性不如Bourne Shell。

Korn Shell(简称ksh):Korn Shell由David Korn开发,解决了Bourne Shell的用户交互问题,并克服了C Shell的脚本编程怪癖的缺点。Korn Shell的缺点是需要许可证,这导致它应用范围不如Bourne Shell广泛。

Bourne Again Shell(简称bash):Bourne Again Shell由AT&T贝尔实验室开发,是Bourne Shell的增强版。随着几年的不断完善,已经成为最流行的Shell。它包括了早期的Bourne Shell和Korn Shell的原始功能,以及某些C Shell脚本语言的特性。此外,它还具有以下特点:能够提供环境变量以配置用户Shell环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。

2.2、shell命令格式

命令三要素:命令名称,选项,参数

        命令名称必须,选项和参数根据实际情况填写

Command [-Options] Argument1 Argument1 ……

Commandshell命令名称,严格区分大小写
Optionsshell 命令选项,每一个参数都需要添加‘-’进行引导
Argument1shell命令参数,一条命令的参数大于等于0个,且多个参数的情况需要用空格隔开

 书写细节:

1、一条命令的三要素之间用空格隔开

2、若一行书写多个命令,需要用‘;’隔开

3、如果一条命令不能在一行内写完,需要在行尾使用‘\’然后回车,表示该命令没有结束

2.3、history - 历史记录查询

直接执行history显示HISTSIZE条

history 20        //只显示20条历史记录

echo $HISTSIZE        // 在终端显示环境变量HISTSIZE的值

.bash_history         // 保存历史记录

        // 家目录下的隐藏文件

        // 保存 HISTFILESIZE 条(默认是2000)

        // 虚拟机关机之后,在这个终端输入过的命令才会保存到文件中

环境变量的值可以被更改

1)临时更改        // 只在当前终端有效

        export HISTSIZE=10        // = 两边不要有空格

2)永久修改

家目录下文件:.bashrc 中修改,就是永久修改        // 从新打开的终端生效,当前终端无效

2.4、shell中的特殊字符

2.4.1、通配符

当用户需要用命令处理一组文件,例如 file1.txt、file2.txt、file3.txt、file4.txt ……,用户不必输入所有文件名。可以使用shell通配符。

通配符

含义
*

匹配任意长度的字符

单独使用是,表示全部

匹配一个长度的字符
[…]匹配其中指定的一个字符
[-]匹配指定一个字符范围
{ .. }匹配指定范围的字符
[^…]除了其中指定字符都可以
[[:lower:]]匹配所有小写字母
[[:upper:]]

匹配所有大写字母

示例:

1、用file_*.txt匹配file_aa.txtfile_bbbb.txt匹配到的 file3_11.txt 匹配不到

        单独使用 * 表示全部,rm * :表示删除所有文件

2.4.2、管道符:|

将前一个命令的输出作为后一个命令的输入

cat xxx.c        // 将文件内容放到终端

wc -l xxx.c        // 计算文件内容的行数

cat xx.x | wc -l        // 将cat输出到终端的内容作为wc -l的输入,计算行数

补充:

wc -l 文件名:文件行数

wc -c 文件夹名:文件字符个数

wc -m 文件名:计算文件字节大小

wc -w 文件名:文件单词个数

2.4.3、输入输出重定向

输出重定向

命令 > 文件名        // 将文件作为输出源,文件不存在则创建文件
命令 >> 文件名        // 如果文件不存在,则创建文件

        // 如果文件中存在内容则会追加

命令 &> 文件名 或者 命令 2> 文件名        //将命令产生的错误输出到文件里

命令 &>> 文件名 或者 命令 2>> 文件名        //命令产生的错误内容追加到文件内容后面

输入重定向

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

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

相关文章

ISP流程--去马赛克详解

前言 本期我们将深入讨论ISP流程中的去马赛克处理。我们熟知,彩色图像由一个个像元组成,每个像元又由红、绿、蓝(RGB)三通道构成。而相机传感器只能感知光的强度,无法直接感知光谱信息,即只有亮暗而没有颜色…

阿里云-通义灵码:在 PyCharm 中的强大助力(下)

目录 六.通义灵码在 PyCharm 中的优势与不足 1.优势 (1).提高开发效率 (2).提升代码质量 (3).易于使用 (4).不断学习和改进 2.不足 (1).依赖网络 (2).准确性有待提高 (3).局限性 七.未来发展展望 1.提高准确性和可靠性 2.与其他工具的集成 3.智能化程度的提升 八…

开源项目stable-diffusion-webui部署及生成照片

参考链接 https://www.freedidi.com/13133.html 基础环境部署 python 官网链接 Python Release Python 3.10.6 | Python.org 下载 Python 3.10.6 版本安装包 下载好后双击 点击安装,这里需要选择一下,把环境变量加上。(这里是默认安装到C盘…

【芯片封测学习专栏 -- 单 Die 与 多Die(Chiplet)介绍】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview单个Die(Monolithic Die)多个Die(Chiplet Architecture or Heterogeneous SoC)如何判断一个SoC是…

Windows 安装 Docker 和 Docker Compose

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …

java_将数据存入elasticsearch进行高效搜索

使用技术简介: (1) 使用Nginx实现反向代理,使前端可以调用多个微服务 (2) 使用nacos将多个服务管理关联起来 (3) 将数据存入elasticsearch进行高效搜索 (4) 使用消息队列rabbitmq进行消息的传递 (5) 使用 openfeign 进行多个服务之间的api调用 参…

Github Copilot学习笔记

(一)Prompt Engineering 利用AI工具生成prompt设计好的prompt结构使用MarkDown语法,按Role, Skills, Constrains, Background, Requirements和Demo这几个维度描述需求。然后收输入提示词:作为 [Role], 拥有 [Skills], 严格遵守 […

android分区和root

线刷包内容: 线刷包是一个完整的android镜像,不但包括android、linux和用户数据,还包括recovery等。当然此图中没有recovery,但是我们可以自己刷入一个。 主要分区 system.img 系统分区,包括linux下主要的二进制程序。 boot.img…

RabbitMQ基础(简单易懂)

RabbitMQ高级篇请看: RabbitMQ高级篇-CSDN博客 目录 什么是RabbitMQ? MQ 的核心概念 1. RabbitMQ 的核心组件 2. Exchange 的类型 3. 数据流向说明 如何安装RabbitQueue? WorkQueue(工作队列): Fa…

大数据环境搭建进度

1.使用虚拟机的系统:centos7.xLinux 2.资源不足,使用云服务器: 1. 3.使用远程登录进行操作 用xshell 4.任务 1.虚拟机装好 2.设置IP地址 3.可以联网 4.设置远程登录访问 5.创建module和software目录,修改两…

Mysql--运维篇--主从复制和集群(主从复制I/O线程,SQL线程,二进制日志,中继日志,集群NDB)

一、主从复制 MySQL的主从复制(Master-Slave Replication)是一种数据冗余和高可用性的解决方案,它通过将一个或多个从服务器(Slave)与主服务器(Master)同步来实现。主从复制的基本原理是&#…

【EI会议征稿通知】第十一届机械工程、材料和自动化技术国际会议(MMEAT 2025)

本次大会旨在汇聚全球机械工程、材料科学及自动化技术的创新学者和行业专家,为他们提供一个卓越的交流与合作平台。随着全球对可持续技术和智能制造需求的不断增加,MMEAT 2025将重点关注这些领域的最新发展趋势和未来前景。此次大会的主要目标是推动机械…

OpenCV基础:视频的采集、读取与录制

从摄像头采集视频 相关接口 - VideoCapture VideoCapture 用于从视频文件、摄像头或其他视频流设备中读取视频帧。它可以捕捉来自多种源的视频。 主要参数: cv2.VideoCapture(source): source: 这是一个整数或字符串,表示视频的来源。 如果是整数&a…

解读Linux Bridge中的东西流向与南北流向

解读Linux Bridge中的东西流向与南北流向 在现代云计算和虚拟化环境中,网络流量的管理和优化变得越来越重要。Linux Bridge作为Linux内核提供的一个强大的二层交换机工具,在虚拟化和容器化应用中扮演着至关重要的角色。本文将深入探讨Linux Bridge中的两…

车联网安全--TLS握手过程详解

目录 1. TLS协议概述 2. 为什么要握手 2.1 Hello 2.2 协商 2.3 同意 3.总共握了几次手? 1. TLS协议概述 车内各ECU间基于CAN的安全通讯--SecOC,想必现目前多数通信工程师们都已经搞的差不多了(不要再问FvM了);…

RuoYi Cloud项目解读【四、项目配置与启动】

四、项目配置与启动 当上面环境全部准备好之后,接下来就是项目配置。需要将项目相关配置修改成当前相关环境。 1 后端配置 1.1 数据库 创建数据库ry-cloud并导入数据脚本ry_2024xxxx.sql(必须),quartz.sql(可选&…

第432场周赛:跳过交替单元格的之字形遍历、机器人可以获得的最大金币数、图的最大边权的最小值、统计 K 次操作以内得到非递减子数组的数目

Q1、跳过交替单元格的之字形遍历 1、题目描述 给你一个 m x n 的二维数组 grid,数组由 正整数 组成。 你的任务是以 之字形 遍历 grid,同时跳过每个 交替 的单元格。 之字形遍历的定义如下: 从左上角的单元格 (0, 0) 开始。在当前行中向…

Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能

Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能 基于SpringBoot3Vue3前后端分离的Java快速开发框架 项目简介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-P…

R数据分析:多分类问题预测模型的ROC做法及解释

有同学做了个多分类的预测模型,结局有三个类别,做的模型包括多分类逻辑回归、随机森林和决策树,多分类逻辑回归是用ROC曲线并报告AUC作为模型评估的,后面两种模型报告了混淆矩阵,审稿人就提出要统一模型评估指标。那么肯定是统一成ROC了,刚好借这个机会给大家讲讲ROC在多…

记一次学习skynet中的C/Lua接口编程解析protobuf过程

1.引言 最近在学习skynet过程中发现在网络收发数据的过程中数据都是裸奔,就想加入一种数据序列化方式,json、xml简单好用,但我就是不想用,于是就想到了protobuf,对于protobuf C/C的使用个人感觉有点重,正好…