Linux系统相关操作

一、目录结构

根目录(\):linux文件系统的顶层目录,所以一切都在它之下,也从他开始

用户目录(家目录):(~ or 工作目录 or HOME)

总结:

Windouws目录像是一片森林

Linux目录像一个倒置的树

Linux系统之下,一切皆文件

注意:

1.家目录以上的目录,普通用户没有操作权限,想要操作就要在命令前面加一个sodu

2.HOME才是家目录,而home不是家目录,在home下的wym才是家目录

二、常用命令

命令格式:命令 [选项] [参数]

注意:

        1.[ ]表示可以省略[选项]:功能[参数]:操作的对象

        2.以上三者必须要用空格隔开

在哪里输入命令?

        终端(即人机交互的界面)

打开终端:

        方法一:点击终端图标

        方法二:Ctrl + alt t :打开默认家目录的终端(快捷键)

打开终端后的界面说明

如果要操作家目录以上的目录,需要在指令前加sudo(给一次管理员权限)

Sudo su:切换成超级用户

pwd:显示当前路径的绝对路径

        绝对路径:从根目录开始的路径

        相对路径:相对于一个文件下的路径

自动补全键:Tab

清屏:clear 或 Ctrl + l

上下箭头:可以查看历史命令

ls:显示当前路径下的内容

文件颜色:

        蓝色:文件夹

        白色:文件

        绿色:可执行文件

ls 111:显示当前路径下的文件111,然后把该目录下的内容显示出来

ls -a:显示当前路径下的所有内容,包括隐藏文件

. :表示当前目录

.. :表示上一级目录

ls -l :显示当前路径下的详细属性

touch 文件名/文件路径:新建文件,可以同时新建多个

rm:文件名/文件路径:删除文件,可以同时删除多个(数据不可以恢复)

mkdir 文件夹名:创建文件夹,可以同时创建多个文件夹

rmdir 文件夹名:删除文件夹(只能删除空文件夹)

rm -r 文件夹名:删除文件夹(空和非空都可以删除)

rm -ri 文件夹名:删除文件夹(会进行是否删除的询问)

cd :直接回到家目录

cd 相对路径或绝对路径:切换路径

cd -:回到上一次操作的目录

cp 源文件路径((被复制文件)/-r 文件夹)  复制文件的路径:复制文件或文件夹

mv 源文件/源文件夹 目的文件夹:移动

三、vim编辑器

vim 文件名:(如果文件存在则直接打开,如果文件不存在则创建完后直接打开)

三种模式:

        1.命令行模式(刚进入时的模式)

        2.插入模式

        3.底行模式

                命令行模式切换插入模式:i

                插入模式切换命令行模式:esc

                命令行模式切换为底行模式:shift + 冒号

                 

        底行模式下:

                w:保存

                wq:保存并强制退出

                q!:强制退出

                wq!:强制保存退出

               set nu :设置行号

               set nonu: 取消行号

        在命令行模式下:

                yy:复制(从光标的一行开始)

                nyy:复制n行

                p:粘贴(从光标的下一行开始粘贴)

                dd:删除

                ndd:删除n行

                u:撤销

                Ctrl + r:反撤销

四、gcc编译器

     

        1、编译

        方法一:编译:gcc 1.c 生成可执行文件叫做a.out

                       运行:./a.out

        方法二:编译:gcc 1.c -o hello,生成的可执行文件叫做hello

                        运行:./hello

五、计算机的基本结构

组成:输入输出设备(如:鼠标键盘)

        CPU处理器(控制器、运算器、寄存器)

        存储器(分为内存和外存)

                内存:工作存储器、容量较小,读写速度快,掉电数据会丢失

                外存:长期保存数据,容量大,读写速度慢,掉电数据不会丢失

                寄存器:CPU内部的存储器,容量小,读写速度最快

        程序(计算机能够识别的一组有序的指令)

                指令:计算机能够识别的操作

        程序的执行步骤:编辑(vim)--->编译(gcc)--->执行--->调试

1.计算机的数据表示(进制转换)

分为:数值数据和非数值数据

        非数值数据(不能直接进行运算的数据)

                如:字符,图片,声音等。

                ASCII(十进制):规定了每一个字节在计算机中对应的是哪八位二进制数(1byte=8bit)

                每一个字符都以8bit的二进制数进行存储

          数值数据(能够进行运算的数据)

                二进制,十进制,八进制,十六进制;为了区分不同的进制,八进制前面加0,十六进制前面加0x

进制转换

其他进制转十进制(对应的狮子乘以其他禁止的位数次幂)

        二进制转十进制:0101-------->1*2^0 + 1*2^2 = 5

        八进制转十进制:055   -------->5*8^0 + 5*8^1 = 45

十进制转换为其他进制(除以其他进制的倒数取余数)

        十进制转换二进制:除2倒取余  34--->0010  0010

2.基本数据类型

关键字:系统预定义含义,有特定的含义,全都是小写,不能重新敌营

数据类型:char,double,int,float,short,long,struct,union,enum,void

控制语句:if,else,while,do,for,switch,break,default,continue,goto,case

存储类型:auto,register,extern,static

const:只读

return:返回函数

signed:有符号数

unsigned:无符号数

sizeof:计算所占内存大小(单位:字节)

typedef:给已有的数据类型取别名

volatile:防止编译器优化(驱动)

标识符:  程序员自己定于,一般来定义变量名,函数名,类型名

命名范围(见名知意)

        1.由数字、字母、下划线组成

        2.第一个字母不能是数字

        3.不能和关键字重名

注意:每一种数据类型所占大小不一样,数据类型主要是让我们合理的分配内存

有符号数和无符号数

signed:数值有正负之分,一步妈的形式存储

最高位是符号位,正数的符号位是0,负数的符号位是1

正数:原码、补码、反码都一样

unsigned:只有正数

字符型家族

值域范围:char(1byte) 1byte = 8bit

unsigned:0000 0000 -----1111 1111   0~255

signed:1000 0000-----0111 1111  -128~127

整型家族

值域范围:int(4byte) 4byte = 32bit

浮点型家族

值域范围:double(8byte):双精度浮点数,有效数的范围是15-16位

%f和%lf默认输出小数点后六位

3.转义字符

4.常量

在程序运行期间,其数值不会被改变的量

1.字符常量

        ‘a’ ‘b’ ‘c’

2.整型常量

3.浮点型常量

4.字符串常量

注意:字符串以‘\0’作为结束符

5.标识常量(宏)

#define 宏名 表达式

注意:1.宏名一般用大写(为了跟变量区分开),但是小写也可以

           2.宏后面没有分号(宏只是单纯的替换)

5.宏函数

(既有宏的特点,又有函数的特点)

#define  函数名(形参) 函数体

注意:宏只是单纯的替换,不会考虑运算的优先级,所以每一个形参加上括号,整个表达式也加上括号。

6.变量

定义:意味着要在内存中开辟空间

如何定义一个变量?

        存储类型:决定了开辟的空间存在哪一个分区

        数据类型:决定了要开辟的内存空间大小

        变量名:开辟空间的名字

1.局部变量

        定义在函数体(任何函数体)内的变量

2.全局变量

        定义在函数体外的变量

局部变量不写存储类型默认就是auto,全局变量不写就是没有。

3.存储类型

四种存储类型:auto,extern,static,register

auto:修饰的变量存储在栈区,只修饰局部变量,存储在栈区

extern:修饰的变量存储在静态区(.bss和.data统称为静态区),只能修饰全局变量

                作用:告诉编译器,修饰的全局变量已在其他文件中被定义过

       

static:修饰的变量存储在静态区,局部变量和全局变量都可以修饰

        当修饰局部变量时,延长了局部变量的生命周期,如果局部变量没有初始化,其值为0,如果初始化了,只能初始化一次。

        当修饰全局变量时,只能在本文件内使用(限制了全局变量的作用域)

register:修饰的变量存储在寄存器中,只能修饰局部变量,可以提高程序运行效率。

        但是最终是否存储在寄存器,取决于编译器,如果没有寄存器,则存储在栈区

4.初始化

定义变量时就对变量赋值

总结:(1)全局变量没有初始化默认值为0

           (2)局部变量没有初始化时默认值是随机数(64位操作系统优化为0)

4.生命周期和作用域

生命周期:什么时候开辟空间,到什么时候释放空间

作用域:使用范围

        局部变量的生命周期:从定义开始,到模块(大括号)结束

                        作用域:大括号内

        static修饰的局部变量的生命周期:从定义开始,到程序结束

                        作用域:大括号内

        全局变量的生命周期:从定义开始,到程序结束

                        作用域:整个程序

        static修饰的全局变量的生命周期:从定义开始,到程序结束

                        作用域:本文件内

7.数据类型转换

强制类型转换(手动输入代码转换)

隐式类型转换(系统自动转换)

注意:char,short使用的时候都按照int来使用

        float使用的时候都按照double来使用

        竖向箭头只有进行混合运算时才进行自动转换

8.运算符

单目运算符,算术运算符,左移右移,关系运算符,按位与,异或,按位或,逻辑运算符,条件运算符,赋值

1.算术运算符

+,-,*,/,%,++,--(注意:%不能用于浮点数)

++在前,++a先自加在赋值

++在后,a++先赋值在自加

注意:如果哦++a或者a++自成立一条语句,都当做a = a + 1

2.关系运算符

>,<,>=,<=,==,!=

3.逻辑运算符

&&,||,!

表达式1 && 表达式2(有一个为假,结果就是假)

表达式1 || 表达式2(有一个为真,结果就是真)

!x(如果x为0则表示为假,输出为1,如果x为1则表示为真,输出为0)

4.sizeof运算符

sizeof(数据类型) 或者 sizeof(变量名)

5.三目运算符

表达式1?表达式2:表达式3

(先判断表达式1的值是否成立,如果成立则将表达式2的值作为整个表达式的输出值,如果不成立,则将表达式3的值作为整个表达式的值)

6.逗号运算符

表达式1,表达式2,表达式3,...,表达式n

(从左往右依次计算表达式的值,将表达式n的值作为整个表达式的值)

注意:逗号运算符的优先级最低,使用时加上括号

7.位运算符

与运算(&):全1为1,有0为0

或运算(|):有1为1,全0为0

取反(~):将1和0取反操作

异或(^):相同为0,不同为1

左移(<<):高位丢弃,地位补0

右移(>>):无符号数,低位丢弃,高 位补0

                      有符号数,地位丢弃,正数高位补0,负数高位补1

9.输入输出

函数:有独立功能的模块

标准的输入输出函数:scanf,printf(对变量的类型没有限制)

1.输入

2.输出

注意:1.scanf格式控制串,不要加修饰语,原样输入

           2.如果输入“%d%d”时要给多个变量赋值,在格式控制符之间没有间隔,在输入时以空格,回车,tab键作为一个变量的输入结束

            3.全部输入结束,必须以回车作为结束符

            4.如果是“%c%c”时,在输入时不能有空格,回车,tab键,因为他们也是字符

        (解决办法:在“%c%c之间加一个空格或逗号” 或 变成“%c%*c%c”,%*c表示抑制符)

3.字符的输入和输出

getchar();

返回值:从键盘得到的ASCII值

char c;

c = getchar();

ptuchar();

参数:你要输出的ASCII值

10.三大结构

1.顺序结构

语句按照一定的先后顺序去执行

2.选择结构

单分支选择语句

(先判断表达式的值,如果表达式的值为真,则执行语句)

if(表达式)

{

        语句;

}

双分支选择语句

(先判断表达式的值,如果表达式的值为真,则执行语句1,否则执行语句2)

if(表达式)

{

        语句1;

}

else

{

        语句2;

}

多分支if语句

(从上到下依次判断表达式的值,如果表达式的值为真,则执行对应的语句)

if(表达式)

{

        语句1;

}

else if

{

        语句2;

}

else if

{

        语句3;

}

……

else

{

        语句n;

}

switch语句

(表达式不能为float,标号必须是常量,当表达式和标号相等时执行对应的语句,知道switch case语句结束为止,或碰到break语句结束)

swich(表达式)

{

        case 标号1:

                语句1;

        case 标号2:

                语句2;

        ……

        case 标号n:

                语句n;

        default:

                语句n+1;

}

3.循环结构

重复的去做某一件事

循环的三要素:循环的起始条件,循环的终止条件,循环变量的变化

for循环

表达式1:循环的起始条件

表达式2:循环的终止条件

表达式3:循环变量的变化

(先执行表达式1的值,然后执行表达式2的值,如果表达式2的值为真,执行循环体,然后在执行表达式3的值,如此反复,直到表达式2的值为假的时候,跳出循环体。3个表达式都可以省略,但是分号不能省略)

for(表达式1;表达式2;表达式3)

{

        循环体;

}

while语句

先判断表达式是否成立,如果成立,则执行循环体,否则跳出循环

while(表达式)

{

        循环体;

}

do while语句

do

{

        循环体;

}

while();

总结:while和do while的区别

while先判断在执行,语句至少执行0次

do while先执行在判断,语句至少执行1次

break;

跳出循环,跳出switch语句

continue;

结束本次循环,开始下一次循环

 死循环

while(1)

{

        ;

}

for(;1;)

{

        ;

}

goto语句

无条件跳转语句,一般格式为 goto 语句标号;

语句标号:按照标识符命名规范

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值