• Linux操作系统使用及C高级编程


    一、Linux介绍及环境配置

    Linux介绍及环境配置

    一、UNIX、LINUX和GNU简介

    1、UNIX简介

    2、Linux

    1)操作系统内核+软件=操作系统

    2)操作系统内核-能统一的管理硬件了

    3)基于UNIX,UNIX不开源,对硬件要求专一,因此出现了Linux

    3、GNU

    Linux=linux内核+软件

    二、环境介绍

    三、解压文件

    四、网络配置

    1、桥接模式-和开发板通信首选,可以访问外网

    局域网内可以、校园网或公司内网不可以

    2、nat模式-访问外网首选,不能访问局域,不能和板子通信

    主机虚拟出来的虚拟机

    可以访问外网,但不能通过外网访问虚拟机

    如果是校园网下载软件可以选择nat模式

    3、仅主机模式-不能访问外网,也不能访问局域网

    了解即可

    4、网络配置

    编辑-虚拟网络编辑器-还原默认设置(每次配置前还原)

    1)先在虚拟网路编辑器设置

    2)在网络适配器使用

    重新配置

    5、在浏览器中可以打开

    如果打不开:设置DNS

    默认网关一般是ip最后变成.1

    二、软件包管理

    一、软件包管理

    (一)流行的软件包管理机制

    1、APT软件包优点

    1)检查和修复软件包依赖关系

    2)在线获取软件包

    (二)软件包的类型

    1、二进制(deb)和源码包(deb-src)

    2、file 文件包名-查看软件包类型

    file命令-查看

    3、软件包的命名

    4、软件包的命名

    二、在线软件包管理

    (一)APT的工作原理

    (二)更新软件源

    1、vi 软件包:直接更改

    2、图形界面更换软件源

    3、更新完软件包之后要用sudo apt-get update更新(要保证网络通畅)

    (三)APT相关命令

    三、离线软件包管理

    在安装和删除时需要sudo超级用户权限

     dpkg命令

    注意删除的时候跟的是软件名不是软件包名

    三、linux shell命令(文件搜索、文件处理、压缩解压)

    一、查看文件相关命令

    (一)查看命令

    1、cat命令:从前往后读

    cat+文件:显示代码

    cat/cat -:输入什么输出什么

    2、tac命令:从后往前读

    3、more命令:显示打印了多少(只能向前,不能向后)

    4、less +文件

    上下键控制 q退出

    5、head+文件名:默认显示前10行

    (二)硬链接和软链接

    1、创建链接的方式 

    硬链接 :ln 文件名 硬链接名

    通过硬链接可以修改文件的内容

    软连接: ln -s 文件名 软连接名

    inode号

    2、将原来的文件移动(硬链接的优点)

    3、从新移动回原文件

    4、如果删除原文件,创建同名文件(软链接的优点)

    二、文件搜索相关命令

    (一)查找文件

    1、按名查找

    忽略大小写

    2、按类型查找

    3、符合条件

    (二)查找文件内容

    (三)其他相关命令

    三、文件处理相关命令

    1、cut命令

    2、sed命令 修改

    1、打印指定行 -n

    2、删除指定行(不加-i,只在预览中可以看,加了-i,实际的文件会修改)

    1)预览删除

    2)实际删除

    3、追加 a

    1)在第一行追加hi

    4、在当前行进行插入 i

    5、替换 s(g表示的是全篇)

    3、awk命令(按列操作)(默认以空格为分割)

    1)打印行号个第一个字段

    2)打印列数和第三个字段

    3)打印最后一列

    4)指定分隔符‘:’

    5)第一行是linux的都打印出来

    四、解压缩相关命令

    (一)解压缩文件的意义

    (二)解压缩相关的命令

    1、移植性好,但不能归档只能压缩单个文件,不能压缩目录

    分别压缩和解压,不会归档

    2、

    *解压全部bz2适配的压缩包

    3、可以压缩目录,保留源文件;方便在Linux和windows间交换文件

    4、zip保留源文件

    5、tar:合并归档+压缩

    四、linux shell命令(进程管理、用户管理)

    一、进程管理相关命令

    (一)进程的概念

    1、进程的概念

     程序没有生命,进程有生命

    (二)查看进程的命令

    1、查看进程的命令-ps

    PID是进程的唯一标识

    PPID展示的是进程的父进程

    2、top 实时查看进程 q退出

    3、pstree-进程的子父信息以树状图的形式展开

    (三)发送信号命令

    二、用户管理相关命令

    (一)用户管理相关文件介绍

    (二)用户管理相关命令介绍

    1、创建用户

    在/etc/passwd中

    2、修改用户密码

    3、修改组名

    4、修改家目录(修改路径)

    既修改目录又修改用户名

    -d:修改路径

    -l:修改用户名

    5、删除

    五、linux shell脚本编程(概念、变量、语句)

    一、shell脚本概述

    (一)shell脚本概述

    (二)shell脚本编写流程

    1、先对命令进行测试

    命令没有问题再写进集合中

    本质上是shell命令的集合

    2、第一个shell文件

    3、shell脚本以.sh结尾

    4、注释行#

    一般shell脚本先要说明一下shell的版本

    5、shell脚本是一个解释性的语言,不需要编译,边执行边检查错误

    6、执行shell脚本:

    1)bash+文件名

    2)source+文件名

    3)./shell.sh(前提是有执行权限)

    二、shell脚本变量上

    (一)变量的介绍

    (二)变量的作用

    环境变量、系统变量(bash)、自定义变量

    (三)变量的命名要求

    (四)变量的分类

    1、定义变量的两种方式(在shell脚本下变量用大写)

    注意在shell脚本下,等号的赋值前后是没有空格的

    1)直接在终端定义

    2)在代码中

    2、删除变量unset(echo自带一个换行)

    三、shell脚本变量下

    (一)用户自定义变量

    1、单引号和双引号

    2、为变量赋另外一个变量的值的两种方式

    1)反撇号(英文状态下)

    2)双重$

    3、数组

    4、取消高亮

    命令界面:noh

    (二)只读变量(适用于变量或者文件名不能被修改)

    1、只读变量可以被打印

    2、只读变量不能被修改

    3、只读变量不能被删除

    4、只读变量只能强制关闭终端

    (三)位置变量和预定义变量

    1、$@:是依次显示每一个数据

    $*:是作为一组输出

    (四)环境变量

    四、shell语句

    (一)shell程序

    (二)说明性语句-解释语句

    1、

    (三)功能性语句

    以空格隔开

    2、

    ``命令置换符

    赋值符号=两边不加空格

    加减号+/-两边要加空格

    乘号比较特殊需要转译 \*

    3、

    1)测试字符串是否相等

    相等为0

    不相等为1

    2)-z 测试字符串长度是否为0

    3)-n 测试字符串长度是否不为0

    4、整数测试

    5、文件测试

    (四)结构性语句

    六、linux shell脚本编程(分支语句、循环语句)

    一、shell分支语句

    (一)分支语句(对标if)

    1、echo $?

    如果执行成功会返回0

    如果执行失败会返回其他

    2、分支语句if

    1)test可以用[]代替(注意[]两端要用空格)

    也可以打印多行

    2)elfi

    3)查找命令

    查找用户是否存在

    二、多路分支语句(对标switch case)

    1、分号不能丢弃,最后是esac

    三、shell循环语句

    (一)for循环

    1、

    2、$@和$*的区别

    1)$@和$*没有区别

    2)”$*“将输入的作为一组,而“$@“和原来一样

    3、for直接赋值

    4、(())

    (二)while循环

    (三)循环控制语句(对标break和continue)

    七、linux shell脚本编程(函数、练习)

    一、函数的定义

    二、函数的调用

    2、传参

    三、变量的作用域

    1、全局

    2、函数体内部

    当是局部变量时

    八、Linux TFFP服务搭建及使用

    (一)TFTP服务器介绍

    1、TFTP的介绍

    1)什么是服务器

    微信、qq、tb客户端

    客户端-服务器转发

    2)TFTP 简单传输文件 电脑-电脑 电脑-开发板 规定传输规则

    端口号:每个进程和服务器都有唯一

    2、TFTP文件传输的特点

    3、TFTP服务器的实用场景

    用命令可以直接下载所需的文件

    (二)TFTP服务器搭建

    1、配置介绍

    1)网络通常

    2)及时更新软件源

    sudo apt-get update

    3)安装服务器和客户端

    tftpd:服务器

    tftp:客户端

    4)修改配置文件

    创建tftpboot目录(作为服务器提供文件的目录)

    将他的环境配置到服务器

    -l:不依赖其他进程,直接启动

    将来开发板下载的文件都在该目录下

    5)修改服务器配置后更新

    6)测试tftpboot如何使用

    下载文件

    上传文件

    2、常见错误

    九、Linux NFS服务搭建及使用

    (一)NFS服务器介绍

    1、

    文件系统放在网络中,可以控制不同电脑的文件系统

    开发板的文件系统在网络中,可以在服务器修改

    (二)NFS服务器搭建 

    1、配置介绍

    1)安装软件

    2)创建目录,新建文件测试nfs

    3)配置nfs的路径

    4)重启

    5)挂载

    本地挂载,挂载到/mnt

    板子挂载到根目录/home/linux/nfs/rootfs

    6)本地挂载和服务器可以互相共享

    7)取消挂载

    需要返回其他目录,关闭/mnt

    使用sudo umount /mnt

    2、常见错误

    十、C结构体、结构体数组以及结构体指针

    (一)结构体的意义

    1、

    2、结构体定义

    注意分号

    (二)结构体的概述

    (三)结构体的定义和使用

    (三)结构体数组

    2、打印方式

    (四)结构体指针

    十一、结构体嵌套、大小及位域

    一、结构体嵌套结构体

    二、结构体的大小

    (一)结构体的大小

    (二)字节对齐

    自动对齐,简化判断

    (三)结构体大小的计算方法

    自身对齐:数据类型

    默认对齐:4

    有效对齐:取自身和默认的最小值

    地址除以有效必须是整除

    最终地址,看最大有效 

    三、位域

    (一)位域的定义

    (二)位于变量的说明

    (三)位域的使用

    十二、内存管理

    内存管理

    “专人转事”

    不同数据放在不同的分区 

    栈区和堆区是代码运行之后才可以,其他之前也可以

    十三、动态分配内存

    一、动态内存的使用

    1、头文件

    #include  

    2、申请的空间不能多次释放

    3、申请空间成功返回首地址

    二、

    内存泄露:申请了空间但没有来得及释放

    十四、GCC编译工具

    一、GCC编译工具(一)

    (一)GCC简介

    (二)GCC编译过程

    1、预处理阶段 .i - 将#的头文件展开

    头文件和宏定义

    gcc -E test.c -o test.i

    2、编译阶段

    gcc -S gcc.i -o gcc.s

    修改后编译成功

    生成汇编文件

    3、处理生成目标文件

     生成二进制文件

    4、链接C库-生成可执行文件

    5、简化

    二、GCC编译工具(二)

    (三)GCC常用选项

    1、优化

    2、指定头文件的位置

    3、分文件

    .h:宏定义、结构体共用体、声明函数

    .c:函数原型

    .c:主函数main

    4、-L:指定链接库

    三、条件编译

    (一)条件编译的概念

    1、分开编译

    (二)在代码中条件编译

    1、#ifdef

    2、#ifdef

    #else

    #endif

    3、#ifndef

    4、#if 1

    5、#define N 1

    (三)GCC编译时条件编译

    十五、注意事项

  • 相关阅读:
    数据结构之反转链表
    【Linux文件篇】磁盘到用户空间:Linux文件系统架构全景
    IDEA Error: java: -source 1.5中不支持 lambda 表达式和 Error:java: Compilation failed
    eslint系统笔记
    Hadoop生态系统(HDFS、ZooKeeper、MapRuduce、Pig....)
    未雨绸缪,前端小知识
    DNA脱氧核糖核酸修饰四氧化三铁|DNA修饰氧化锌|使用方法
    计算机网络——如何构造HTTP请求
    css3多媒体查询
    docker安装postgresql数据库
  • 原文地址:https://blog.csdn.net/m0_57508000/article/details/134000594