LinuxC高级_day1

【1】 什么是嵌入式?

以计算机应用为中心,软硬件可裁剪的专用计算机系统(通用计算机系统windows 系统OS),对功耗体积成本都有特定的要求。
软件可裁剪:网络方面驱动程序可以删除
硬件可裁剪: 画PCB删掉 网口
范围: 小到周边大到航天
专用计算机系统: 京东仓库-智能分拣 北京无人公交车 上海送餐机器人
小爱同学 小度小度

操作系统内核
windowsNT内核
Ubuntulinux
macOSUnix
AndroidLinux
iosUnix
  • 为什么使用linux?
    开源 可移植性强 支持硬件众多

【2】 linux系统由来

1965 - Multics计划 300人同时登陆 失败了
1969 - 贝尔实验室 汤姆森肯 4周(unics) 2人同时登陆(太空旅行)
1973 - C语言风格Unix - 向大学生推广(收费) - systemV 伯克利分校 (TCP IP)
1984 - 理查德自由软件的思想 GNU计划(GNU is not unix) 遵循GPL协议(通用公共许可协议) bash(终端解析器) glibc(printf scanf)
1991 - linus - linux(开源 不收费-对用户收费对企业收费:高德)

Linux系统 - Ubuntu Redhat
linux内核? - 一段代码

  1. 查看内核版本

    uname -r
    cat /proc/version
    

    3.2.0-29-generic-pae
    主版本号.次版本号.修订次数-编译次数 - 关于内核的信息
    LXRLinux:
    https://lxr.missinglinkelectronics.com/linux/

  2. 查看Ubuntu版本

    cat /etc/issue
    
  3. Ubuntu – 人道主义 桌面性能优越 更新及时(用户体验感)
    Redhat – 服务器上 更新不频繁 但是稳定

  4. linux和Unix的区别

    1. linux开源的 自由软件 unix收费的 知识产权保护的传统商业软件
    2. Unix多数与硬件配套 Linux支持多种硬件平台
      (银行-IBM 民航-HP 电信-SUN)

【3】 Linux系统组成

应用层:
在这里插入图片描述

  • 内核层: 内核的五大功能
    进程管理
    文件系统
    内存管理
    设备管理
    网络协议
  1. 进程管理 什么是进程?是程序的一次执行过程 CPU面向的对象是进程
    宏观并行微观串行

    • 买手机 买电脑的几核是什么意思?
      4核 - 相当于有四个CPU
      CPU1-QQ CPU2-wechat CPU3-txt CPU4-google
      时间片轮询 – 系统对进程的调度
  2. 文件管理:windows硬盘分区 C Dpan

    Linux各个文件夹的具体含义

  3. 内存管理:申请释放内存 malloc

  4. 设备管理:设备驱动

  5. 网络管理:socket编程 TCP UDP
    ===============================
    硬件层 : 鼠标 键盘 USB 摄像头 硬盘 U盘

  • 0-4G虚拟内存 printf(%p) – 32位机器
    1G真实的物理内存: 能访问到的地址(寻址空间0x4000 0000 (0xbf8e319c))?
    0-3G(0xc000 0000) 用户空间
    堆 heap malloc
    栈 stack 系统自动开辟
    静态区
    .data 已初始化的变量
    .bss 未初始化的 一堆0 clear bss
    .text
    .ro (readonly)“hello”
    3-4G 内核空间 int - 32位地址 8G int int(内核补丁)

【4】 以前的一些知识
1. 打开终端
ctrl + shift + n 在打开基础上开一个新终端
ctrl + alt + t 直接开一个终端
2. 退出 exit
3. 字体调整
ctrl + shift + “+”
ctrl + “-”
4.
在这里插入图片描述

【5】 联网
1. ping www.baidu.com /firefox火狐浏览器 输入baidu.com 检查是否联网
2. 编辑 - 虚拟网络编辑器 - 还原默认设置
桥接:能够访问外网 Ubuntu和Windows有两个IP
仅主机:不能访问外网 Ubuntu和Windows通信
NAT模式: 能够访问外网 Ubuntu和Windows共用一个IP
3. 虚拟机 - 设置 - 网络适配器
4. 右上角的网络标号 - 编辑连接 - 全部删除 - ADD - SAVE
5. 重启虚拟机

【6】 软件安装相关 dpkg apt-get

  1. 常见的软件包后缀

windows - .exe
Androd - .apk
Ubuntu - .deb
redhat - .rpm

1)怎么复制文件到虚拟机 直接拖拽

mv '/var/run/vmblock-fuse/blockdir/3c361a65/sl_3.03-16_i386.deb' .

2)共享目录 共享文件夹
虚拟机 - 设置 - 选项 - 共享文件夹
右侧: 总是启用
选中 - 移除 - 添加 - 选一个主机的目录
//Ubuntu下共享目录: /mnt/hqfs/share
3)安装软件:

  1. 关防火墙 关杀毒软件

  2. 安装的时候 右键 以管理员身份运行

  3. 安装时候使用英文目录(账户中文也有影响)

  4. 常见的软件包后缀

sl_     3.03-    16_        i386                      .deb

软件名 主版本号 次版本号 架构(windows:X86-32位 X64-64位)

  1. dpkg 离线安装 安装的时候不依赖网络 安装的时候不检查依赖
    apt-get 在线安装 需要依赖网络 安装的同时会将依赖包一并安装上
  • 软件包出现之前怎么安装?
ls - 命令 - 可执行程序 - /bin
  cd /bin   ls -l ls
  file:查看文件信息
  file ls
ls: ELF 32-bit LSB executable, Intel 80386(可执行 32位 小端 文件 架构80386) 
file a.out 
a.out: ELF 32-bit LSB executable, Intel 80386

怎么能让a.out向ls一样执行?

sudo cp a.out /bin

./ – 在当前目录下

  1. dpkg
    安装 sudo dpkg -i sl_3.03-16_i386.deb(软件包全名)
    查看安装状态 sudo dpkg -s sl(软件名)
    Status: install ok installed
    执行sl(直接敲软件名) (man sl可以查看命令后面的参数)
    查看版本号 sudo dpkg -l sl
    软件包信息的安装目录 sudo dpkg -L sl
    卸载sudo dpkg -r sl
    配置文件一起删除 sudo dpkg -P sl
    [tips]
    1. 如何查看Ubuntu上安装的所有软件?
sudo dpkg -l
  1. 如果目录下有5个安装包 怎么一把安装?
  sudo dpkg -i *.deb
  1. apt-get 在线安装
  • 换源
    1)查找输入manager - update manager - downloadfrom
    2) 修改 /etc/apt/source.list文件
    sudo apt-get update

    • 如果出现错误
   /var/lib/apt/lists
   sudo rm * -rf

下载并安装: sudo apt-get install 软件名

  sudo apt-get intsall sl  小火车
  sudo apt-get install oneko 猫咪鼠标
  sudo apt-get install cowsay 奶牛说
  sudo apt-get install cmatrix 屏保
  sudo apt-get install bastet 俄罗斯方块
  sudo apt-get install frozen-bubble 泡泡龙

卸载: 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命令时,如果中断了安装(网络 关机),用户既不能重装也不能卸载?
1)检查依赖源 apt-get check
2)修复 apt-get -f install

【7】复习

  1. cd命令
    cd 相对路径 cd …/day1
    绝对路径 cd /etc
    cd ~ / cd 进入家目录
    cd / 进入根目录
    cd - 返回上一次你进入的目录
    cd … 切换到上一级
    cd . 切换到当前目录
    2) pwd 显示当前路径
    3) touch 文件名
    如果文件存在 更新时间戳
    如果文件不存在 创建一个新文件
    touch 1.c 2.c 3.c同时创建多个文件
    4) mkdir 创建目录
    mkdir -p 1/2/3 创建有层级关系的目录
    mkdir -m 0777 目录名 创建有权限的目录
    mkdir 1 2 3 同时创建三个目录
    5)cp复制
    6)mv 移动 重命名
    7)rm 文件名 删除文件
    rm -rf 目录 // -r:递归删除 -f:强制删除
    rm !(2.c) 删除除了2.c以外的所有文件
    rm *.c 删除所有的.c文件
    8)关机 重启
    sudo shutdown -h now //立即关机
    sudo shutdown -r now //立即重启
    sudo shutdown -h +10 “byebye” //定时10分钟之后关机并显示信息
    sudo shutdown -r +10 “byebye”
    //定时10分钟之后重启并显示信息
    sudo reboot //重启
  2. vi、vim
    其他: gedit nano
    命令行模式: 3YY DD P
    插入模式(编辑模式) : a i o
    底行模式:
    :w 文件名 保存内容到文件名
    :q 退出
    :! 强制
    : set nu 显示行号
    : set nonu 取消行号
    : nohl 取消高亮
    : n eg:vi test.c +8定位到某一行
    替换:
    :%s/旧字符串/新字符串/g
    :%s/abc/www/g 将文档中所有的abc替换为www
    :%s/abc/www/ 每行首次出现的abc替换为www
    :3,7s/abc/www/g 3-7行中所有的abc替换为www
    :3,7s/abc/www/ 3-7行中每行首个abc替换为www
    :4, s / a b c / w w w / g 4 到 最 后 一 行 中 所 有 a b c 替 换 为 w w w : 4 , s/abc/www/g 4到最后一行中所有abc替换为www :4, s/abc/www/g4abcwww:4,s/abc/www/ 4到最后一行每行首个abc替换为www
    10)history 历史记录
    history num : 显示num条记录
    【8】
  1. shell是一个命令行解析器:将用户的命令解析成操作系统能够明白的语言,实现人机交互
    2.格式: 指令 选项 参数
    3.分类: sh csh ksh bash
  2. 一行中输入多条命令 用分号隔开
    三要素之间要有空格隔开
    一条指令太长在一行之内没办法输完 \表示命令没结束

【9】 shell特殊字符

  1. 通配符
    touch a.c b.c c.c aa.c bb.c cc.c 1.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. 管道 | 前一个命令的输出 作为后一个命令输入
    wc -w 文件名 显示文件的单词个数
    wc -l 文件名 显示文件的函数
    wc -c 文件名 显示文件字符数
    eg: ls | wc -w
  3. 输出重定向
    >file :将终端上的东西重定向到文件 file里 以新建的方式打开
    >> file : 以追加的方式打开
  4. 命令置换 `` 将一个命令的输出作为另一个命令的参数
    echo 123 
    echo "user is whoami"  -- user is whoami
    echo "user is `whoami`" -- user is linux

【10】 系统维护命令

  1. man: man man(manaul)用户手册
    1 命令 : man 1 ls
    2 系统调用 : man 2 open
    3 库函数: man 3 printf
    5 文件规定: man 5 passwd

  2. su 切换用户

  • su root/susu -sudo 区别是什么?
    sudo : 权限管理机制 依赖于/etc/sudoers
    su root/su 切换之后只获得权限,不改变工作环境,su之后的目录依然是你用户端的目录
    su - 切换之后不仅获得了权限,并且目录成了真的root用户
  1. echo将内容输出到标准输出

  2. date 显示系统时间

  3. ctrl + l
    system(“clear”) 清屏

  4. 增加用户 (su root)

   adduser 用户名
   Adding user `haha' ... //添加用户
   Adding new group `haha' (1001) ... //添加组
   Adding new user `haha' (1002) with group `haha' ... //把用户加入组
   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
  su haha // 能够切换表示用户增添成功
  • 新添加的用户不能使用sudo命令
  haha is not in the sudoers file.  This incident will be reported=
  su root
  sudo chmod u+x sudoers
  vim /etc/sudoers
  root    ALL=(ALL:ALL) ALL
  haha    ALL=(ALL:ALL) ALL
  sudo chmod u-x sudoers
  su haha
  sudo OK
   /etc/passwd 保存用户信息
   /etc/group  保存组信息文件
   /etc/sudoers sudo权限信息
   /etc/skel    创建用户的莫办文件
   /etc/shadow  保存密码的文件
  1. 删除用户(su root / sudo su root)
   deluser --remove-home 用户名
   //如果删除不成功
   ps aux | grep haha //筛选出所有使用haha的进程
   kill -9 PID        //杀死进程

退出终端,重新打卡一个重复上述操作

成功删除:

   Looking for files to backup/remove ...
   Removing user `haha' ...
   Warning: group `haha' has no more members.
   Done.

   su haha
   Unknown id: haha
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值