第一章 C语言の第一节 必备Linux命令和C语言基础
本文章采用VMware Workstation Pro进行嵌入式(Linux)系列学习
从零开始,重新学习(嵌入式相关内容)并记录知识点(涉及基础c语言(数据结构)、linux编程、shell脚本、文件io、网络编程)等),同时也是为了方便自身回顾,如有不对的地方请大佬多多指教,谢谢!->欢迎评论区留言
注:
linux中的目录结构(文件夹)对应实际的物理分区
后续所有的分区操作:需要先点击“free space”再点击左下角“+”才能开始分区
③ 新建“boot”分区:存放系统启动过程中的重要文件
④ 新建“swap area”交换分区(虚拟内存):一般为物理内存的1~2倍(实际为1G,故这里设置为2000M)
⑤ 新建“home”分区:默认为剩下(目前未分配)的所有空间
⑥ 分区结果(完成):点击“Install Now”,如果还有其他界面直接“Continue”即可
注:有一个弹窗,但我忘了我点的什么然后鼠标键盘就失灵了(具体问题直接百度),CTRL+ALT+F1然后回车…过了一会就弹出了登录界面
/ // 根目录
|—— / bin // 二进制(binary)文件
|—— / boot // 启动文件:存放的都是系统启动时要用到的程序
|—— / dev // 包含了所有的Linux系统中使用的外部设备
|—— / etc // 存放了系统管理时要用到的各种配置文件和子目录
|—— / home // 家目录:普通用户的主目录
|—— / lib // 存放系统动态连接共享库
|—— / mnt
|—— / opt
|—— / proc
|—— / toor
|—— / sbin
|—— / srv
|—— / sys
|—— / tmp
|—— / usr
|—— / var
|—— / root // 根用户(超级用户)的主目录
注:在linux系统中的退出U盘操作:exit退出命令终端->左边栏找到U盘->右键->点击“Eject”
enshang@enshang:~$ clear
enshang@enshang:~$ df -T
enshang@enshang:~$ gcc -E enshang.c -o enshang.i
enshang@enshang:~$ vi enshang.i
gg=G
enshang@enshang:~$ man pwd
enshang@enshang:~$ pwd
/home/enshang
ls [options] [files_or_dirs]
enshang@enshang:~$ cd /home/enshang // 绝对路径
enshang@enshang:~$ cd ../ // 相对路径
enshang@enshang:~$ cd
enshang@enshang:~$ cd ..
enshang@enshang:~$ cd -
enshang@enshang:~$ Cat -s Enshang.c // 多个空行合并成一个空行显示
enshang@enshang:~$ Cat -b Enshang.c // 加行号显示
enshang@enshang:~$ nl Enshang.c
enshang@enshang:~$ head -10 Enshang.c
enshang@enshang:~$ tail -10 Enshang.c
cp [options] file destination
enshang@enshang:~$ cp enshang.c ../ -i
cp:overwrite '../enshang.c'? y
enshang@enshang:~$ cp -r Enshang/ enshang
enshang@enshang:~$ cp enshang1.c enshang2.c ../
enshang@enshang:~$ mv enshang.c ../
enshang@enshang:~$ mv enshang.c ../Enshang.c // 移动且重命名
enshang@enshang:~$ mv enshang.c Enshang.c
enshang@enshang:~$ rm Enshang
rm:cannot remove 'Enshang':Is a directory
enshang@enshang:~$ rm -r Enshang/
enshang@enshang:~$ mkdir Enshang
enshang@enshang:~$ mkdir Enshang/enshang // 在已创建的Enshang目录下新建enshang目录
enshang@enshang:~$ mkdir -p Enshang/enshang // 直接新建Enshang目录及其子目录enshang
权限类型 | 应用于目录 | 应用于任何其他类型的文件 |
---|---|---|
读(r) | 授予读取目录或子目录内容的权限 | 授予查看文件的权限 |
写(w) | 授予创建、修改或删除文件或子目录的权限 | 授予写入权限,允许修改文件 |
执行(x) | 授予进入目录的权限 | 允许用户运行程序 |
– | 无权限 | 无权限 |
enshang@enshang:~$ vi enshang.c
模式 | 功能 |
---|---|
命令行模式 | 用户在用vi编辑文件时,最初进入的模式(可以进行复制、粘贴等操作) |
插入模式 | 进行文件编辑,按ESC键可以回到命令行模式 |
底行模式 | 光标位于屏幕的底行(只能在底行模式输入命令,可以进行文件的保存、查找、替换、列出行号等) |
命令 | 功能 |
---|---|
a | (Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符 |
A | 光标直接移动到当前光标所在行的行尾位置开始插入键盘输入的字符 |
i | (Insert)进入编辑状态,从当前光标的位置开始插入键盘输入的字符 |
I | 光标直接移动到当前光标所在行的行首位置开始插入键盘输入的字符 |
o | (Open)进入编辑状态,并在当前光标所在行的下方插入一个新行,光标将移到该新行的行首,以后键盘输入的字符将插入到光标位置 |
O | (Open)进入编辑状态,并在当前光标所在行的上方插入一个新行,光标将移到该新行的行首,以后键盘输入的字符将插入到光标位置 |
ESC | 进入命令状态 |
:! Command | 在vi中执行外部命令Command(例如:2.4.1中的内容、data),按回车键可以返回vi继续工作 |
命令 | 功能 |
---|---|
[N]x | (Expurgate)删除从光标位置开始的连续N个字符(并复制到编辑缓冲区) |
[N]dd | (Delete)删除从光标位置开始的连续N行(并复制到编辑缓冲区) |
[N]yy | (Yank)复制从光标位置开始的连续N行到编辑缓冲区 |
p | (Put)从编辑缓冲区复制文本到当前光标位置的下一行(即粘贴) |
P | 从编辑缓冲区复制文本到当前光标位置的上一行(即粘贴) |
u | (Undo)取消上一次操作(即恢复功能) |
命令 | 功能 |
---|---|
:q | (Quit)退出没有修改的文件(若文件被修改了而没有保存,则此命令无效) |
:q! | 强制退出,且不保存修改过的部分 |
:w | (Write)保存文件,但不退出 |
:x | (Exit)保存文件并退出(类似:wq) |
:w File | 另存为File给出的文件名,不退出 |
:r File | (Read)读入File指定的文件内容插入到光标位置 |
命令 | 功能 |
---|---|
h | 方向键,向左移动光标一个字符的位置,相当于键“←” |
j | 方向键,向下移动光标一个字符的位置,相当于键“↓” |
k | 方向键,向上移动光标一个字符的位置,相当于键“↑” |
l | 方向键,向右移动光标一个字符的位置,相当于键“→” |
:N | 移动光标到第N行(N待定) |
1G | 移动光标到文件的第1行 |
G | 移动光标到文件的最后1行 |
:set number(nu) | 设置显示行号 |
:set nonumber(nonu) | 取消显示行号 |
:s/str1/str2 // 光标所在位置的一行中符合条件的第一个字符串str1替换为str2
:s/str1/str2/g // g:表示符合条件的字符串str1全部替换为str2
:./$s/str1/str2/g // .:表示当前行,$:表示最后一行
:1,$s/str1/str2/g
:%s/str1/str2/g // %:全文替换,类似1,$
y0:将光标至行首的字符拷入剪贴板
y$:将光标至行尾的字符拷入剪贴板
d0:将光标至行首的字符剪切入剪贴板
d$:将光标至行尾的字符剪切入剪贴板
range y:块复制
range d:块剪切
00011000
01011010
MOV A,1000
MOV 1010,A
进制 | 简介 | 举例(0~7) |
---|---|---|
二 | 基数为2的进位制(进制只有0、1两种数码,计数逢2进位) | 000 001 010 … 110 111 |
十 | 基数为10的进位制 | 0 1 2 … 5 6 7 |
八 | 基数为8的进位制 | 000 001 002 … 005 006 007 |
十六 | 基数为16的进位制(十六进制有0、1、2…9、a、b、c、d、e、f共16种数码,计数逢16进位) | 0x00 0x01 0x02 … 0x05 0x06 0x07 |
原码 = 反码 = 补码
反码 = 原码(1变0,0变1); 补码 = 反码 + 1
非数值数据 | char/unsigned char |
---|---|
表示 | 1个字节 |
二进制 | 00000000~11111111 |
十进制 | 0~255 |
ASCII(整数) | 字符 |
---|---|
0 | NULL(空) |
48 | 0 |
文件后缀 | 含义 |
---|---|
.c | c语言源代码 |
.h | 程序所包含的头文件 |
.i | 已经预处理过的C源代码文件 |
.s | 汇编语言代码文件 |
.o | 编译后的目标文件 |
gcc 执行文件名.c -o 执行文件名 -Wall
-o 输出可执行文件
-c 只要求编译器输出目标代码(.o文件),而不必输出可执行文件
-g 用于调试
./执行文件名 查看输出结果
注:-Wall作用:如果语法不规范,则显示语法警告;
若为gcc 执行文件名.c -Wall,则输出的可执行文件为a.out,查看输出结果时应输入./a.out
#include <stdio.h>
int main(int argc, char **grgv)
{
printf("%s, %s, %d\n",__FILE__, __FUNCTION__, __LINE__); // 文件名 函数名 行号
return 0;
}
#include <stdio.h>
int main(int argc, char **grgv)
{
int i = 1, j = 2;
while(i <= 10)
{
j = j * i;
i++;
}
printf("1x2x3x4x5...x10 = %d\n", j);
return 0;
}
答:采用ARM编译器重新编译即可
本章为嵌入式学习系列文章 第一章:C语言の第一节 必备Linux命令和C语言基础