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

答案参考下述链接:

机器语言、汇编语言、高级语言_机器语言 汇编语言 高级语言-CSDN博客

待补充知识点:

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输出-CSDN博客

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

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

浮点型数据的存储与比较-CSDN博客

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操作命令

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值