华清远见学习笔记—Level1—Day1—必备Linux命令和C语言基础

2023-11-09

本专栏为个人在华清远见嵌入式linux学习期间的笔记,希望能与各位读者共同进步!

文章目录


前言

必备Linux命令和C语言基础:

通过今天课的学习,学员可以熟悉linux系统的一些重要命令,在linux下进行C语言程序的编写、编译及调试。


一、环境安装

1.Linux文件系统是树形结构,弱分区,重文件。

2.常用EXT4分区格式。

3.基础分区:

		/       根分区  
        /boot   启动分区  
		/swap   交换分区(常用物理内存的两倍)   
		/home   家分区

二、文件和目录相关命令

1.嵌入式开发基本上都基于Linux系统+C语言。

2.文件系统层次结构标准FHS:

		/bin   二进制文件(命令)
		/boot  存放的系统启动时要用到的程序
		/dev   包含了所有linux系统中使用的外部设备
		/etc   系统管理要用的各种配置文件和子目录
		/lib   存放系统动态链接共享库
		/home  普通用户的主目录
		/root  根用户(超级用户)的主目录

3.linux常用命令:

	pwd  	显示当前位置
	ls   	列出目录内容 -a 显示全部文件 -l 长格式详情显示 -R 递归显示
	cd   	进入目录
	df -T   查看文件系统的信息
    cat  	打印文件内容 -s 多个空行合并成一个空行显示 -b 加行号显示
	nl   	加行号打印文件内容  效果同 cat -b
	head 	打印文件前n行 可跟-n为参数 n为数字 默认n=10
    tail 	打印文件后n行 可跟-n为参数 n为数字 默认n=10
	cp   	复制命令 cp 源文件 目标文件 -i 覆盖时交互提示 -r 文件夹递归
	mv   	移动命令(可改名) mv 源文件 目标文件
	touch	创建文件或更新时间戳
    rm   	删除文件  -i 交互询问 -r 删除目录 
    mkdir 	创建文件夹 -p 级联创建

4.文件的权限:

权限类型 应用于目录 应用于文件
读r 读取目录或子目录内容的权限 查看文件的权限
写w 创建、修改或删除文件或子目录 允许修改文件
执行x 进入目录的权限 允许允许程序
- 无权限 无权限
权限顺序
用户(创建者) 同组用户 其他用户

三、vi编辑器的使用

1.vi 后跟文件名 有则打开文件,无则创建文件。

2.vi 有三种模式:

命令行模式	最初进入vi时的模式,可以复制粘贴
插入模式		进行文件编辑,按ESC键可以回到命令行模式
底行模式		可以进行文件的保存、退出、查找、替换、列出行号等 

3.vi 模式切换和命令

	a  	 		插入模式当前位置后一个字符位置插入
	i  	 		插入模式当前位置插入
	o 	 		插入模式当前行下方空行插入
	A 	 		插入模式当前行行尾插入
	I 	 		插入模式当前行行首插入
	O 	 		插入模式当前行上方空行插入
    键盘ESC   	进入命令状态
    :! command 	在vi中执行外部命令command,按回车键返回vi
    [N]x 		删除从光标位置开始的连续N个字符
    [N]dd  		删除从光标位置开始的连续N行
    [N]yy  		复制从光标位置开始的连续N行
    p 			粘贴复制的文本到光标下面一行的位置
	P			粘贴复制的文本到光标上面一行的位置
	u			取消上一次操作
    :q			退出没有修改的文件,若修改了未保存则无效
    :q!			强制退出,不保存修改
    :w			保存文件
    :x			保存并退出
    :wq			保存并退出 等同于:x
    :x file		另存为file,不退出
    :r file		读入file的内容插入到光标位置

4.vi 光标命令

	h			向左移动光标
	j			向下移动光标
	k			向上移动光标
	l			向右移动光标
	:N			移动光标到第N行
	1G			移动光标到文件的第一行
    G			移动光标到文件的最后一行
 :set number    显示行号
 :set nonumber	不显示行号

5.vi 查找命令

	/string 	查找string处的字符串   n继续查找 N反向继续查找  支持正则表达式

6.vi 替换命令

	:范围 s/old/new		省略范围默认当前行
	:.,$ s/old/new		从当前行到尾行
	:1,$ s/old/new		从头到尾行(全文)
	:% s/old/new		从头到尾行(全文)
	:范围 s/old/new/g	加g为全部替换  不加换第一个

7.vi 精准复制剪切命令

	y0			将光标至行首的字符拷入剪贴板
	y$			将光标至行尾的字符拷入剪贴板
	d0			将光标至行首的字符剪切入剪贴板
	d$			将光标至行尾的字符剪切入剪贴板
    n,m y		n行到m行复制
    n,m d		n行到m行剪切或删除

四、基础知识

1.冯·诺依曼结构

	输入设备  存储器  运算器  控制器  输出设备

2.程序设计步骤

	编辑 → 编译 → 链接 → 执行、调试

五、数据的表示

1.计算机只识别二进制

计算机只能识别0、1的数据形式,能够进行算术运算得到明确数值概念的信息称为计算机数值数据,
其余的信息称为非数值数据。

2.数值数据的四种进制表示

数值数据可以表示为十进制、二进制、十六进制、八进制。

3.基数与位权

基数是指该进位制中允许选用的基本数码的个数;而位权的大小是以基数为底,数字所在位置的序号为指数的整数次幂。

4.字符数据

字符数据在机器内也被变换成二进制编码的形式。国际上普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII码。

查看命令:man ASCII

5.原码、反码、补码

正数的原码、反码、补码是相同的;负数的原码首位为符号位,0正1负,反码符号位不变,其余位取反,补码为反码加1。

例:

十进制5 正数 负数
原码 00000101 10000101
反码 00000101 11111010
补码 00000101 11111011

六、程序的编译和调试

1. gcc(GNU Compiler Collection)

gcc(GNU Compiler Collection)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:

	.c 			c语言源代码
	.h			程序所包含的头文件 	
	.i			已经预处理过的C源代码文件
	.s	 		汇编语言源代码文件
	.o	 		编译后的目标文件

2. gcc 编译命令

	-o			输出可执行文件
	-c			只要求编译器输出目标代码(.o文件),而不必输出可执行文件
	-g			用于调试

./hello 查看输出结果

3. 代码调试

	__FILE__ 		显示文件名
	__LINE__ 		显示当前执行行号
	__FUNCTION__	显示当前函数名

总结

这是进入嵌入式Linux的第一课,必须要熟练掌握,就跟勇士出发去打怪之前必须去村口的铁匠铺买的剑一样,如果熟练掌握,往后必将所向披靡,如果掌握不熟练,可能会连连挫败,故应多次回来查看巩固。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华清远见学习笔记—Level1—Day1—必备Linux命令和C语言基础 的相关文章

  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 当用户按下打印时运行脚本,并且在脚本结束之前不开始假脱机(linux,cups)

    我需要做的是结合用户按下打印来执行 python 程序 脚本 并且在该程序退出之前不要让打印作业假脱机 原因是打印驱动程序不是开源的 我需要更改用户设置 在本例中是部门 ID 和密码 通常是每个用户 但因为这是一个信息亭 具有相同帐户的不同
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • linux命令中括号的用途是什么[重复]

    这个问题在这里已经有答案了 我在 Linux 终端中运行以下命令 谁能告诉我 Linux 终端中括号和以下命令的用途是什么 echo GET HTTP 1 0 echo 主机 www google com echo 数控 www googl
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • Raspberry 交叉编译 - 执行程序以“分段错误”结束

    我有一个自己编写的程序 我想从我的 x86 机器上为 Raspberry Pi 构建它 我正在使用 eclipse 生成的 makefile 并且无法更改此内容 我已经阅读了 CC for raspi 的教程 Hackaday 链接 htt
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • C - 为什么我无法映射较小(256UL 或更小)的内存?

    请告诉我 为什么我的简单应用程序无法映射较小的内存 而且 为什么有这样一个特定的边界 257UL define MAP SIZE 256UL or below fail define MAP SIZE 257UL ok include
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 如何确定代码是否在信号处理程序上下文中运行?

    我刚刚发现有人正在从信号处理程序调用我编写的绝对不是异步信号安全的函数 所以 现在我很好奇 如何避免这种情况再次发生 我希望能够轻松确定我的代码是否在信号处理程序上下文中运行 语言是 C 但该解决方案不适用于任何语言吗 int myfunc
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • C++:Linux平台上的线程同步场景

    我正在为 Linux 平台实现多线程 C 程序 其中我需要类似于 WaitForMultipleObjects 的功能 在搜索解决方案时 我发现有一些文章描述了如何在 Linux 中实现 WaitForMultipleObjects 功能
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • 如何在文件夹中的 xml 文件中 grep 一个单词

    我知道我可以使用 grep 在这样的文件夹中的所有文件中查找单词 grep rn core 但我当前的目录有很多子目录 我只想搜索当前目录及其所有子目录中存在的所有 xml 文件 我怎样才能做到这一点 我试过这个 grep rn core
  • 如何将 elf 解释器(ld-linux.so.2/ld-2.17.so)构建为静态库?

    如果我的问题不准确 我深表歉意 因为我没有太多 Linux 相关经验 我目前正在构建一个 Linux 从头开始 主要遵循 linuxfromscratch org 版本的指南 7 3 我遇到了以下问题 当我构建可执行文件时 获取一个称为 E
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有

随机推荐

  • 硬件系统工程师宝典(12)-----EMC应该知道的事

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到在做电源完整性分析时去耦电容要遵循的规则 大电容的去耦半径大 小电容的去耦半径小 电容焊盘扇出时 双过孔可以减少寄生电感等 今天我们开始学习
  • python读取、显示、保存图片

    一 opencv 读 cv2 imread path mode 读取出来是ndarray 如果是读取灰度图 需要指定颜色模式为cv2 IMREAD GRAYSCALE 这样读取出的是一个二维数组 而不是彩色图像的三维数组 如果读取彩色图像
  • ps2023如何导出svg

    在 文件 文件 导出首选项 里勾选 使用旧版导出为 就可以在图层里右键导出svg啦 否则切图也导不出svg 右键导出为里面的格式也没有svg选项 官方建议使用以下解决方案 https helpx adobe com photoshop us
  • windows配置git公钥,读写远程git项目

    首先Windows电脑需要下载并安装git 从官网直接下载然后安装即可 https git scm com download win 添加公钥 ssh keygen t rsa C xxxxx xx com 注意 这个xxxxx xx co
  • Hadoop是小象——Hadoop集群安装配置

    文章目录 所需软件 集群网络配置 集群SSH免密登陆设置 Hadoop安装配置 所需软件 Linux所需软件包括 JavaTM1 5 x 必须安装 建议选择Sun公司发行的Java版本 以前安装过 ssh 必须安装并且保证 sshd一直运行
  • 不认识的东西

    typedef struct 1 struct定义一个结构体 2 typedef给这个结构体改一个名字 typedef struct student Student Student就是这个结构体修改后的名字
  • 数据结构——单链表的实现(c语言版)

    前言 单链表作为顺序表的一种 了解并且熟悉它的结构对于我们学习更加复杂的数据结构是有一定意义的 虽然单链表有一定的缺陷 但是单链表也有它存在的价值 它也是作为其他数据结构的一部分出现的 比如在图 哈希表中 目录 1 链表节点的结构 2 头插
  • cublas_v2.h: No such file or directory

    caffe正常编译了 但是另外一个工程中使用caffe时显示 cublas v2 h No such file or directory 直接在该工程的cmakelist文件中加入 INCLUDE DIRECTORIES usr local
  • Git Pull 错误

    当是用TortoiseGit 从多个源 Pull过数据后 不能再使用默认的 Remote origin选项进行Pull操作 每个工程 Commit Push前需要Pull操作时 采用独立的URL 即 下面的选项 Arbitrary URL
  • Activiti进阶(九)——接收任务(ReceiveTask)

    转载地址 http blog csdn net zjx86320 viewmode contents 接收任务 ReceiveTask 即等待任务 接收任务是一个简单任务 它会等待对应消息的到达 当前 官方只实现 了这个任务的Java语义
  • HwBinder驱动篇-Android10.0 HwBinder通信原理(十)

    Android取经之路 的源码都基于Android Q 10 0 进行分析 Android取经之路 系列文章 系统启动篇 Android系统架构Android是怎么启动的Android 10 0系统启动之init进程Android10 0系
  • 解决maven配置报错:The JAVA_HOME environment variable is not defined correctly(亲测有效)

    显然是环境变量的问题导致的 1 对于初学者而言 建议配置两个maven环境变量 2 添加至path 变量值是 MAVEN HOME bin M2 HOME bin 3 进入cmd 输入mvn v进行测试 如果是下面这样 说明就成功了 4 如
  • pytorch的语义分割------数据增广

    官方文档 https pytorch org docs stable torchvision transforms html highlight torchvision 20transforms 20functional module to
  • maven编译项目抛出out of memory

    是java堆内存过小的原因造成的 新增环境变量 MAVEN OPTS Xmx512m 问题解决
  • 【融职培训】Web前端学习 第11章 微信开发5 微信支付

    一 概述 如果需要实现微信支付功能 需要有一个已认证的微信服务号 并且开通微信支付 开通后微信会提供一个商户ID 有了这个ID才能成功调用微信支付接口 开通微信支付后 需要在微信支付后台 产品中心 gt 开发配置 中配置 JSAPI支付授权
  • 不小心在服务器上删了文件怎么恢复出厂设置,文件删除了怎么恢复?这样才能彻底清除彻底清除...

    现在人换手机就像换衣服 虽然不是一天一换 但大多数人一年一换已经成为常态 所以闲置的旧手机也越来越多 一般旧手机大家都是闲置 或者二手转卖 或是送给别人使用 如此一来 旧手机上各种数据就需要彻底清除 否则旧手机上个人信息一旦泄露 很可能会给
  • HTML教程

    第一章 HTML标签 网页格式 html 网页的开始与结束 body 网页的主体部分 显示在网页中用户可以浏览到的内容 head 网页的头部 大部分不显示在用户浏览界面 meta 网页的摘要信息 不会显示在浏览器浏览界面 title 网页标
  • 人工智能-Tansformer-全套讲解15-20章

    第21章 基于Bayesian Theory的MRC文本理解基础经典模型算法详解 1 Bayesian prior在模型训练时候对Weight控制 训练速度影响等功能详解 2 Bayesian prior能够提供模型训练速度和质量的数学原理
  • angular指令心得(ng-model)

    angular指令心得 ng model 在项目中编写指令 常常会依赖其他的指令来实现想要达到的功能 其中最常用到的便是ng model 它为我们明确了需要绑定的属性 虽然在指令中可以通过通过使用独立作用域的 来进行双向绑定 但使用ng m
  • 华清远见学习笔记—Level1—Day1—必备Linux命令和C语言基础

    本专栏为个人在华清远见嵌入式linux学习期间的笔记 希望能与各位读者共同进步 文章目录 前言 一 环境安装 1 Linux文件系统是树形结构 弱分区 重文件 2 常用EXT4分区格式 3 基础分区 二 文件和目录相关命令 1 嵌入式开发基