i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、
【公众号】迅为电子
【粉丝群】258811263(加群获取驱动文档+例程)
第十八章 Linux编写第一个自己的命令
本章内容对应视频讲解链接(在线观看):
Linux编写第一个自己的命令 → https://www.bilibili.com/video/BV1M7411m7wT?p=18
18.1 命令的概念
命令就是可执行程序。
比如说我们输入 ls -al ,ls 就是可执行程序的名字。-al 就是要传递进去的参数。
ps 命令:
功能:显示进程的动态。
输入 “ps” 命令
当shell接收到我们的命令以后,会根据我们输入的字符到环境变量和默认路径中去找,环境变量上一章提过,可以通过打印查看都有哪些环境变量,然后它会去寻找有没有名字和我们输入命令一样的程序。
18.2 定义一个自己的命令
进入/home/topeet/test目录,把原来的都删掉,作者这里先创建一个 .c 文件,使用“touch commond.c ”命令,使用命令“vi commond.c ”打开文件,然后输入以下内容:
#include <stdio.h>
int main(void)
{
printf(“This is my commod!\n”);
return 0;
}
接着使用命令“gcc commond.c -o commond ”,编译 commond.c文件,然后运行一下,使用“./commond ”命令,虽然我们现在可以执行这个可执行文件,但是我们现在的这个可执行程序只能在 /home/topeet/test 这个路径下输入,而且还要加上当前目录,如果我切换到上一级目录,就不能用“ ./commond ”来运行 commond ,因为当前目录下没有commond这个文件,我们直接输入命令“commond ”也不行,会提示错误。
我们上一章学了环境变量,环境变量里边 PATH 变量决定了我们的程序或者是命令都要去哪些路径下找,那我们可以把存放可执行程序的路径加到环境变量里面,那么在任意路径下输入 commond 这个命令,它就会自动找到 commond 这个可执行文件来帮助我们执行。
我们前面学到的根目录下的 bin 文件是专门存放可执行文件的,我们直接把生成的这个 commond 可执行性文件拷贝到根目录下 bin文件夹也是可以的。即用 cp 命令拷贝到 bin文件夹,作者输入 “cp commond /bin/ ”,提示没有权限,加上sudo ,然后直接输入“commond ”,可以看到打印 This is my commond! ,然后再返回上一级,这个路径下是没有commond这个程序的,我再输入“ commond ”,也是可以执行成功的,所以用这个方法是可以的。
我们不使用这个方法,我们把存放 commond 这个可执行文件的路径加到PATH这个变量里面去,先把刚才我们拷贝到 bin文件夹下的可执行文件把它删掉。
我们直接使用命令来添加,“export PATH=/home/topeet/test/:$PATH ”,添加环境变量的办法上一章已经讲到了,使用命令“echo $PATH ”来检查是否添加成功,现在就已经成功添加进去了,如下图所示。我们输入“ commond ”这个命令来测试,也能执行成功,然后我在换另一个目录,作者把它切换到 Videos 这个文件夹里面去,输入“ cd Videos”,然后在输入 commond ,同样也能执行成功,同时也验证了之前的说法,命令就是可执行文件。
本章是把我们之前学到的进行一个串通。比如说环境变量的修改, gcc 的编译。同时我们也知道了平常使用的命令就是一个可执行程序,而且在键盘上输入了我们的命令之后,这个命令发给了 shell 。也就是如下图的这个 bash,是发送给它的,然后它会根据我们输入的这个字符串去环境变量里面去找,去看看有没有和我们的名字一样的程序。