当前位置: 首页 > news >正文

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>> 文件名        //命令产生的错误内容追加到文件内容后面

输入重定向

相关文章:

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

0、大纲 0.1、Linux 软件安装,用户管理,进程管理,shell 命令,硬链接和软连接,解压和压缩,功能性语句,结构性语句,分文件,make工具,shell脚本 0.2、C高级 …...

《DOM NodeList》

《DOM NodeList》 介绍 DOM(文档对象模型)是HTML和XML文档的编程接口,它允许开发者在JavaScript等编程语言中操作文档的结构、样式和内容。在DOM中,NodeList是一个重要的接口,它表示一个包含节点(如元素、…...

Nginx代理同域名前后端分离项目的完整步骤

前后端分离项目,前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。 以 vue php 项目为例。直接上 server 模块的 nginx 配置。 server{ listen 80; #listen [::]:80 default_server ipv6onlyon; server_name demo.com;#二配置项目域名 index index.ht…...

uniapp页面高度设置(铺满可视区域、顶部状态栏高度、底部导航栏高度)

这里说几种在uniapp开发中,关于页面设置高度的几种情况。宽度就不说了哈,宽度设置百分比都会生效。 首先我们要知道平时开发中,如果说没在uniapp做特殊处理,即正常情况下,所有的页面(.vue文件)中都是没有高度的(和vue一样),也就是说给最外层的的view标签设置高度为1…...

解锁 RAG 技术:从原理、论文研读走向实战应用RAG

亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...

HTML5实现好看的中秋节网页源码

HTML5实现好看的中秋节网页源码 前言一、设计来源1.1 网站首页界面1.2 登录注册界面1.3 节日由来界面1.4 节日习俗界面1.5 节日文化界面1.6 节日美食界面1.7 节日故事界面1.8 节日民谣界面1.9 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看…...

数字孪生笔记 1 工业数字孪生的意义

什么是工业数字孪生? 很多在做这个工作研究的同学最开始都想问的一个问题。到底什么才是数字孪生?我在五年前做数字孪生的时候也在思考这个问题。五年时间从数字孪生兴起,到元宇宙爆发,再到数字孪生和元宇宙没人提起,…...

013:深度学习之神经网络

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 深度学习是机器学习中重要的一个学科分支,它的特点就在于需要构建多层且“深度”的神经网络。 人们在探索人工智能初期,就曾设想构建一个用数学方式…...

计算机网络(四)网络层

4.1、网络层概述 简介 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来,形成一个更大的互…...

【ArcGIS微课1000例】0138:ArcGIS栅格数据每个像元值转为Excel文本进行统计分析、做图表

本文讲述在ArcGIS中,以globeland30数据为例,将栅格数据每个像元值转为Excel文本,便于在Excel中进行统计分析。 文章目录 一、加载globeland30数据二、栅格转点三、像元值提取至点四、Excel打开一、加载globeland30数据 打开配套实验数据包中的0138.rar中的tif格式栅格土地覆…...

Linux 中统计进程的线程数 | 查看进程的线程

注:本文为 “Linux 线程” 相关文章合辑。 在 Linux 中统计一个进程的线程数 作者:Dan Nanni 译者: LCTT struggling | 2015-09-17 10:29 在 Linux 中一个程序在运行时会派生出多个线程。检查每个进程的线程数,有以下几种方法可…...

【深度学习 】训练过程中loss出现nan

[toc]【深度学习 】训练过程中loss出现nan 训练过程中loss出现nan 在深度学习中,loss 出现 NaN 通常是由数值不稳定或计算错误引起的。 1. 学习率过高 原因: 学习率过大可能导致权重更新幅度过大,引发数值不稳定。 解决方法: 降低学习率,…...

Linux - 什么是线程和线程的操作

线程概念 什么是线程: 线程(Thread)是操作系统能够进行运算调度的最小单位. 它被包含在进程之中, 是进程中的实际运作单位. 一个进程可以包含多个线程. 进程 : 线程 1 : n (n > 1). 进程是系统分配资源的基本单位. 线程则是系统调度的基本单位. 在…...

windows及linux 安装 Yarn 4.x 版本

1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…...

如何设计一个 RPC 框架?需要考虑哪些点?

面试官:如何设计一个 RPC 框架?需要考虑哪些点? 设计一个远程过程调用(RPC)框架是一个复杂的系统工程,涉及多个方面的考虑。一个好的 RPC 框架应具备可扩展性、灵活性、易用性和高性能。下面是设计 RPC 框…...

初学stm32 --- DAC输出三角波和正弦波

输出三角波实验简要: 1,功能描述 通过DAC1通道1(PA4)输出三角波,然后通过DS100示波器查看波形 2,关闭通道1触发(即自动) TEN1位置0 3,关闭输出缓冲 BOFF1位置1 4,使用12位右对齐模式 将数字量写入DAC_…...

开源cJson用法

cJSON cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。 cJSON项目托管在Github上,仓库地址如下: https://github.com/DaveGamble/cJSON 使用Git命令将其拉…...

【学习笔记】理解深度学习和机器学习的数学基础:数值计算

深度学习作为人工智能领域的一个重要分支,其算法的实现和优化离不开数值计算。数值计算在深度学习中扮演着至关重要的角色,它涉及到如何在计算机上高效、准确地解决数学问题。本文将介绍深度学习中数值计算的一些关键概念和挑战,以及如何应对…...

如何使用CSS让页面文本两行显示,超出省略号表示

talk is cheap, show me the code 举个栗子&#xff0c;如下&#xff1a; <span class"a">我说说<b class"b">打瞌睡党风建设打火机</b>说说色儿</span>a{display:block/inline-block;width:100px;overflow: hidden; white-spac…...

likeshop同城跑腿系统likeshop回收租赁系统likeshop多商户商城安装及小程序对接方法

前言&#xff1a;首先likeshop是一个开发平台&#xff0c;是一个独创的平台就像TP内核平台一样&#xff0c;你可以在这个平台上开发和衍生出很多伟大的产品&#xff0c;以likeshop为例&#xff0c;他们开发出商城系统&#xff0c;团购系统&#xff0c;外卖点餐系统&#xff0c;…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...