Day16 linuxC高级(存储类型 linux命令 shell命令)

news2024/9/25 15:27:26

文章目录

  • C补充
    • 标识常量
    • 存储类型
      • 1.auto // 自动型
      • 2.static:修饰变量和函数 // 静态型
      • 3.extern:外部引用
      • 4.register:寄存器类型
  • LinuxC高级
    • 简介:
    • 嵌入式系统(将软件嵌入到硬件里面)
    • Linux起源
    • 查看操作系统版本
    • 内核系统架构
    • 系统关机或重启命令
    • linux下的软件安装
      • 两种软件包管理机制:
      • 软件包的管理工具:dpkg apt
        • 1)dpkg
        • 2)apt
    • 配置虚拟机联网
    • 换镜像站点源
      • 1>找到虚拟机保存源的文件,将文件内的源替换新的源
      • 2>网上查找对应ubuntu版本新的源。
      • 3>更新源,新换的源生效
    • shell的基本命令
      • shell - 贝壳 外在保护工具
      • 用户、shell、内核、硬件之间的关系
      • 解析器的分类:
        • Bourne Shell(简称sh):
        • C Shell(简称csh):
        • Bourne Again Shell(简称bash):
      • shell命令格式
      • history - 历史记录查询
    • shell中的特殊字符
      • 通配符

C补充

标识常量

宏定义

存储类型

auto static extern register

1.auto // 自动型

修饰变量,一般会省略时认为是auto

2.static:修饰变量和函数 // 静态型

修饰变量:

1)变量的存放位置在全局区
如果静态变量有初值,存放.data 区,没有初值存放在 .bss 区
2)生命周期为整个程序
3)限制作用域:
修饰局部变量:和普通的局部变量的作用域没有区别,但是生命周期被延长为整个程序
修饰全局变量,限制在本文件中使用
4)只初始化一次,初值赋值为0
修饰函数:
static 修饰函数,限制在本文件中使用

3.extern:外部引用

通过 extern 可以引用其他文件中的全局变量或函数

// extern.c
#include <stdio.h>

int a = 10;
void fun()
{
    printf("hello");
}

// main.c
#include <stdio.h>

extern int a;
extern void fun();
int main(int argc, char const *argv[])
{
    printf("%d\n", a);

    fun();
    return 0;
}

编译: gcc main.c extern.c
执行:./a.out

4.register:寄存器类型

由于寄存器数量比较少,申请不到空间和 auto 一样

LinuxC高级

简介:

linux:软件安装、用户管理、进程管理、shell通用、硬链接和软连接、解压和压缩、
shell脚本、功能性语句、结构性语句、分文件编程、条件编译、make工具

C高级:函数指针、指针函数、函数指针数组

嵌入式系统(将软件嵌入到硬件里面)

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

Linux起源

#Linux历史

在这里插入图片描述

UNIX和linux的区别:
1)linux是开发源代码的自由软件.而unix是对源代码实行知识产权保护的传统商业软件。
2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上

了解不同操作系统的内核:
windows - NT
ubuntu - linux
Android - linux
macOs ios - unix

查看操作系统版本

lsb_release -a/-r
cat /etc/issue --> 文件中查看
查看内核的版本:
uname -a/-r
cat /proc/version --> 文件中查看

内核系统架构

应用层:app、shell命令
| |shell解析器
C库 |
|
----------------系统调用---------------
内核层:五大功能
内存管理
文件管理
设备管理
网络管理
进程管理
-------------------------------------------
硬件层:鼠标、键盘

C库:标准库,所有操作系统都可以使用的函数接口
系统调用:内核提供的用于输入输出的函数接口,不同的操作系统调用函数接口不同。

基于 32 位操作系统:
产生进程:有 0 - 4G虚拟内存空间。每个进程 0 - 3G 私有虚拟内存空间,3-4G 公用的内核空间

系统关机或重启命令

关机:
sudo shutdown -h now:立即关机
sudo shutdown -h 时间 “提示语句”:定时关机 min 为单位
重启:
sudo shutdown -r now:立即重启
sudo shutdown -r 时间:定时重启
sudo reboot now:立即重启

linux下的软件安装

两种软件包管理机制:

debian linux:deb软件包 —> ubuntu是这个
redhat linux:rpm软件包

deb软件包分为两种:
二进制软件包(deb): deb — 安装软件的软件包
源码包(deb-src): dsc
软件包命名:

在这里插入图片描述

软件包的管理工具:dpkg apt

1)dpkg
特点:安装时需要软件包存在,不需要从镜像站点获取软件包。
		不需要网络,不能检查软件之间的依赖关系
dpkg命令:
	sudo dpkg -i 软件包的完整名称:安装软件
	sudo dpkg -r 软件名:卸载软件
	sudo dpkg -s 软件名:查看软件的安装状态
	sudo dpkg -P 软件名:完全卸载
	sudo dpkg -L 软件名:列出软件目录信息

共享文件夹的路径:/mnt/hgfs/共享文件夹的名字

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

apt-get:
	sudo apt-get install 软件名:下载并安装软件
	sudo apt-get remove 软件名:卸载软件
	sudo apt-get --purge remove 软件名:完全卸载
	sudo apt-get clean:清除下载的软件包
		/var/cache/apt/archives  --> 安装软件的安装包默认存放路径
	sudo apt-get update:更新源
	sudo apt-get upgrade:更新安装软件
	sudo apt-get download:下载软件包
	sudo apt-get source:下载源码包
apt-cache:
	sudo apt-cache show 软件名:获取二进制包的描述信息
	sudo apt-cache policy 软件名:查看软件的安装状态
	sudo apt-cache depends 软件名:查看依赖的软件
	sudo apt-cache rdepends 软件名:查看谁依赖我		

ping 网址/IP地址 --> 查看虚拟机是否可以上网

配置虚拟机联网

自动获取ip
设置虚拟机桥接网络

编辑 -> 虚拟网络编辑器 -> vmnet0 -> 桥接模式 -> 自动 -> 确定
在这里插入图片描述

虚拟机 -> 设置 -> 网络适配器 -> 桥接模式
在这里插入图片描述
2.设置自动获取ip
右上角进入 Eidt… 设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

换镜像站点源

1>找到虚拟机保存源的文件,将文件内的源替换新的源

 sudo gedit /etc/apt/source.list
	   注:修改之前先备份--》
 sudo  cp  /etc/apt/sources.list    /etc/apt/sources.list.config	   

2>网上查找对应ubuntu版本新的源。

 网址:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

3>更新源,新换的源生效

sudo apt-get update

shell的基本命令

shell - 贝壳 外在保护工具

shell是命令解析器

在这里插入图片描述

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

用户在命令行提示符下输入命令文本,开始与shell进行交互。
接着,shell将用户的命令或者按键转换成内核能够理解的指令
控制操作系统作出响应,直到控制相关的硬件设备。
然后,将输出结果通过shell提交给用户

在这里插入图片描述

解析器的分类:

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环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。

shell命令格式

通常一条命令包含三个要素:命令名称、选项、参数。其中命令名称是必须的,选项和参数根据实际情况进行填写
Command [-Options] Argument1 Argument1 ……

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

格式:命令名称 [选项] [参数] …
细节:
1.一条命令的三要素之间用空格隔开
2.若一行要书写多个命令,需要使用分号( ; ),进行隔开
3.如果一条命令不能再一行内写完,需要在行尾使用反斜杠 () 表明该命令未结束

在这里插入图片描述

history - 历史记录查询

直接 history 显示HISTSIZE 条历史记录
history n -> 只显示n条命令
echo $HISTSIZE --> 在终端显示环境变量 HISTSIZE 的值
家目录下隐藏文件 .bash_history,保存历史记录的。HISTFILESIZE 条
终端关闭,终端上执行的命令刷新到文件中

修改环境变量的值:
export HISTSIZE=20 临时修改,只有在本次打开的终端有效
家目录文件 .bashrc 中修改就是永久修改,修改完生效,从新打开的终端生效
在这里插入图片描述

shell中的特殊字符

通配符

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

通配符含义
*匹配任意长度的字符
匹配一个长度的字符
[…]匹配其中指定的一个字符
[-]匹配指定一个字符范围
[^n]除了其中指定的字符均可以

实例:
●用 file_*.txt,匹配 file_aa.txt、file_bb.txt、file_abcd.txt 能匹配到的,file1_cc.txt则匹配不到(命令后面 单独使用 * 表示全部,如:rm * :表示删除全部文件)
●用 file_?.txt,匹配 file_1.txt、file_2.txt、file_3.txt是可以匹配到的,file_11.txt则匹配不到
●用 file_[abc].txt 只能匹配 file_a.txt、file_b.txt、file_c.txt
●用 file_[a-c].txt 能匹配 file_a.txt、file_b.txt 直到 file_c.txt
●用 file_[^abc].txt 除了 file_a.txt、file_b.txt、file_c.txt 的其他文件

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

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

相关文章

阿里云优惠券领取入口、使用方法和限制条件,2024最新

阿里云优惠代金券领取入口&#xff0c;阿里云服务器优惠代金券、域名代金券&#xff0c;在领券中心可以领取当前最新可用的满减代金券&#xff0c;阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法&#xff1a; 阿里云优惠券…

Python Process创建进程(2种方法)详解

虽然使用 os.fork() 方法可以启动多个进程&#xff0c;但这种方式显然不适合 Windows&#xff0c;而 Python 是跨平台的语言&#xff0c;所以 Python 绝不能仅仅局限于 Windows 系统&#xff0c;因此 Python 也提供了其他方式在 Windows 下创建新进程。 Python 在 multiproces…

程序员必备命令之-网络状态命令netstat ss

本文介绍一下两个常用的Linux命令&#xff0c;netstat以及ss&#xff0c;这两个命令均用来查看主机的网络相关的信息。 Netstat netstat 是Unix系统上用于显示各种网络统计信息的命令&#xff0c;目前大多数的Linux系统默认自带该命令。该命令用于显示系统网络连接、路由表等…

JAVA工程中引用本地jar的3种常用方式,你用过哪种?

文章目录 前言1. 第1种方式2. 第2种方式3. 第3种方式 前言 实际项目过程中咱们经常会碰到需要本地引用jar包到java工程中的场景&#xff0c;本文就介绍一下遇到此场景时如何在IDEA中导入本地jar包到工程中的3种方式&#xff0c;简单却很常用。 1. 第1种方式 IDEA -> File …

chrome浏览器Extension插件开发框架对比和介绍

想开发chrome浏览器插件的话&#xff0c;如果没有一个好的框架支持&#xff0c;那么你只能手写js和html实现了&#xff0c;这样做的话&#xff0c;可能效率没有那么高&#xff0c;所以github上就有一些牛人来定制化了这些操作&#xff0c;将react和vue等开发框架快速集成&#…

AtCoder Beginner Contest 221 H. Count Multiset(容斥 dp 拆分数 差分 数形结合)

题目 给定m,n(m<n<5e3)&#xff0c; 求大小为k的多重集合&#xff0c;满足元素和为n&#xff0c; 且每种数在集合中出现的次数都小于等于m的集合数有多少个 答案对998244353取模 思路来源 官方题解 「解题报告」[ABC221H] Count Multiset - K8He - 洛谷博客 Solu…

测试不拘一格——掌握Pytest插件pytest-random-order

在测试领域&#xff0c;测试用例的执行顺序往往是一个重要的考虑因素。Pytest插件 pytest-random-order 提供了一种有趣且灵活的方式&#xff0c;让你的测试用例能够以随机顺序执行。本文将深入介绍 pytest-random-order 插件的基本用法和实际案例&#xff0c;助你摆脱固定的测…

CSGO搬砖项目还能火多久?

最近放假回到老家&#xff0c;见了不少亲戚朋友&#xff0c;大家不约而同都在感叹今年大环境不好&#xff0c;工作不顺&#xff0c;生意效益不好&#xff0c;公司状况不佳&#xff0c;反问我们生意如何&#xff1f;为了让他们心里好受一点&#xff0c;我也假装附和道:也不咋地&…

超简单的OCR模块:cnocr

前言 毫无疑问的是&#xff0c;关于人工智能方向&#xff0c;python真的十分方便和有效。 这里呢&#xff0c;我将介绍python众多OCR模块中一个比较出色的模块&#xff1a;cnocr 模块介绍 cnocr是一个基于PyTorch的开源OCR库&#xff0c;它提供了一系列功能强大的中文OCR模型和…

常用芯片学习——HC245芯片

HC245三态输出八路总线收发器 使用说明 这些八路总线收发器专为数据总线之间的异步双向通信而设计。控制功能实现可更大限度地减少外部时序要求。根据方向控制 (DIR) 输入上的逻辑电平&#xff0c;此类器件将数据从 A 总线发送至 B 总线&#xff0c;或者将数据从 B 总线发送至…

使用torch实现RNN

在实验室的项目遇到了困难&#xff0c;弄不明白LSTM的原理。到网上搜索&#xff0c;发现LSTM是RNN的变种&#xff0c;那就从RNN开始学吧。 带隐藏状态的RNN可以用下面两个公式来表示&#xff1a; 可以看出&#xff0c;一个RNN的参数有W_xh&#xff0c;W_hh&#xff0c;b_h&am…

c语言->学会offsetof宏计算结构体相对偏移量

前言 ✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 目的&#xff0c;学习offsetof宏计算结构体相对偏移量 1.offsetof宏 来我们看图…

2.服务拆分和远程调用

2.服务拆分和远程调用 任何分布式架构都离不开服务的拆分&#xff0c;微服务也是一样。 2.1.服务拆分原则 这里我总结了微服务拆分时的几个原则&#xff1a; 不同微服务&#xff0c;不要重复开发相同业务微服务数据独立&#xff0c;不要访问其它微服务的数据库微服务可以将…

基于springboot vue实现的医院管理系统

一、 项目介绍 角色&#xff1a;管理员、患者、医生 基于springboot vue实现的医院管理系统&#xff0c;有管理员、医生和患者三种角色。系统拥有丰富的功能&#xff0c;能够满足各类用户的需求&#xff0c;系统提供了登录和注册功能&#xff0c;确保用户的信息安全和权限管理。…

类于对象下

再识构造函数——初始化列表——成员变量定义的地方 之前我们说&#xff1a;构造函数&#xff0c;对自定义类型会去调用他的默认构造函数&#xff0c;但是如果内置类型也没有写构造函数呢&#xff1f; 这里我们引用出——初始化列表&#xff08;也是一种构造函数&#xff09;…

四、RHCE--远程连接服务器

四、RHCE--远程连接服务器 1、远程连接服务器简介2、连接加密技术简介&#xff08;1&#xff09;版本协商阶段&#xff08;2&#xff09;密钥和算法协商阶段&#xff08;3&#xff09;认证阶段 3、ssh服务配置4、用户登录ssh服务器 1、远程连接服务器简介 &#xff08;1&#…

【算法竞赛C++STL基础】栈,链表,队列,优先队列,map,set以及迭代器的用法

文章目录 1&#xff0c;前知——模板函数的实现2, hash 表1&#xff0c;定义2,ASCII码表3&#xff0c;咉射关系 3&#xff0c;迭代器4&#xff0c;STL关系1,stl 的基础关系2,stl 的分类1,相关分类2,相关简介顺序容器关联容器适配容器 3. STL 的相关函数的学习3.1 STL函数中都含…

vue项目编译非常慢,经常卡在某个百分点

1、注册插件 2、在项目根目录下的 babel.config.js 文件中加入下方配置 3、将import导入方式改为require导入方式&#xff0c;返回promise 4、如果动态加载组件import引入组件找不到组件&#xff08;Error: Cannot find module&#xff09; 使用 webpack 的 require.ensure() …

每天五分钟计算机视觉:掌握迁移学习使用技巧

本文重点 随着深度学习的发展,迁移学习已成为一种流行的机器学习方法,它能够将预训练模型应用于各种任务,从而实现快速模型训练和优化。然而,要想充分利用迁移学习的优势,我们需要掌握一些关键技巧。本文将介绍这些技巧,帮助您更好地应用迁移学习技术。 迁移学习的关键…

UG制图-视图与投影

当我们进入图纸页后&#xff0c;我们需要对产品进行投影然后进行标注 注意&#xff1a;如果是从零件3D中直接进入制图&#xff0c;默认情况下图框所在的图层是不显示的&#xff0c;我们可以通过菜单或者快捷键ctrl L进入图层设置模块&#xff0c;将图层170和173勾选为显示 我…