目录

1. Linux入门操作指令

1.1 文件系统结构

 1.2 常用操作指令

1.2.1 pwd

 1.2.2 man

 1.2.3 ls

1.2.4 Ctrl + Shift + t

1.2.5 ctrl+l 

1.2.6 查看文件内容

1.2.7 vi

1.2.8 cp

1.2.9 mv

1.2.10 touch 

1.2.11 rm

1.2.12 mkdir 

2 vi 编辑器

2.1 概述

2.2 三种模式

 2.3 复制与粘贴命令

2.4 保存和退出命令

2.5 vi 光标命令

2.6 查找命令

2.7 替换命令

2.8 复制与剪切命令(非整行)

2.9 显示编辑器当前状态

2.10 快速移动到该行行首/尾

3. gcc 编译器

3.1 概述

3.2 编译流程

4. 数据类型

 4.1 基本数据类型

3.1.1 bool

 3.1.2 char

5. 存储类型

5.1 auto

5.2 register

5.3 static 变量

5.4 extern 变量


嵌入式开发需要使用 Llinux 系统 进行相关操作

而 C语言是嵌入式开发的第一语言

因此,C语言在开始学习时最好在 Linux 下编译

所以这里只简单介绍在Llinux系统下进行C语言学习使用到的简单命令

1. Linux入门操作指令
1.1 文件系统结构

Linux 文件系统就是一个树形的分层组织结构(树状目录结构)

/bin: Binaries (二进制文件) 的缩写, 存放着最经常使用的命令。

/dev :Device(设备) 的缩写, 存放 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

/etc:Etcetera(等等) 的缩写,存放所有的系统管理所需要的配置文件和子目录。

/home:普通用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

... ...

 1.2 常用操作指令
1.2.1 pwd

pwd:显示用户在文件系统中的当前位置

打开命令终端窗口,用户就处在自己的用户主目录的位置

 1.2.2 man

man 命令:命令的帮助(使用)

 1.2.3 ls

ls [ Option(选项) ] [ files_or_dirs(目录) ]:

        ls:显示当前目录内容

        ls -a:显示隐藏文件

        ls -l :显示详细信息

补充:- :无权限

        ls -r:显示层级目录

1.2.4 Ctrl + Shift + t

新建窗口:Ctrl + Shift + t

1.2.5 ctrl+l 

 清屏:Ctrl + l

1.2.6 查看文件内容

查看文件内容:cat / nl / tail / tail

(1)cat 文件:查看文件

                cat  -s 文件:多个空行删减(合并)为一个空行

                cat  -b 文件:显示行号

(2)nl 文件:查看文件并显示行号

(3)head  文件:查看文件内容前十行

                head - n  文件:查看文件内容前 n  行

         tail   文件:查看文件内容后十行

                  tail - n  文件:查看文件内容后 n  行

1.2.7 vi

编写文件内容:vi  文件名

        若不存在该文件,则默认创建

1.2.8 cp

复制文件:cp  文件1  文件2 / 路径

        将文件1复制到同层目录下并命名为 文件2 / 复制到某路径中

        复制文件夹:cp -r  文件夹1  文件夹2

1.2.9 mv

移动文件:mv  文件  位置

        将文件移动到该位置

        mv  文件  位置 / 文件:移动并重命名

1.2.10 touch 

创建文件:touch  - 文件(未存在的)

        修改时间戳:touch 文件(已存在的)

1.2.11 rm

删除文件:rm - i 文件

        - i :会添加交互

        删文件夹:rm - r  文件夹

1.2.12 mkdir 

创建文件夹:mkdir  文件夹名

        mkdir  -p 文件夹名:级联创建文件夹

2 vi 编辑器
2.1 概述

vi 是Linux 中最基本的编辑器

而编写 C语言源代码需要在编辑器中进行

编写文件:vi 文件名

但是此操作之后还是无法编辑文件

2.2 三种模式

这涉及到 vi 的三种模式:命令行模式插入模式底行模式

vi 文件名 进入的是命令行模式

命令行模式进入到插入模式( insert ):

        i:进入编辑状态,光标不发生移动

        I(大写):进入编辑状态,光标置于该行行首(行首转插入)

        a:进入编辑状态,光标向后移动一位

        A:进入编辑状态,光标置于该行行尾(行尾转插入)

        o:进入编辑状态,原光标插入新的一行,光标置于新行行首

        O:进入编辑状态,原光标插入新的一行,光标置于新行行首

底行模式:进行文件的保存,查找,替换,列出行号等(指令前有冒号

        执行以下操作前须要切换回插入模式:Esc

        保存::w ,类似于window 系统下的 ctrl + s

        保存并退出::wq

 2.3 复制与粘贴命令

只能在命令行模式进行代码的复制,粘贴操作

复制:yy(yank),默认复制该行

        n yy :复制 n 行

粘贴:p / P (pute)

        p:光标所在行的下一行进行粘贴

        P:光标所在行的上一行进行粘贴

剪切:dd(delete),类似于 CTRL + X

         n dd :剪切 n 行

撤回上一步:u(undo)

按照字符删除:x

        n  x:一次删除 n 个字符

2.4 保存和退出命令

只能在底行模式进行代码的保存与退出操作

:q:退出没有修改的文件,一般不单独使用;若文件被修改没有保存,此命令无效

        常与  :wq(保存并退出) 搭配使用

:q!:强制退出,且不保存修改过的文件,常用于修改后不满意不保存的情况

:w File:另存为 File 给出的文件名,不退出,源文件不会被覆盖

2.5 vi 光标命令

k:上移

j:下移

h:左移

l:右移

:set nu:设置行号

:set nonu:取消显示行号

1 G:移动光标到文件第一行

G:移动光标到文件最后一行

:N:移动光标到第 N 行

2.6 查找命令

/字符串:查找字符串,类似于 ctrl + f 的功能

        n:继续向下查找

        N:继续向上查找

2.7 替换命令

利用 :s 可以实现字符串的替换

:表示底行模式输入的指令

s:表示替换

.,$ :表示替换范围为当前行到最后一行

1,$:表示替换范围为第一行到最后一行

%:表示替换范围为全文

:s/str1/str2:将当前行(默认为当前行)的第一个 str1 替换为 str2

:s/str1/str2/g:在当前行(s默认为当前行)范围中将所有的 str1 替换为 str2

:%s/str1/str2/g:在全文范围中将 str1 全部替换为 str2

2.8 复制与剪切命令(非整行)

y0:将光标至行的字符拷入剪贴板

y$:将光标至行的字符拷入剪贴板

d0:将光标至行的字符剪切入剪贴板

d$:将光标至行的字符剪切入剪贴板

:n1,n2  y:块复制

:n1,n2   d:块剪切

2.9 显示编辑器当前状态

进入 vi 编辑器:vi 文件名

输入: :set  showmode 

2.10 快速移动到该行行首/尾

移动到该行: :N(冒号+目标行数对应数字)

该行行首:^

该行行尾:$

3. gcc 编译器
3.1 概述

GNU 推出的多平台编译器(前面介绍的是 vi 编辑器

可将 C,C++ 源程序编译成可执行文件

支持以下后缀:

.c C语言源程序       

.h  程序包含的头文件

.i  已经预处理过的 C 源代码文件

.s  汇编语言源代码文件

.o  编译后的目标文件

3.2 编译流程

gcc  -o  文件名.c  文件名

        - o  输出可执行文件

        - e  输出预处理文件

        - c  只要求编译器输出目标代码

        - g  用于调试

        ./文件名  查看输出结果

此外,代码在编译调试过程中需要重新生成执行文件

4. 数据类型

 4.1 基本数据类型
3.1.1 bool

bool 不是基本数据类型,使用时需借助头文件 #include  <stdbool.h>;

若不借助头文件,须声明为 _Bool 

 3.1.2 char

其他数据类型本人觉得无需介绍,故省略;

5. 存储类型

声明变量时,需要遵循以下规则:

存储类型  变量类型  变量名 ;

5.1 auto

缺省的参数类型就是 auto

进入代码块(block)系统为变量自动分配内存

当退出块时,系统释放分配给自动变量的内存

重新进入块,系统会为自动变量再次分配内存,原先的值已经没有了

5.2 register

将变量直接放入 CPU 的寄存器中,而非内存

可以加快程序的运行速度

但这样变量就没有地址,无法使用其指针

此外,寄存器的个数与容量是有限制的

所以并不是所有数据类型都可以直接放进

5.3 static 变量

静态存储类型的变量,默认值为 0

在内存地址中以固定地址存放,而非堆栈

这样,只要程序没有结束,在内存中就不会被销毁

可以声明在函数体内或函数体外

5.4 extern 变量

extern 称为外部参照引用型

extern 修饰的变量在其他文件中的函数或程序段都可以被引用

 注意:static 修饰 extern 存储类型的变量,该变量就不能被其他文件使用,即 extern 失效

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐