Linux c高级 day1
1.课程简介
1.软件安装、用户管理、进程管理、shell通用、硬链接和软连接、解压和压缩、shell脚本、功能性语句、结构性语句、分文件、条件编译、make工具
2.c高级:函数指针、指针函数、函数指针数据
2.嵌入式系统
略
3.linux 起源
https://mp.weixin.qq.com/s?__biz=MzkzNzAwNDAzNQ==&mid=2247483775&idx=1&sn=fc5ab0d0ac067f6605906888b40e05bb&chksm=c2975c13f5e0d505fe3074729088341552275cbfa0f95ff8a0b4627b1003493c1011077e2f89&mpshare=1&scene=23&srcid=0902yXFHTAa1jzL68pTXNIWX&sharer_sharetime=1662117806737&sharer_shareid=b33de6e893f06376514acc7d36a0a351#rd

UNIX和linux的区别:
1)linux是开发源代码的自由软件.而unix是对源代码实行知识产权保护的传统商业软件。
2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
了解不同操作系统的内核:
windows - NT
ubuntu - linux
Android - linux
macOs ios - unix
4.查看系统版本
查看操作系统版本:
lsb_release -a/-r
cat /etc/issue -->文件中查看
查看内核版本:
uname -r/-a
cat /proc/version -->文件中查看
5.内核系统架构
应用层:app、shell命令
| | shell解析器
c库 |
----------系统调用------------------------------
内核层:五大功能
内存管理
文件管理
设备管理
网络管理
进程管理
硬件层:鼠标、键盘
c库:标准库,所有操作系统都可以使用的函数接口
系统调用:内核提供的用于输出输出的函数接口,不同的操作系统系统调用函数接口不同。
基于32位操作系统:
产生进程:有0-4G虚拟内存空间。每个进程0-3G私有虚拟内存空间,3-4G公用的内核空间。
6.系统关机或重启命令
关机:
sudo shutdown -h now :立即关机
sudo shutdown -h +时间 ”提示语句“ :定时关机 min为单位
重启:
sudo shutdown -r now :立即重启
sudo shutdown -r +时间 :定时重启
sudo reboot now :立即重启
7.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 软件名 :列出软件目录信息

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地址 --》查看虚拟机是否可以上网
配置虚拟机联网
略
重置虚拟网络编辑器
换镜像站点源
镜像站点获取不到软件包
1>找到虚拟机保存源的文件,将文件内的源替换新的源
sudo gedit /etc/apt/source.list
注:修改之前先备份–》
sudo cp /etc/apt/sources.list /etc/apt/sources.list.conf
2>网上查找对应ubuntu版本新的源。
网址:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
3>更新源,新换的源生效
sudo apt-get update
8.shell的基本命令
8.1. shell - 贝壳 外在保护工具
shell 是 命令解析器

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

8.3.解析器的分类:
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环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。
8.3. shell命令格式
通常一条命令包含三个要素:命令名称、选项、参数。其中命令名称是必须的,选项和参数根据实际情况进行填写
Command [-Options] Argument1 Argument1 ……
Command shell命令名称,需要严格区分大小写
Options shell命令选项,每一个参数都需要添加"-"进行引导
Argument shell命令参数,一条命令的参数大于等于0个,且多个参数的情况需要利用空格进行隔开
格式:命令名称 [选项] [参数] …
细节:
1.一条命令的三要素之间用空格隔开
2.若一行要书写多个命令,需要使用分号( 😉,进行隔开
3.如果一条命令不能再一行内写完,需要在行尾使用反斜杠 () 表明该命令未结束


8.4. history - 历史记录查询
history 10 -》只显示10条历史记录
直接执行history名显示HISTSIZE条历史记录。
echo $HISTSIZE -->在终端显示环境变量HISTSIZE的值
家目录下隐藏文件.bash_history ,保存历史记录的。保存HISTFILESIZE条。
终端关闭,终端上执行的命令刷新到文件中。
环境变量的值可以被更改:
export HISTSIZE=20 临时修改,只有在本次打开的这个终端有效
家目录下 文件 .bashrc 中修改就是永久修改,修改完成生效:从新打开的终端

9.shell中的特殊字符
9.1. 通配符
当用户需要用命令处理一组文件,例如 file1.txt、file2.txt、file3.txt、file4.txt ……,用户不必输入所有文件名。可以使用shell通配符。
通配符 含义
- 匹配任意长度的字符
? 匹配一个长度的字符
[…] 例[23] 匹配其中指定的一个字符
[-] {1…5} 匹配指定一个字符范围
[^…] 除了其中指定的字符均可以
实例:
●用 file_*.txt,匹配 file_aa.txt、file_bb.txt能匹配到的,file3_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的其他文件
9.2. 管道 |
将前一个命令的输出作为后一个命令的输入
cat xxx.c | wc -l --》 将cat输出到终端的内容作为 wc -l 的输入,计算行数
补充:wc -l 文件名:文件行数
wc -c 文件夹名:文件字符个数
wc -m 文件名:计算文件字节大小
wc -w 文件名:文件单词个数
9.3. 输入输出重定向
命令 > file:将 file作为输出源,file文件不存在创建



./a.out > file // 如果文件不存在则新建
./a.out >> file // 如果文件不存在则新建,如果文件存在则追加
命令 &> 或者 2>file:将由命令产生的错误输入到 file
9.4. 命令置换符 esc按键下面的 ``
将一个命令的输出作为另一个命令的参数。


589

被折叠的 条评论
为什么被折叠?



