D0 - 必备嵌入式Linux命令和C语言基础

为什么写这个文章

>>最开始学习的是野火的视频,还有麦子学院的视频,物联网课程并没有从linux操作系统开讲
>>但是考虑到,以后的车联网还有智能家居系统这类复杂环境,肯定是需要用到linux的
>>所以从这篇博客开始入门linux,而且无论是企业在职人员还是火哥等团队都谈及到linux的重要性
>>所以我下定决心赶紧入门linux,毕竟以后也是必须要学这个的,毕竟stm32只是单片机,linux包括了文件系统,网络,图形界面,
>>等等一系列都是现成的,不需要像STM32那种需要各种移植文件系统,移植网络,移植操作系统等,少浪费时间

知识点

1:什么是虚拟内存
D0 - 必备嵌入式Linux命令和C语言基础_第1张图片
2:ls命令 //查看有哪些文件
3:pwd //查看路径
4:ctrl + alt + t // 打开终端
4 ctrl+ shift+N(New): //新建一个终端,默认是上个终端的位置
5:ctrl + 空格 = 切换输入法
6:exit 关闭终端
7:date //英文=日期;用来查看当前日期
D0 - 必备嵌入式Linux命令和C语言基础_第2张图片
9:终端清屏:ctrl+l / clear
11:终端窗口切换alt+table
12:注意不要不要不要(重要的事情说三遍)将任何config配置文件进行修改,改不回来就GG
13Linux的复制粘贴的快捷键可以修改,我改成了ctrl+c/ctrl+v
14:farsight@ubuntu:~$ cd / /*进入根目录*/
15:farsight@ubuntu:/$ cd ~ /*进入用户目录*/
16:mv与cp都有更名的能力,一个保持原文件不动,另一个原文件被移动

将man手册替换为中文的方法

man手册汉化方法参考该博客就ok

https://blog.csdn.net/qq_34616766/article/details/85015048?utm_medium=distribute.pc_relevant.none-task-blog-blogcommendfrommachinelearnpai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-blogcommendfrommachinelearnpai2-1.channel_param

D0 - 必备嵌入式Linux命令和C语言基础_第3张图片

第一节 安装虚拟机

提问:为什么不直接装linux的操作系统
>>1:我们平时使用的是windows的环境,有很多东西与资料在window环境
>>2:平时公司linux的编程也会使用到虚拟出来的linux环境
>>3:常见的服务器的开发方式也是通过软件远程连接linux的方式
结论-->新手不着急直接在装linux环境,还是建议用虚拟机
安装虚拟机的步骤 步骤截图
环境准备 虚拟机+ubuntu操作系统
D0 - 必备嵌入式Linux命令和C语言基础_第4张图片
安装VMWARE https://jingyan.baidu.com/article/7082dc1c86bfc8a40a89bdc1.html
安装ubantu https://www.jianshu.com/p/55bb32be385e
安装完成后的截图 D0 - 必备嵌入式Linux命令和C语言基础_第5张图片

第二节 文件与目录相关命令

我们进入桌面打开终端默认进入/home下的用户文件夹

cd ~也表示进入用户目录

cd /也表示进入根目录**
在这里插入图片描述D0 - 必备嵌入式Linux命令和C语言基础_第6张图片

FHS=文件系统层次结构标准>>由于linux是开源的,不同linux发行机构的目录结构也不一样>>为了规范文件目录命名与存放,linux基金会规定了FHS标准
D0 - 必备嵌入式Linux命令和C语言基础_第7张图片*/bin:Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

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

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

/home:用户的主目录

/lib:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/media(介媒):linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

/mnt:临时挂载别的文件系统的

/opt:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

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

/sbin:Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:Selinux 是一个安全机制,类似于 windows 的防火墙,这个目录就是存放selinux相关的文件的。

/srv:该目录存放一些服务启动之后需要提取的数据。

/tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

/usr:unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin:系统用户使用的应用程序。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。**

命令

提问:为什么要学命令
答:1可以不用鼠标;2:很多远程服务器开发没用鼠标给你用 3:嵌入式Linux开发没有图形界面

pwd 显示我的当前位置
cd 打开,类似与winodow点开文件夹的功能
ls 显示目录 /* ls /home= 查看根目录下home */ /ls = 查看当前目录/ /ls -l 显示当前目录(信息更加全面)/
D0 - 必备嵌入式Linux命令和C语言基础_第8张图片
ls -R d2 递归列出遇到的子目录 //查man
D0 - 必备嵌入式Linux命令和C语言基础_第9张图片
cat text.c ==连接文件并在标准输出上输出
D0 - 必备嵌入式Linux命令和C语言基础_第10张图片
cat -s text.c 才cat基础上去掉多余的没有内容的行 //查man
D0 - 必备嵌入式Linux命令和C语言基础_第11张图片
cat -b text.c 在cat命令基础上,显示行号 //查man
D0 - 必备嵌入式Linux命令和C语言基础_第12张图片
head 输出文件的开始部分 //查man
head -2 text.c 显示text.c的前2行
在这里插入图片描述
head main.c(默认前面10行)
在这里插入图片描述
tail 输出文件的末尾部分
tail main.c (默认最后10行)
在这里插入图片描述
tail -1 text.c 显示text.c的最后一行
在这里插入图片描述
cp cp text.c text4.c //将text.c复制一份在当前目录,并且起名text4.c(保留原text.c)在这里插入图片描述
cp text.c …/ 复制一份text.c,并且粘贴到上一级目录
在这里插入图片描述
cp text.c …/ bak.c 复制一份text.c,并且粘贴到上一级目录,并且将拷贝后的文件名更名为bak.c
在这里插入图片描述
cp -r textsubdir/ bakdir -r = 复制文件夹 ; 名字后面加’/'代表这是给文件夹 ; 复制textsubdir文件夹到当前目录(会覆盖源textsubdir),并改名为bakdir
在这里插入图片描述
cp text.c …/ -i -i = 覆盖,如果有时候你不知道时候目的地址已经有这个文件了,这个时候加-i,如果已经有的话,它会提示,是否覆盖,如果没有他会直接复制过去
在这里插入图片描述
cp tetx.2.c text3.c …/ 将text2.c 与text3.c都复制到上个目录
D0 - 必备嵌入式Linux命令和C语言基础_第13张图片
mv text.c …/ 将text.c剪切/移动到上一级
在这里插入图片描述
mv text2.c text_second.c 将text2.c剪切到当前目录更名为test+second.c
在这里插入图片描述
mv text3.c …/ text_three.c 将text.3剪切到上一级,并且更名为text_three.c在这里插入图片描述
rm -i main.c 删除文件
在这里插入图片描述
rm -r text1/ 删除text1文件夹 //注意文件夹后面都有个/
在这里插入图片描述
cd …/ 回退
mkdir a 创建文件夹a
mkdir -p d2/d22 创建d2目录,并且在d2目录里面创建d22目录
D0 - 必备嵌入式Linux命令和C语言基础_第14张图片
vi 编代码

权限类型

读( r ) -->允许读取
写( w ) -->允许修改与删除
执行( x ) --> 允许进入目录

第三节 VIM编辑器的使用

vim编辑器help手册的汉化

   https://www.cnblogs.com/yu-tao/p/8456453.html  
   将中文手册压缩包下载后,直接解压缩后,运行脚本即可!

D0 - 必备嵌入式Linux命令和C语言基础_第15张图片

vi linux的最基本的编辑器

Linux vi/vim教程https://www.runoob.com/linux/linux-vim.html
D0 - 必备嵌入式Linux命令和C语言基础_第16张图片
插入模式 1)i = 插入
2)a = append 在插入基础上退一格
3)o = 在进入插入模式时,会插入新行
4) I :在进入插入模式时会到行首
5) A:在进入插入模式时会到行尾
6) O在插入时,进入上面一行
x 在非插入模式快捷剪切单个字符
dd delete剪切光标所在行
2 dd 剪切2行
yy yank复制光标所在行
2 yy 复制2行
p put粘贴
u undo撤销
:w write保存
:w text1.c 保存一份text1.c作为备份!
:q quite退出(前提文件被保存)
:q! 退出(文件可以不被保存,)
:r main.c 将main.c文件的整个文件的内容复制到当前的文件
:wq = esc 保存退出
:pwd 查看当前编辑的文件的路径(在你忘记的时候可以查看)
:8 将光标移到第八行
1G (G=GO=跳转) 将光标转移到第一行
G 将光标移到最后一行
:set number 显示行号
:set nonumber 不显示行号
: /a 查找文档中的a
n:继续向下寻找
N继续向上寻找
n=next
: s/str1/str2 当前行的第一个str1替换为str2
: s/str1/str2/g 当前行的所有str1替换为str2 //g=global全部
:10,15s/str1/str2 将10到15行的str1替换为str2
:., $ s/str1/str2/g 当前行到文件末尾的所有str1替换为str2
$=末行
:1,$ s/str1/str2/g 当第一行到文件末尾的(全文)所有的str1替换为str2
y0 光标到行首进行复制
y$ 光标到行尾进行复制
4,6y 将第4~6行进行复制
d0 光标到行首进行剪切
d$ 光标到行尾进行剪切
4,6d 将第4~6行进行剪切
6,$d 将第六行后面的全部剪切/删除

第四节 GCC编译器

GCC 将C,C++程序编译为可执行文件的,
支持多平台的编译器,
由GUN推出
文件
D0 - 必备嵌入式Linux命令和C语言基础_第17张图片
gcc hello.c -o hello -o 输出可执行文件为hello
./hello 输出上面编译出来的hello的可执行文件
程序调试(常用) _FILE_ :文件名
__FUNCTION_:函数名
__LINE_
:第几行
预处理-E gcc -E 预处理
-o text.i = 保存为text.i
在这里插入图片描述

linux-c的bool类型

bool不是C的基本类型
在C99后续加入了bool类型
使用的话需要加入#include

bool使用方法 ture = 1 / false = 0
D0 - 必备嵌入式Linux命令和C语言基础_第18张图片
在这里插入图片描述

疑问

问题1:gcc作为一共window/linux平台的编译工具,如何生成可以在ARM平台的运行可执行文件
答:GCC有交叉版本,ARMgcc,使用ARMGCC就ok,使用方法GCC一致

微信公众号!!

D0 - 必备嵌入式Linux命令和C语言基础_第19张图片

你可能感兴趣的:(#,01,-,Linux,C语言_高级,linux)