Linux学习笔记-程序员宅基地

技术标签: linux  嵌入式  

目录

day1.计算机基础知识

疑问:

待补充知识点:

day2.认识C语言-Windows环境

疑问:

day3走进Linux世界

1.linux与Windows的区别

2.Linux文件系统的层次结构   

3.linux中文件类型

4.linux的基本命令

1)快捷键

2)提示符

3)ls 【选项】【文件】(查看文件)

4)cd (改变目录)

5)touch新建普通文件

6)mkdir创建目录

7)rmdir删除空目录(不常用)

8)rm删除文件或目录

9)cp复制

10)mv移动

5.添加共享文件夹

day4数据的表示

1.数值数据的表示,数码,基,位权,数制

2.进制,进制间转换

3.计算机中数据的单位

4.原码,反码,补码

day5数据类型

1.基本数据类型

2.数据类型转换

day6运算符

1.基本类型

2.优先级

3.额外拓展

day7vi编辑器


day1.计算机基础知识

计算机由CPU(包括运算器与控制器)、输入设备、输出设备、外部存储器(掉电不丢失)、内部存储器(掉电丢失)组成。


让计算机能够理解并执行的指令即程序。


编程语言从机器能够识别的机器语言发展为与机器语言一一对应的汇编语言,再到高级语言。

由于每种机器的机器码不一样,所以同样的功能在不同的电脑上需要不同的机器语言,因此对应的汇编语言也不一样,导致这两种编程方式的移植性不高。


相比于低级语言,高级语言的移植性更好,但为了简化编程以及提高移植性,高级语言进行了层层嵌套,导致编程效率较低。


高级语言又分为底层C语言,面向对象的C++、C#、Java等以及脚本语言Python等,越底层的语言越简单。

编译过程即将高级语言编译为机器语言的过程。

疑问:


1.学习单片机的时候了解到,寄存器分为flash、RAM跟ROM,flash为掉电不丢失用来存储数据,RAM负责处理程序掉电丢失,ROM不太记得了,具体与上述的内外部存储器有什么区别与联系;

答案参考下述链接:

RAM,ROM,Flash区别

RAM,ROM,Flash区别


2.机器语言由于机器码不一样导致移植性较差,这个机器码不一样是因为每台计算的机器码不一样,还是因为操作系统的原因或者是因为什么导致的;

答案参考下述链接:

机器语言、汇编语言、高级语言_机器语言 汇编语言 高级语言-程序员宅基地

待补充知识点:

1.计算机组成原理

day2.认识C语言-Windows环境

C语言特性:
效率高、可移植性高、灵活度高

编译型语言过程:
编写代码
源代码统一交给编译器
编译器编译为机器语言,打包成一个可执行文件
将文件交给CPU执行
优点:效率高
缺点:跨平台能力弱,不方便调试

解释型语言过程:
程序交给解释器
解释器每行代码逐一解释成机器语言,CPU一行一行执行
优点:跨平台能力强(通过更换操作系统解释器达到跨平台目的),易于调试
缺点:执行速度慢,程序有修改或BUG需要不停编译  

疑问:


代码可移植性跟跨平台能力的区别在哪?

我的理解为C语言可以通过不同的编译器将源代码编译为想要的机器语言,从而实现各个平台的移植,因此它的代码可移植性高;
解释型语言的程序文本形式存在,本身不需要编译,所以它可以在任何平台上运行,对应的每个平台解释器不一样,所以跨平台能力强。

day3走进Linux世界

1.linux与Windows的区别

linux不像Windows有驱动器符号,其所有东西都在根目录下,根目录用 / 表示

linux上的文件名区分大小写

2.Linux文件系统的层次结构   

/bin bin是二进制(binary)的缩写

/boot 存放的是系统启动时要用的程序

/dev 包含了linux系统中使用的外部设备

/etc 存放了系统管理时要用的各种配置文件和子目录

/lib 存放系统动态连接共享库

/home 普通用户的主目录,该目录下会有以普通用户用户名命名的文件夹

/root 根用户(超级用户)的主目录

。。。。。。

ps:不同用户的操作权限不同

3.linux中文件类型

Linux有七种文件类型:bcd-lsp (编程的-老色匹)

① b:块设备文件 (比如:U盘)

② c:字符设备文件(比如:键盘、鼠标、串口)

③ d:目录文件、文件夹

④ l:链接文件 (相当于windows系统下的快捷方式)

⑤ s:套接字文件(网络通讯)

⑥ p:管道文件 (进程间通信)

⑦ -:普通文件,或者更准确的说,不属于其它几种类型的文件

4.linux的基本命令

1)快捷键

ctrl + alt + t 打开一个新的终端

ctrl + shift + n 在已经打开终端的基础上,新打开一个同路径的终端

ctrl + shift + t 在已经打开终端内,新起一个同路径窗口

ctrl + l 清屏 

 输入命令 clear 清屏

 输入命令 exit 退出当前命令行终端

鼠标点击Linux虚拟机,鼠标就在Linux中。ctrl + alt,鼠标就回到了windows

2)提示符

whoami命令:查看当前登录的系统的用户名

hostname命令:显示当前系统的主机名

pwd命令用于显示用户在文件系统中的当前位置,命令执行结果显示为绝对路径名

3)ls 【选项】【文件】(查看文件)

ls -a查看所有类型文件

ls -l查看文件详细信息,ls -l 【文件名】查看某个文件详细信息

文件权限包括:r读,w写,x执行,-无权限

先后顺序分别为:属主,同组用户,其他用户

4)cd (改变目录)

cd / 返回根目录

cd ~ 返回用户主目录

cd . 原地不动

cd .. 返回上级目录

cd - 返回到上一次的工作目录

cd 回到家目录

cd 【绝对路径】

cd 【相对路径】

5)touch新建普通文件

用法:touch 【文件名】

新建的文件大小为0,如果新建的文件已存在,则内容不变,只更新文件标签的时间

6)mkdir创建目录

用法:mkdir 【选项】【目录名】

mkdir 【目录名】【目录名】。。。 同时创建多个目录

mkdir -p 【目录名】需要时创建上层目录,若这些目录存在也不报错,可用于嵌套创建目录

7)rmdir删除空目录(不常用)

用法:rmdir 【文件名】删除空目录,若目录不为空可以采用rmdir -p 【文件名】进行递归删除

8)rm删除文件或目录

用法:rm 【选项】【文件名】(可同时删除多个)

rm -f强制模式,不提示直接删除

rm -i交互模式,删除前提醒

rm -r默认rm不删除目录,添加-r可删除目录及旗下所有文件和子目录

ps:如果权限不够,可以在命令前添加sudo,获得以此超级用户的权限

9)cp复制

作用:复制一个源文件到目标文件(夹)

用法:cp 【选项】 源文件 目标文件(夹)

复制到文件夹时文件名不变,复制到文件时本质是备份文件,所以需要改名,如果命名的文件存在同名文件,则会覆盖其内容。

cp -i交互模式,复制时会提示

cp -r复制文件夹时需要加-r

cp 源文件 源文件 ... 目标文件夹 ,一次复制多个

cp *.后缀 文件夹 ,批量复制同一文件类型的文件到文件夹

10)mv移动

作用:剪切一个源文件(夹)到目标文件(夹)(源文件与目标文件(夹)需在一个路径)

用法:mv 源文件(夹)  目标文件(夹)

可以在剪切的过程中进行重命名,如:mv first.c newfirst.c,在同一路径重命名;mv first.c dir1/newfirst.c,剪切到其他文件夹并重新命名

5.添加共享文件夹

生成一个Windows系统与Linux系统共享的文件夹

day4数据的表示

1.数值数据的表示,数码,基,位权,数制

常见的数制分为:二进制,八进制,十进制,十六进制

数码为表示数的符号:

二进制:0,1

八进制:0,1,2,3,4,5,6,7

十进制:0,1,2,3,4,5,6,7,8,9

十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

基为数码的个数:

二进制:2

八进制:8

十进制:10

十六进制:16

位权:

每个数码所表示的数值等于该数码乘以一个与数码所在位置相关的 常数(这个常数叫位权)

123 = 1X100 + 2X10 + 3X1 = 1X10² + 2X10 + 3X1

 一个数码处在不同位置上所代表的值不同, 比如数字3在个位数位 置上表示3,十位数位置上表示30,在百位数上表示30

位权的大小是以基数为底、数码所在位置的序号为 指数的整数次幂

2.进制,进制间转换

0x开头代表十六进制
0开头代表8进制

其他进制转换为十进制用上述位权的方法即可

十进制转其他进制
方法:连续除以基,从低到高记录余数,直到商为0
83/8=10..3
10/8=1...2
1/8=0...1
转换成八进制123

二进制转八进制
000-0
001-1
010-2
011-3
100-4
101-5
110-6
111-7
每三位为一组,不够的位数补0,一一对应上述即可
如:1101001->001 101 001->151

八进制转二进制反过来即可
如246->010 100 110->10100110

二进制转十六进制则用四位数去一一对应即可
0001-1,0010-2,0011-3,0100-4,0101-5,0110-6,0111-7,1000-8,
1001-9,1010-A,1011-B,1100-C
1101-D,1110-E,1111-F

%#x输出十六进制数
%u输出无符号十进制数

3.计算机中数据的单位

最小的数据单位为比特(Bit),存储二进制的0或1。

八个最小单位为一个单元,称作字节,一个字节(Byte)为八个Bit

内存以字节为单位进行处理,每个字节都有一个地址,CPU通过访问字节的地址来访问每个字节的空间

1B=8Bit,1Kb=1024B,1M=1024Kb,1G=1024M,1T=1024G

4.原码,反码,补码

参考下述链接:

原码 补码 反码_char 198输出-程序员宅基地

day5数据类型

今天的课程是C语言基础,之前学过所以大致记一下即可

1.基本数据类型

在32为机器中基本数据类型对应的大小:
字符型char,1字节
短整型short,2字节
整型int,4字节
长整型long,4字节
更长的整型long long,8字节
单精度浮点型float,4字节
双精度浮点型double,8字节
长精度long double,12字节
布尔型_Bool,1字节
void型,4字节
指针,4字节

大写字母转小写+32
字符数字转数字+48

bool不是基本类型
_ Bool 才是基本类型
#define bool     _Bool
#define ture         1
#define flase        0
宏定义的bool

额外补充浮点型数据的知识见下面链接:

浮点型数据的存储与比较-程序员宅基地

2.数据类型转换

数据类型转换分为强制类型转换与自动类型转换,自动类型转换又包括赋值操作与二元运算

        在对变量赋值时,如果等号右边的表达式值与 左边的变量类型不同,右边的类型将转换为左 边的类型,并且如果右边的数据类型长度比左边的长,就会丢失一部分数据,导致精度降低。

        在不同数据类型之间进行二元运算时,也会发生隐士的自动类型转换 。如果参与运算的变量类型不同,会先转换成同一类型再进行计算。如果运算时发生类型转换,就会按数据长度增加的方向进行,从而保证精度不降低。并且所有浮点数参与的运算都以双精度进行,即使表达式中只有float,也会先转为double,再进行计算。

        为了确保类型转换按照开发者期望的方式进行,可以明确设置类型转换的方式,这就是强制类型转换。强制类型转换是一种运算符,在需要转换的表达式前添加小括号括起来的新类型名称。

day6运算符

C语言基础以前学过,大致记一下

1.基本类型

最基本的操作就是进行各种运算。C语言提供了丰富的运算符:

算术运算符:+、-、 * 、/、%、++、--

关系运算符:>、<、>= 、<=、==、!=、

逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)

赋值运算符:

        赋值:=

        算术复合赋值运算符:+=、-=、*=、/=、%=

        位运算复合赋值运算符:<<=、>>=、&=、|=、^=

位运算符:&、|、 ^ 、~、>>、<<

三目运算符:? :

逗号运算符:,

大小运算符:sizeof

其它运算符:  [ ] (下标引用操作符)、( ) (函数调用操作符)、(类型)(强制类型转换)&(取地址操作 符)、->(结构成员操作符)

2.优先级

3.额外拓展

  • 在写关系运算符==时,为了避免出错编译器无法发现,建议将常量写在左边,比如:

if(a == 5)错写成if(a = 5),也许会出现编译器为报警的情况,将常量写在左边即可避免该错误无法检测出。

  • 浮点型数据无法%也无法~,%与~均只能对整型使用
  • 使用^可以原地交换两个数的值
  • 与0&可以清0
  • 与1|可以置1
  • 同1^可以翻转
  • 右移运算分为算数移位跟逻辑移位,对于无符号的数是逻辑移位左边补0,对于有符号的数是算数移位左边补移位之前的最高位
  • 逻辑运算符&&跟||具有短路特性,对于&&左边为0后面的就不执行,对于||左边为1右边的就不执行。因此为了提高效率尽量将最可能为0的写在&&左边,最可能为1的写在||左边。

根据短路特性,先将a的值赋给c,为0后面的不执行,因此最后a=1,b=-1,c=0,d=4

day7vi编辑器

1.vi的三种模式

2.vi的光标命令

3.vi操作命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q645753223/article/details/136834811

智能推荐

彻底扒光 通过智能路由器拆解看其本质-程序员宅基地

文章浏览阅读1.7k次。可以看到很多联发科的MT芯片摘自:https://net.zol.com.cn/531/5312999.html彻底扒光 通过智能路由器拆解看其本质2015-07-23 00:40:00[中关村在线 原创] 作者:陈赫|责编:白宁收藏文章 分享到 评论(24)关注智能路由器拆解的朋友们注意啦!我们已经将这五款产品彻底扒开,将主板的真容展现在了大家的眼前。网友们可以看见这些智能路由器主板的做工和用料,我们还为网友们展示了主要的电子元器件,供大家品评观赏。..._路由器拆解

Java--深入JDK和hotspot底层源码剖析Thread的run()、start()方法执行过程_jdk的源码hotspot跟jdk是分开的-程序员宅基地

文章浏览阅读2.1k次,点赞101次,收藏78次。【学习背景】今天主要是来了解Java线程Thread中的run()、start()两个方法的执行有哪些区别,会给出一个简单的测试代码样例,快速理解两者的区别,再从源码层面去追溯start()底层是如何最终调用Thread#run()方法的,个人觉得这样的学习不论对面试,还是实际编程来说都是比较有帮助的。进入正文~学习目录一、代码测试二、源码分析2.1 run()方法2.2 start()方法三、使用总结一、代码测试执行Thread的run()、start()方法的测试代码如下:public_jdk的源码hotspot跟jdk是分开的

透视俄乌网络战之一:数据擦除软件_俄乌网络战观察(一)-程序员宅基地

文章浏览阅读4.4k次,点赞90次,收藏85次。俄乌冲突中,各方势力通过数据擦除恶意软件破坏关键信息基础设施计算机的数据,达到深度致瘫的效果,同时窃取重要敏感信息。_俄乌网络战观察(一)

Maven私服仓库配置-Nexus详解_nexus maven-程序员宅基地

文章浏览阅读1.7w次,点赞23次,收藏139次。Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业务的性质是否是保密的等等,因为局域网的话只能在公司用,部署到公网的话员工在家里也可以办公使用。_nexus maven

基于AI的计算机视觉识别在Java项目中的使用 (四) —— 准备训练数据_java ocr ai识别训练-程序员宅基地

文章浏览阅读934次。我先用所有的样本数据对模型做几轮初步训练,让深度神经模型基本拟合(数万条记录的训练集,识别率到99%左右),具备初步的识别能力,这时的模型就是“直男”。相较于训练很多轮、拟合程度很高的“油腻男”,它的拟合程度较低,还是“直男愣头青”。..............._java ocr ai识别训练

hibernate 数据库类型 date没有时分秒解决_hibernate解析時間只有年月日沒有時分秒-程序员宅基地

文章浏览阅读688次。一、问题现象:  在数据库表中日期字段中存的日期光有年月日,没有时分秒。二、产生原因:三 解决办法   检查表的相应映射xml文件。 <property name="operateDate" type="Date">如果同上面所写,那问题出在 type类型上了正确写法 :<property name="operateDate" type="java.util..._hibernate解析時間只有年月日沒有時分秒

随便推点

springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏2次。文章目录问题描述:解决方案:问题描述:提示:idea springbbot运行无法编译成功,找不到jar包报错E:\ideaProject\demokkkk\src\main\java\com\example\demo\config\WebSocketConfig.javaError:(3, 46) java: 程序包org.springframework.context.annotation不存在Error:(4, 46) java: 程序包org.springframework.conte_error:(3, 46) java: 程序包org.springframework.context.annotation不存在

react常见面试题_recate面试-程序员宅基地

文章浏览阅读6.4k次,点赞6次,收藏36次。1、redux中间件中间件提供第三方插件的模式,自定义拦截 action -&gt; reducer 的过程。变为 action -&gt; middlewares -&gt; reducer 。这种机制可以让我们改变数据流,实现如异步 action ,action 过滤,日志输出,异常报告等功能。常见的中间件:redux-logger:提供日志输出redux-thunk:处理异步操作..._recate面试

交叉编译jpeglib遇到的问题-程序员宅基地

文章浏览阅读405次。由于要在开发板中加载libjpeg,不能使用gcc编译的库文件给以使用,需要自己配置使用另外的编译器编译该库文件。/usr/bin/ld:.libs/jaricom.o:RelocationsingenericELF(EM:40)/usr/bin/ld:.libs/jaricom.o:RelocationsingenericELF(EM:40)...._jpeg_utils.lo: relocations in generic elf (em: 8) error adding symbols: file

【办公类-22-06】周计划系列(1)“信息窗” (2024年调整版本)-程序员宅基地

文章浏览阅读578次,点赞10次,收藏17次。【办公类-22-06】周计划系列(1)“信息窗” (2024年调整版本)

SEO优化_百度seo resetful-程序员宅基地

文章浏览阅读309次。SEO全称为Search Engine Optimization,中文解释为搜索引擎优化。一般指通过对网站内部调整优化及站外优化,使网站满足搜索引擎收录排名需求,在搜索引擎中提高关键词排名,从而把精准..._百度seo resetful

回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测_猎食者优化算法-程序员宅基地

文章浏览阅读438次。回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测_猎食者优化算法