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

智能推荐

pandas插入mysql库_将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy-程序员宅基地

文章浏览阅读215次。将pandas的DataFrame数据写入MySQL数据库 + sqlalchemyimportpandasaspdfromsqlalchemyimportcreate_engine##将数据写入mysql的数据库,但需要先通过sqlalchemy.create_engine建立连接,且字符编码设置为utf8,否则有些latin字符不能处理yconnect=create_engin..._pandas questdb create_engine

React Native之Modal实现自定义Dialog_react-native-paper 中的dialog-程序员宅基地

文章浏览阅读1.1w次。针对普通的弹框,React Native(RN)给我们提供了有Alert,但使用局限性很大,没有办法自定义,要实现自定义的弹框,我们应该如何来实现呢,这里提供两种方法:第一就是native本地来实现,然后暴露给RN来条用,第二就是使用组件Modal来实现,第一种方法这里就不写了,这里讲解下用Modal如何来实现。 首先我们先来了解下Modal是什么。 Modal组件可以_react-native-paper 中的dialog

龙芯1B:有源蜂鸣器播放音乐例程-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏26次。龙芯1b:有源蜂鸣器播放音乐例程。_有源蜂鸣器播放音乐

【渝粤题库】广东开放大学 应急管理 形成性考核_从处置主体来说,现代社会突发事件处置常常涉及-程序员宅基地

文章浏览阅读3.6k次。选择题题目:()是突发公共事件应急管理工作的最高行政领导机构。题目:以下突发公共事件中,属于公共安全事件的是()?题目:我们赖以生活的价值是天生的,包括真、善、美在内的人类的古老价值,以及后来的愉快、正义和欢乐等价值,是人类本性固有的,这种观点体现了()?题目:“大安全”是指(),是最高决策机构,是俄罗斯国家安全的中枢机构,并且该机构设有宪法安全、国际安全、信息安全、经济安全等12个部门委员会。题目:美国应急处置管理体系的特征是()?题目:以下突发公共事件中,属于公共卫生事件的是()?题目:以_从处置主体来说,现代社会突发事件处置常常涉及

ADNI数据集-数据分析11.17-程序员宅基地

文章浏览阅读2.9k次,点赞5次,收藏25次。4850名认知正常/正常衰老老年人(CN),CN参与者是ADNI研究中的对照受试者,他们没有表现出抑郁,轻微认知障碍或痴呆的迹象。2968名早期轻度认知障碍患者(EMCI),5236名晚期轻度认知障碍患者(LMCI),1738名阿尔兹海默症。1416名重要记忆关注/主观记忆疾病(SMC),解决健康老年人对照组与MCI之间的差距。是“Relative IDentifier”的英文缩写,相对标识符的意思;colprot origprot 和蛋白有关的医学术语;是医学研究上经常使用的数据集;_adni数据集

Druid 介绍及配置_druid 1.1.9功能清单-程序员宅基地

文章浏览阅读228次。原文地址: https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98_druid 1.1.9功能清单

随便推点

Git用户名/密码/邮箱,及设置git配置_git配置邮箱-程序员宅基地

文章浏览阅读9.7k次,点赞2次,收藏6次。Git用户名/密码/邮箱,及设置git配置_git配置邮箱

如何用hugo搭建一个个人博客网站_hugo 博客 官网-程序员宅基地

文章浏览阅读1.4k次。hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。官网地址:https://gohugo.io/中文文档:https://www.gohugo.org/参考视频:手把手教你从0开始搭建自己的个人博客-CodeSheep这个项目,主要是通过hugo来搭建一个属于自己的个人博客网站。官网有现成的博客主题可供下载,对于想快速拥有一个个人主页或搭建一个网站的程序猿来说,是个不二之选~这是我搭建的一个比较基础的博客网站,大家可以先看看效果是怎样的博客地址:https://._hugo 博客 官网

Microsoft Dynamics 365 CE 扩展定制 - 1. 无代码扩展-程序员宅基地

文章浏览阅读229次。商用现货产品(COTS)对企业组织来说是有吸引力的选择,因为它们包含了可配置的开箱即用功能,可以在不编写任何代码的情况下满足大部分业务需求。Dynamics 365也不例外。Dynamics CRM 365专门提供功能强大的模块化功能丰富的产品,可根据您的组织需求进行定制。一般来说,随着产品的发展,可配置的无代码扩展实现起来更便宜,维护起来更容易,升级起来也更容易。正确建模,这些扩展可以大大提高您的投资价值。如果建模不正确,它们可能会导致平台只锁定一个目的。_dynamics 365 ce

忘记 SQL Server 管理员密码的处理_找回sqlsever本地服务器管理员-程序员宅基地

文章浏览阅读1w次。如果忘记 SQL Server 管理员密码,可以使用下面的方式处理 1. 使用 SQL Server 服务器计算机本地 Administrators 组的任何成员登录到 SQL Server 服务器 2. 确定忘记管理员密码的 SQL Server 服务 可以在服务(services.msc)里面查看,或者使用下面的 Powershell 命令 Get-Service | ? Displ_找回sqlsever本地服务器管理员

二值化-程序员宅基地

文章浏览阅读3.7k次。一、二值化的定义从维基百科拿过来的定义:二值化是图像分割的一种方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值。 比较常用的二值化方法则有:双峰法、P参数法、迭代法和OTSU法等。二、 二值化的算法这里就简单讲一下固定阈值的算法:..._二值化

Django PostgreSQL安装和设置-程序员宅基地

文章浏览阅读1.3k次。We’ll know that SQLite is very powerful, embedded relational database management system and it offers a really amazing set of tools to manage approximately all sorts of data. But when it comes Multi-u..._postgresql django

推荐文章

热门文章

相关标签