华清远见学习笔记—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语言基础 的相关文章

  • 用另一个文件的标签为图表(ggplot2)中的标题添加下标

    在我的程序中 我有两个主要文件 第一个包含数据 第二个包含标签 或图形标题 文件总数1 数据 3 10000 3 32039232 1 0 0017290351 2 0 0002781092 3 10001 3 32101193 1 0 0
  • 在 execl 在输出中不可见之前打印

    include
  • linux新手关于嵌入式linux设备驱动的问题

    最近在研究linux驱动 正如我读过的那些文章所说 设备驱动程序模块很可能会根据内核的需要自动加载 因此我想知道内核如何确定为特定设备 声卡 I2C spi 设备 等 我也无法彻底想象内核如何在启动时检测每个硬件设备 与嵌入式linux相关
  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 如何在 Linux 上通过 FTP 递归下载文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐

  • 硬件系统工程师宝典(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 嵌入式开发基