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

智能推荐

Docker 快速上手学习入门教程_docker菜鸟教程-程序员宅基地

文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程

电脑技巧:Windows系统原版纯净软件必备的两个网站_msdn我告诉你-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你

vue2封装对话框el-dialog组件_<el-dialog 封装成组件 vue2-程序员宅基地

文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_

MFC 文本框换行_c++ mfc同一框内输入二行怎么换行-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行

redis-desktop-manager无法连接redis-server的解决方法_redis-server doesn't support auth command or ismis-程序员宅基地

文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try

实验四 数据选择器及其应用-程序员宅基地

文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用

随便推点

灰色预测模型matlab_MATLAB实战|基于灰色预测河南省社会消费品零售总额预测-程序员宅基地

文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件

log4qt-程序员宅基地

文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt

100种思维模型之全局观思维模型-67_计算机中对于全局观的-程序员宅基地

文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的

线程间控制之CountDownLatch和CyclicBarrier使用介绍_countdownluach于cyclicbarrier的用法-程序员宅基地

文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法

自动化监控系统Prometheus&Grafana_-自动化监控系统prometheus&grafana实战-程序员宅基地

文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战

React 组件封装之 Search 搜索_react search-程序员宅基地

文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search