Linux C高级
【0】 自我介绍: 浦 课堂氛围: 无代沟 有问题直接说 多尝试
【1】 授课任务 5-6天
1. Linux系统命令 补充 全面 
2. shell脚本 和C一致是个独立的语言 稍微有难度(C逻辑)规矩 
3. C高级 - 学生管理系统 强化结构体
4. makefile (读懂) GDB(调试)
【2】 怎么学习LinuxC高级
1.写笔记 dpkg -i -s -P 
2.加强记忆 
3.笔试占的比例比较大

【1】什么是嵌入式? 你自己的理解 感悟
(软硬结合 -- 举例子 手机 冰箱 智能家居 小度小度 小爱同学 无人分拣 北京无人驾驶租出车 自动送餐机器人)
可裁剪 系统 移动便携? 传感器
以计算机应用为中心,软硬件可裁剪,专用计算机系统(通用计算机系统Windows)
对功耗 体积 成本 可靠性有特定要求

操作系统  --- 内核
Windows --- NT内核
Ubuntu --- Linux内核
MacOS ---- Unix
Android -- Linux 
ios --- Unix

为什么会使用Linux? --- 开源 可裁剪 移植性好 支持硬件众多
硬件裁剪 -- 不要什么了就在画PCB的时候去掉
软件裁剪 -- 对应的程序就不写

【2】Linux系统由来
1965 - Multics计划 可以同时登陆300人 - 失败了
1969 - 贝尔实验室(汤姆森肯 四周)unics
1973 - C语言风格 Unix(收费) -- 大学里面推广(SystemV 伯克利分校(TCP/IP))
1984 - 理查德 自由软件  -- GNU (GNU is not Unix)-- 遵循GPL协议(开源保护协议)
       bash(终端解析器) glibc库(C库 -  printf scanf)
1991 - Linus - Linux开源不收费 (不对个人收费 面向企业收费)
高德地图: 如果高德不写 淘宝就得自己开发

* Linux系统: 把这个Linux内核编译出来的就叫Linux系统
  linux内核: 一段代码

1. 查看内核版本的命令 
   uname -r
   cat /proc/version
   3.2.0-29-generic-pae
   主版本号.次版本号.修订次数 - 编译次数 - 内核描述信息
2. 查看Ubuntu版本
   cat /etc/issue
   sudo lsb_release -a
3. Linux系统
   Ubuntu: 更新及时 用户体验感 人道主义 桌面性能优越 有Windows有界面交互
   Redhat: 服务器上面 更新速度不快 所以很稳定
4. 面试题: Linux和Unix的区别
   1)linux开源代码 自由软件 Unix是商业
   2)Unix基本都是硬件配套的 Linux可以运行在多种硬件平台上面
* 使用Unix的环境: 银行 电信 民航 固定型的Unix机

【3】 Linux系统组成
应用层 {glibc}
        APP            APP 命令 shell脚本 
        |                      |
        |                   命令解析器
        |                       |
      可以直接操作内核            |              【0-3G】
-----------------------------------------------------
内核层 五大功能:                                【3-4G】
1. 进程管理
什么是进程: 进程是程序的一次执行过程 (程序是静态的 进程是动态的)
            CPU面向的对象是进程 对进程进行调度
* 买手机买电脑买几核的? -- 几个核?
几个核相当于有几个CPU: CPU1-QQ CPU2-wechat CPU3-tim CPU4-nodepad++
时间片轮询 -- 系统进程的调度

2. 文件管理 -- 文件管理系统
/bin 系统常用的可执行文件 二进制文件
/boot 和Linux相关的启动文件
/dev 设备文件 鼠标 键盘 USB
/lib 共享文件
/mnt 通常会作为挂载点 
/home 用户主目录的默认位置 
/etc 配置文件 passwd(文件里写的是用户的信息)

3. 内存管理 --  申请和释放malloc
4. 设备管理 -- 设备驱动 
5. 网络管理 -- TCP UDP套接字 socket编程

---------------------------------------------------------
硬件层 : 鼠标 显示器 USB

【4】 0-4G内存分配
1. 0-3G有什么区
   堆 - heap malloc出来 先进先出
   栈 - stack 满减栈(地址越用越向下 程序执行完出栈 都在栈顶)先进后出
   静态区
     .data 已经初始化
     .bss 为初始化 一堆0
   .ro  readonly 只读数据段 字符串常量“hello world”
   .text 你写的代码
2. MMU内存映射
   一个a.out 2k左右 存在在真实的物理内存上
3. 1G物理内存满了怎么办? 硬盘保存 swap交换分区(速度慢)

提问练习:
    1. char *p = "hello world"  - 只读数据段
    *p = "haaaaa"  -- 不行 字符常量不能改
    p++  -- 行 栈上 栈可以加减
    2. const作用:
       常量化(只读修饰)
       const int *a a是一个指向整型数的指针 整数不可以修改 指针可以修改
       int * const a a是一个指向整数类型的常指针 指针指向的整型数是可以修改的 指针不可以修改
    3. 被const修饰过的全局变量放在哪里?
       全局变量放在静态存储区 
       const修饰的局部变量在栈上

【5】 三个模式:
    NAT  对外公用的是一个IP地址 可以访问外网
    仅主机 Ubuntu和Windows通信 不可以访问外网
    桥接 Ubuntu和Windows是两个独立的IP 但是都可以访问外网
连不上外网怎么办
    A. 编辑 - 虚拟网络编辑器 - 还原默认设置
    B. 虚拟机 - 设置 - 网络适配器 - 根据需求选择一个
    C. 右上角的网络箭头 -  删除已有的 - ADD - SAVE添加一个新的
    D. 重启你的虚拟机
    E. 安装虚拟机的时候 防火墙? 杀毒软件? 安装纯英文目录? 右键以管理员身份运行?

【6】 Linux系统命令 - 安装软件相关apt-get dpkg
1. 常见的软件包后缀
Windows .exe  Andriod .apk
Ubuntu  .deb  redhat .rpm
2. 软件包名组成
sl     _3.03    -16         _i386                     .deb
软件名  主版本号   次版本号   架构(X86-32位 X64-64位)   后缀
3. 安装命令 只有两个
apt-get : 在线安装 需要依赖网络 安装的时候会将依赖的包一起安装上
dpkg : 离线安装 没有网络 不依赖网络 不检查依赖

* 在软件包出现之前 怎么安装?
ls放在那里? /bin
file ls 
file a.out
ls和a.out都是一段可执行程序  
./a.out  ./表示当前目录 将a.out拷贝到/bin目录下就可以在任意目录下执行

4. 安装 sudo dpkg -i sl_3.03-16_i386.deb (install 一定要打全名)
   执行 直接输入软件名 sl  可以使用man手册查看选项参数
   卸载 sudo dpkg -r sl    (remove 直接写软件名)
   查看状态 sudo dpkg -s sl   (state)
   查看版本 sudo dpkg -l sl    (list)
   查看软件包中各个文件的安装信息 sudo dpkg -L sl    
   完全删除(包括删除配置文件)sudo dpkg -P sl
练习: 如何查看Ubuntu上已经安装的所有的软件
       sudo dpkg -l
      如果目录下面有五个安装包想要一把安装怎么办?
       sudo dpkg -i *.deb

* 换源(文件) : 
      1. update manager -- setting -- download from 
      2. 源文件所在: vim /etc/apt/sources.list
      3. 换源就是指把这个文件换掉

5. 在线安装 apt-get 
   安装 sudo apt-get install sl
   现将软件下载到本地 - 再把软件包安装 - 那么软件包在哪?
   cd /var/cache/apt/archives/
   
   sudo apt-get install sl 小火车
   sudo apt-get install xawtv 摄像头
   sudo apt-get install oneko 小猫
   sudo apt-get install frozen-bubble 泡泡龙
   sudo apt-get install cmatrix 屏保
   sudo apt-get install cowsay 奶牛说
   sudo apt-get install bastet 俄罗斯方块

如果由于故障或者网络原因导致中断了安装,用户既不能重装也不能删除?
1. 检查依赖源: sudo apt-get check
2. 修复:  sudo apt-get -f install

cd /var/lib/apt/lists  本地和服务器地址不同
sudo rm * -rf
sudo apt-get update

卸载 sudo apt-get remove sl
   清除目录下的软件包     sudo apt-get clean
   /var/cache/apt/archives/
   只下载不安装 sudo apt-get download 软件名
   下载源码 sudo apt-get source 软件名
用apt-get安装的软件可以用dpkg卸载

6. 关机和重启命令
   sudo reboot 重启
   sudo shutdown -h now : 立即关机
   sudo shutdown -r now : 立即重启
   sudo shutdown -h +10 "byebye" :定时十分钟后关机
   sudo shutdown -r +10 "byebye" :定时十分钟后重启

7. Vim编辑器
   图形模式的编辑工具gedit
   文本模式的编辑工具 nano (ctrl + x)
   vim输入的三种模式
    命令行模式: YY 3DD P 
    底行模式: :wq :q! :w+文件名 :vsp 
    插入模式: i o a

【7】shell简介(shell命令)
1. shell是一个命令行解析器,把用户的命令解析成系统能理解的指令,实现用户和系统的交互
2. sh->sh->ksh->bash
3. shell命令的格式
   command [-options] arg1 arg2...
   命令     选项    参数
   * 三者之间空格隔开 
     如果想要多个命令同一行书写要;隔开
     如果命令在一行不能写完的时候 用\表明未结束

【8】 1.查看历史记录 history  显示历史记录的大小echo $HISTSIZE
    2.通配符
      [..] :匹配其中指定一个字符
      [ - ]:匹配一个指定字符的范围
      [^..]:除了其中指定的字符 其他的都可以匹配
    touch a.c b.c c.c 1.c 2.c aa.c bb.c cc.c
    ls [ab].c   ---  a.c b.c
    ls [a-c].c  ---  a.c b.c c.c
    ls [^a-c].c ---  1.c 2.c
    3.管道 |  前一条命令的输出作为后一条命令的输入
     ls | wc -w
     wc -w 文件名 : 显示单词的个数
     wc -l 文件名 : 显示文件的行数
     wc -c 文件名 : 显示字符数
    4. grep : 过滤 
       grep "int" test.c 查找文件中的int
    5. cat: 显示文件内容
       cat test.c | grep int
    6. 输入输出重定向
       将终端输出的内容重定向到一个文件
       ifconfig > ip.txt 以新建的方式重定向
       ifconfig >> ip.txt 以追加的方式重定向
       < :将文件作为输入源
    7. 命令置换 `` 讲一个命令的输出作为一个命令的参数
       echo "user is `whoami`"
    8. echo 回显 回声
    9. date 获取系统时间日期
    10. Ctrl+L清屏 system("clear")

【9】 shell中的用户管理
    1. sudo adduser 用户名 : 添加用户
    [sudo] password for linux: 
    Adding user `lala' ... // 添加用户
    Adding new group `lala' (1001) ... // 添加用户组
    Adding new user `lala' (1002) with group `lala' ... 
    Creating home directory `/home/lala' ... //创建家目录
    Copying files from `/etc/skel' ... //拷贝模板文件
    Enter new UNIX password: 
    Retype new UNIX password: 
    passwd: password updated successfully
    Changing the user information for lala
    Enter the new value, or press ENTER for the default
        Full Name []: LA
        Room Number []: 12
        Work Phone []: 
        Home Phone []: 
        Other []: 
    Is the information correct? [Y/n] y

*新建的用户没有sudo权限怎么办
[sudo] password for lala: 
lala is not in the sudoers file.  This incident will be reported.
su root
cd /etc
chmod 777 sudoers
照着root修改 root ALL= (ALL:ALL) ALL
chmod 440 sudoers
su lala --- > sudo命令可用

2. su 切换用户
    cat /etc/passwd :保存用户信息
    cat /etc/shadow : 保存密码的文件
    cat /etc/group : 保存组的信息文件
    cat /etc/skel : 模板目录

Linux学习新篇章C高级:day1相关推荐

  1. linux学习总结--linux100day(day1)

    写在前面:我是一名在学习linux的小学生,最近在学习python时,我的老师推荐了github上的一本教材"python100day",100day里面的内容由浅入深,且都具备详 ...

  2. Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定

    本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲 ...

  3. C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2021架构师篇完整版)

    C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2021架构师篇完整版) 前言: 小编之前有跟大家分享过一篇架构师体系知识点总结的文章,今天在原来的基础上有所改变更新(2021版). ...

  4. C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2022架构师篇完整版)

    C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2021架构师篇完整版) 前言: 小编之前有跟大家分享过一篇架构师体系知识点总结的文章,今天在原来的基础上有所改变更新(2021版). ...

  5. Linux bash总结(二) 高级部分(适合初学者学习和非初学者参考)

    版本号 说明 作者 日期  1.0  添加awk和sed的说明  Sky Wang 2013/05/31  1.1  (01) 添加正则表达式(第3部分) (02) 修改awk中错误内容 Sky Wa ...

  6. C/C++ Linux 后台服务器开发高级架构师学习知识路(架构师篇)

    @[前言: 小编从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  7. linux中20个高级命令 8月26日学习笔记

    linux中20个高级命令 文章目录 linux中20个高级命令 1.ifconfig命令 1.1 检查所有网络接口 1.2 禁用网卡 1.3 启用网卡 1.4为网卡分配 IP 地址 1.5 更改网卡 ...

  8. (零)我为什么要写Linux学习笔记?

    我对Linux有强烈的好奇心,兴趣:写学习笔记会让我有成就感:我记忆力实在不好.好吧,其实真正原因是:如果我能把自己学到的知识简明扼要的讲出来,写出来,那便证明我真的学懂了我想学的知识.没时间怎么办? ...

  9. Linux学习之Linux历史

    Linux学习之Linux历史 一.UNIX发展史 1968年,一些来自通用电器公司.贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统.Multics在多任务文件管理和用户 ...

  10. Linux学习教程,Linux入门教程(超详细)| 网址推荐

    今天发现一个Linux中文教程,再此收藏备份. 目录 第1章 Linux简介 第2章 Linux安装 第3章 Linux文件和目录管理 第4章 Linux打包(归档)和压缩 第5章 Vim文本编辑器 ...

最新文章

  1. 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array...
  2. vs社区版到期离线激活_vs2019离线安装包
  3. ABAP函数:SD_VBAP_READ_WITH_VBELN(根据销售订单读取表vbap中的信息)
  4. 女朋友也能看懂的Zookeeper分布式锁原理
  5. 使用ffmpeg将ASS字幕打进视频流中
  6. php新年倒计时源码,2020新年倒计时网页HTML源代码 | 一叶轻舟
  7. Elk-Metricbeat配置Tomcat的日志分析 (Metricbeat-part3)
  8. 【股票】融资融券基本概念
  9. 不用等微信官方!微信圣诞帽,我用Python就能搞定!
  10. This view is not constrained vertically: at runtime
  11. 前端如何修改网页的标题栏图标和名称
  12. linux基础知识复习学习笔记
  13. 微信聊天记录没有备份可以恢复吗?吐血整理分享
  14. 20、随机图片验证码API接口,免费好用
  15. 深入了解JVM之类文件结构(三)
  16. 如何在程序里写死一张图片(base64编码,OpenCV)
  17. 报错 Non-OK-status CudaLaunchKernel
  18. proto3字段值为空时被忽略问题
  19. 摄影构图的基本要领!
  20. Windows系统使用telnet命令

热门文章

  1. 芯片开发语言的简单区别介绍。Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等
  2. 迅雷极速版任务出错的解决办法(亲测可用)
  3. 转载--多核DSP快速入门
  4. Oracle数据库资料收藏
  5. origin画图初步入门
  6. 简单查询多个D速物流,并分析未签收延误的单号
  7. C语言2019软件,c语言模拟编程学习软件v2019 最新版
  8. 《深入浅出WPF》-刘铁猛学习笔记——XAML
  9. 读书笔记-《麦肯锡方法》
  10. TIDSP TMS320F28075 芯片串口烧录软件编写