LinuxC高级_day1
【0】授课任务1. Linux命令 复习补充
2. shell脚本 独立的语言 语法规则
3. C高级 学生管理系统(新)
4. makefile
【1】什么是嵌入式?
以计算机为中心,软硬件可裁剪的专用计算机系统(通用计算机系统windows)
对体积功耗都有特定的要求*系统的裁剪
操作系统 - 内核
windows - NT
Ubuntu - Linux
macOS - unix
ios - unix
Android - linux【2】linux起源
1965 - multics 300同时登陆 -失败了
1969 - 贝尔实验室 汤姆森肯 4周 2人登录太空旅行 unics
1973 - C语言风格 - unix收费 - 向大学生推广 - (systemV 伯克利分校(TCP/IP))
1984 - 理查德斯托曼 - 自由软件的思想 - GUN(is not unix) - GPL协议(bash glic库)
1991 - linus人 - Linux
不收费: 对用户不收费 对企业收费的(高德)【3】
1. Ubuntu系统 - 版本
sudo lsb_release -a
cat /etc/issue2. 内核版本
uname -r
cat /proc/version
3.2.0-150-generic-pae
主版本号.次版本号.修订次数-编译次数-内核描述信息3. Ubuntu - 人道主义 桌面性能优越 更新及时
Redhat - 服务器上 更新不频繁 很稳定*笔试 -linux和Unix区别
1.linux开源代码的自由软件,unix收费传统商业软件
2.linux运行在多平台上,unix是和硬件配套(电信SUN 民航HP 银行IBM)【4】 Linux系统的组成
应用层
APP APP 命令 shell脚本
| -------------------
| 命令解析器
可以直接操作内核 | 0-3G应用空间:每个程序都有自己的0-3G内核层:五大功能 3-4G内核空间:只有一份
1. 进程管理 什么是进程?程序的一次执行过程
CPU面向的对象就是进程,对进程调度
4核:CPU1 - QQ CPU2 - wechat - 时间片(轮询)2. 文件管理 通过文件系统
/bin 系统常用的二进制文件
/root 和超级用户相关
/boot 系统启动文件
/dev 设备文件 硬盘区分 鼠标 USB
/etc 系统的配置文件 passwd:存放用户信息
/home 用户主目录
/mnt 通常作为挂载点
/proc 进程的各种信息3. 内存管理 申请释放 malloc
4. 设备管理 设备驱动
5. 网络管理 网络收发 TCP/IP
=====================================
硬件层 鼠标 键盘 USB 摄像头【5】0-4G虚拟内存 - 32位机器
512M/1G(0x4000 0000) - 物理地址(真实存在),程序是运行在虚拟地址当中
MMP内存映射 swap交换分区[练习]
1.
char *p = “hello world”
*p = ‘a’ — X 字符串常量不能改
p++ — Y p指针在栈上 栈可以自加2. const修饰的全局变量放在哪里了?
const对变量的存储没有影响,所以不在.ro里
已初始化.data 未初始化的.bss【6】 命令
1. 终端相关
1)打开
ctrl+alt+T
ctrl+shift+n
2)字体
ctrl+"-" ctrl+shfit +"+"
3)退出 exit2. linux@ubuntu:/dev/input$
用户名 主机名 路径 普通用户(超级#)
whoami hostname pwd3. 软件相关的命令 dpkg apt-get
1)右上角有上下箭头
2)ping www.baidu.com
3)打开网页
A. 编辑 - 虚拟网络编辑器 - 有三个(如果没有出现 - 直接还原默认设置) - 桥接/仅主机/NAT模式
桥接:Ubuntu和windows有两个IP 这两个是独立 可以访问外网
NAT: Ubuntu和windows对外公用同一个IP地址 可以上网
仅主机: Ubuntu和windows通信 不能上网
B. 虚拟机 - 设置 - 网络适配器 - 对应选择
C. 选中右上角的图标 - 编辑网络 - 删除现在所有的网络 - ADD - SAVE• windows上查看IP的方法:
windows+R - cmd - ipconfig - 192.168.31.XX(局域网)
linux查看ip的方法: ifconfig4. 常见的软件包后缀
windows - .exe Android - .apk
Ubuntu - .deb RedHat - .rpm5. 软件包组成
sl_ 3.03 -16 _i386. deb - 软件包包名
软件名 朱版本号 次版本号 架构 后缀6. dpkg 离线安装 安装的时候不依赖网络 不检查依赖
apt-get 在线安装 安装的时候要联网 联网检查依赖 将依赖的包一并安装上• 软件包出现之前 怎么安装?
a.out – 可执行程序 --> ./a.out
ls – 可执行程序 --> cd /bin --> ls -l ls -->file ls
ls可在任意目录下执行,如何让a.out在任意目录下执行? sudo cp a.out /bin7. dpkg
1)安装: sudo dpkg -i 软件包全名
sudo dpkg -i sl_3.03-16_i386.deb
2)查看状态: sudo dpkg -s 软件名
sudo dpkg -s sl
Package: sl
Status: install ok installed //安装完成
3)执行: 直接写软件名 sl
4) 查看软件的安装信息等
sudo dpkg -l 软件名 //查看版本号
sudo dpkg -L 软件名 //查看安装信息和路径
5)查看软件参数 man sl
6)彻底删除 (配置文件一并删除)
sudo dpkg -P 软件名
sudo dpkg -P sl[练习] 1. 如何查看Ubuntu上安装的所有软件
sudo dpkg -l
2. 假设一个目录下有5个安装包,怎么全部安装
sudo dpkg -i *.deb8. apt-get
• 换源
1)从网上下载的软件包在哪?–在服务器里
2)源 - 指定从哪个服务器下载
从哪里换
A. 图形化界面 update manager - setting - Ubuntu software - downloadfrom
B. cd /ect/apt/
vim sources.list -->保存的就是源
C. 如何更新
1.先备份! sudo cp sources.list sources.list.bak
2.sudo gedit sources.list把清华源网站上给的全部贴进来,之前的要清空
或者 直接把sources.list文件放到家目录下的某个位置,
cd ~
mv XXXsources.list .
然后拷贝到/etc/apt目录下
sudo cp sources.list /etc/apt/
D. 如果出现错误 – 本地服务器对不上
cd /var/lib/apt/lists
sudo rm * -rf
sudo apt-get update下载并安装
• apt-get install会现将软件包下载到本地
cd /var/cache/apt/archives 然后自动安装
sudo apt-get install sl //小火车
sudo apt-get install frozen-bubble //泡泡龙
sudo apt-get install cmatrix //屏保
sudo apt-get install oneko //小猫鼠标
sudo apt-get install cowsay //奶牛说
sudo apt-get install bastet //俄罗斯方块
卸载
sudo apt-get remove 软件名
清除安装包
sudo apt-get clean 清除/var/cache/apt/archives
只下载不安装
sudo apt-get download 软件名
只下载源码
sudo apt-get source 软件名[练习] 1.用apt-get安装的软件可以dpkg卸载吗?
– 可以
2. apt-get中断安装 (断网 断电 ctrl+C)
就既不能删除也不能安装
1)检查依赖源: sudo apt-get check
2) 修复: sudo apt-get -f install【7】 命令复习
1. cd ~ cd / cd - cd . cd …
2. pwd
3. touch 如果文件存在就更新时间戳
如果文件不存在就创建文件4. mkdir -p //创建有层级关系的目录
5. cp
6. mv 如果目标存在就是移动 不存在就是重命名
7. rm -r 删除目录 -f强制
rm *.c 删除所有的.c文件
rm !(2.c) 删除2.c以外的所有文件8. history 查看历史命令
history num 显示num历史记录9. 关机和重启
sudo shutdown -h now 立即关机
sudo shutdown -r now 立即重启 //sudo reboot
sudo shutdown -h +10 “byebye” //定时十分钟后关机
sudo shutdown -r +10 “byebye”10. vi/vim (gedit)
插入模式
命令行模式 YY DD P
底行模式 :w :q :vsp :set nu :nohl
:%s/旧字符串/新字符串/g【8】 shell命令
1. shell是一个命令行解析器,将用户的指令解析为操作系统能理解的命令,实现人机交互
分类: sh csh ksh bash
格式: 指令 选项 参数(中间用空格隔开,多条命令在一行书写用;隔开,一条命令在一行写不完加\标明)
2.通配符
1)* 匹配所有 ls *.c
2)? 只去匹配一个字符 ls aa?.c2. ?? 只去匹配两个字符 ls aa??.c
3. [字符1字符2字符3…字符n] 通配其中任意一个字符 ls aa[12a].c
5)[起始字符-结束字符] ls aa[1-9].c ls aa[a-z].c
6)[^字符] 除了指定的字符都可匹配 ls aa[^1].c
[练习]
touch aa1.c aa2.c aaa.c aab.c aaa.c aaA.c aaB.c aay.c aaY.c
ls aa[A-C].c --> aaA.c aab.c aaB.c
ls aa[a-c].c --> aaa.c aaA.c aab.c aaB.c
aAbBcC语序问题 去除本地化 (export LC_ALL=C 换终端或者重启失效)4. 管道 | 前一个命令的输出作为后一个命令的输入
wc -w 文件名 :显示单词的个数
ls | wc -w
grep查找 cat显示
cat aa1.c | grep int5. 输出重定向
ifconfig > route.txt以新建的方式重定向
以追加的方式
3. 命令置换 `` 将一个命令的输出作为另一个命令的参数
echo "user is whoami4. echo 回声 显示内容到标准输出
echo 123
echo “hahaha” >> route.txt5. man手册
man man: 查看man手册
man 1 命令 -> man 1 ls
man 2 系统调用 -> man 2 open
man 3 库函数 -> man 3 printf
man 5 文件规定 -> man 5 passwd6. su 临时改变用户的身份
su root• su -/su root(sudo su)
su root是获取root权限不获取环境
su root - 是获取root权限和环境
sudo root 是临时获取root权限和环境
sudo是一种权限管理机制,依赖于/etc/sudoers这个文件,定义授权给哪个用户可以以管理员的身份执行管理命令7. date 显示设置的系统时间
8. 清屏ctrl+l system(“clear”)
【9】 shell中的用户管理
1. 添加用户:adduser 用户名
如果是普通用户:sudo adduser haha
[sudo] password for linux:
Adding user haha' ... Adding new grouphaha’ (1001) …
Adding new user haha' (1002) with grouphaha’ …
Creating home directory /home/haha' ... //创建家目录 Copying files from/etc/skel’ … //拷贝模板文件
Enter new UNIX password: //新用户的密码
Retype new UNIX password: //再次输入新用户密码
passwd: password updated successfully
Changing the user information for haha
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
linux@ubuntu:/root$ su haha //切换到haha用户
新建的haha用户没有sudo权限的• /etc/passwd 保存用户信息
/etc/skel 模板文件(新用户的配置文件)
/etc/shadow 保存密码的文件
/etc/group 保存组信息文件2. id 用户名
uid=1002(haha) gid=1001(haha) groups=1001(haha)3. 切换用户:su 用户名
4. 修改密码
sudo passwd 用户名
root@ubuntu:/home# passwd haha
Enter new UNIX password: //没有回显
Retype new UNIX password:
passwd: password updated successfully5. 退出用户 exit
6. deluser --remove-home 用户名
删除用户的同时把目录文件删除干净
root@ubuntu:/home# deluser --remove-home haha
Looking for files to backup/remove …
Removing files …
Removing user haha' ... Warning: grouphaha’ has no more members.
Done.
root@ubuntu:/home# su haha
Unknown id: haha
如果删除不掉:
su root
ps aux | grep haha
kill -9 进程号
终端关闭 - 再次打开 - su root
ps aux | grep haha
deluser --remove-home haha[作业]
1. 学生管理系统
typedef struct
{
char name[15];
int age;
float score;
}student_ttypedef struct
{
int n; //实际的学生人数
student_t stu[30]; //班级里最多有30个人
}class_t1. 向班级添加学生 0<=n<=30
2. 输入学生姓名删除学生 同名的都删除
1 张三 1 李四
2 李四
3 张三3. 排序 冒泡
4. 修改 输入学生姓名修改信息
5. 查找
6. 退出
==========================================
1.添加 2.查询 3.删除 4.排序 5.查找 6.退出1)枚举
2)宏定义定义人数
3)malloc开辟空间
linux sudo dpkg linux sudo dpkg -i
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
linux下dpkg详解
linux命令dpkg详解,转后续有待补充……
linux dpkg