【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十八章 Linux编写第一个自己的命令

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,是发送给它的,然后它会根据我们输入的这个字符串去环境变量里面去找,去看看有没有和我们的名字一样的程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/793081.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL字符串相关数据处理函数

目录 1. 转大小写 2. 截取字符串 sunstr 3. 获取字符长度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 转大小写 转大写&#xff1a;upper() 转小写&#xff1a;lower() 虽然MySQL不严格区分大小写&#xff0c;但是我们还是需要掌握这种大小写的操作以方便学习其他…

MySQL 数据库基础概念

一、什么是数据库&#xff1f; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索和复制所保存的数据。 我们也可以将数据存储在文件中&…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(五)仿钉钉流程的json数据保存与显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、需要做一个界面保存与显示仿钉钉的流程&#xff0c;先建一个表&#xff0c;用online建 2、通过上面生成代码&#xff0c;放入到相应的前后端工程里 3、修改前端仿钉钉流程的设计功能&a…

IntelliJ IDEA自定义菜单(Menus)、任务栏(toolbars)详细教程

一、自定义菜单 1、打开Settings&#xff0c;找到Menus and Toolbars 2、点击右边的Main Menu&#xff0c;点击号&#xff0c;选择Add Action 3、弹出Add Action弹窗&#xff0c;搜索或者选择你要添加的指令 二、自定义工具栏 1、右键IDEA上方的工具栏空白位置&#xff0c;选…

Python学习笔记35:进阶篇(二十四)pygame的使用之音频文件播放

前言 基础模块的知识通过这么长时间的学习已经有所了解&#xff0c;更加深入的话需要通过完成各种项目&#xff0c;在这个过程中逐渐学习&#xff0c;成长。 我们的下一步目标是完成python crash course中的外星人入侵项目&#xff0c;这是一个2D游戏项目。在这之前&#xff…

Linux Ubuntu MySQL环境安装

1. 更新软件源 首先&#xff0c;确保你的Ubuntu系统已经更新了软件源列表&#xff0c;以便能够下载到最新的软件包。打开终端并输入以下命令&#xff1a; sudo apt update 2. 安装MySQL服务器 打开终端并输入以下命令来安装MySQL服务器 sudo apt install mysql-server 在…

vue3 + tsx 表格 Action 单独封装组件用法

前言 先上图看右侧列 action 的 UI 效果&#xff1a; 正常来说&#xff0c;如果一个表格的附带 action 操作&#xff0c;我们一般会放在最右侧的列里面实现&#xff0c;这个时候有些UI 框架支持在 SFC 模板里面定义额外的 solt&#xff0c;当然如果不支持&#xff0c;更通用的…

无头单向非循环链表实现 and leetcode刷题

无头单向非循环链表实现 1. 单链表的模拟实现IList.java接口&#xff1a;MySingleList.java文件&#xff1a; 2. leetcode刷题2.1 获取链表的中间节点2.2 删除链表中所有值为value的元素2.3 单链表的逆置2.4 获取链表倒数第k个节点2.5 给定 x, 把一个链表整理成前半部分小于 x,…

【C++】C++书店管理系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

如何在 Python 中创建一个类似于 MS 计算器的 GUI 计算器

问题背景 假设我们需要创建一个类似于微软计算器的 GUI 计算器。这个计算器应该具有以下功能&#xff1a; 能够显示第一个输入的数字。当按下运算符时&#xff0c;输入框仍显示第一个数字。当按下第二个数字时&#xff0c;第一个数字被替换。 解决方案 为了解决这个问题&am…

mysql高可用解决方案:MHA原理及实现

MHA&#xff1a;Master High Availability。对主节点进行监控&#xff0c;可实现自动故障转移至其它从节点&#xff1b;通过提升某一从节点为新的主节点&#xff0c;基于主从复制实现&#xff0c;还需要客户端配合实现&#xff0c;目前MHA主要支持一主多从的架构&#xff0c;要…

STL(一)

书写形式&#xff1a;string (const string& str, size_t pos, size_t len npos); 举例&#xff1a; int main(){ string url("https://mp.csdn.net/mp_blog/creation/editor?spm1000.2115.3001.4503") string sub1(url,0,5);//从下标为0开始向后5个字符&…

07列的完整性约束

文章目录 设置表字段的主键约束设置表字段的外键约束(FOREIGN KEY,FK)、设置表字段的非空约束(NOT NULL, NK)设置表字段唯一约束(UNIQUE,UK)设置表字段值自动增加(AUTO_INCREMENT)设置表字段的默认值(DEFAULT)修改默认值DEFAULT、自增长和非空NK设置表字段的主键约…

30.ROM-IP核的调用

&#xff08;1&#xff09;ROM IP核简介&#xff1a; ROM是只读存储器&#xff0c;是一种只能读出事先锁存的固态半导体存储器。其特性是一旦存储资料就无法再将之改变或删除&#xff0c;并且资料也不会因为电源关闭而消失。&#xff08;掉电不丢失&#xff09; FPGA使用内部RA…

JavaScript青少年简明教程:为何学习JavaScript及JavaScript简介

JavaScript青少年简明教程&#xff1a;为何学习JavaScript及JavaScript简介 JavaScript最初是为web浏览器&#xff08;前端开发&#xff09;设计的。它可以在所有现代浏览器中运行&#xff0c;包括Chrome, Firefox, Safari, Edge等。 这意味着JavaScript代码可以在任何能运行…

学习测试7-ADB的使用

ADB是什么&#xff1f; ADB&#xff0c;即 Android Debug Bridge&#xff08;安卓调试桥&#xff09; 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具&#xff0c;它可为各种设备操作提供便利&#xff0c;如安装和调试应用&#xff0c;并提供对 Unix shell&…

数据(图像)增广

一、数据增强 1、增加一个已有数据集&#xff0c;使得有更多的多样性&#xff0c;比如加入不同的背景噪音、改变图片的颜色和形状。 2、增强数据是在线生成的 3、增强类型&#xff1a; &#xff08;1&#xff09;翻转 &#xff08;2&#xff09;切割 &#xff08;3&#xf…

MessageBox与HubSpot:企业沟通与客户管理的双重利器

今天咱们来聊聊两个超实用的工具——MessageBox和HubSpot。它们就像是你的超级助手&#xff0c;让你和客户沟通起来更顺畅&#xff0c;管理起来也更轻松。 先说说MessageBox吧 想象一下&#xff0c;你正在忙着工作&#xff0c;突然客户发来个消息&#xff0c;你嗖的一下就收到…

实验场:在几分钟内使用 Bedrock Anthropic Models 和 Elasticsearch 进行 RAG 实验

作者&#xff1a;来自 Elastic Joe McElroy, Aditya Tripathi 我们最近发布了 Elasticsearch Playground&#xff0c;这是一个新的低代码界面&#xff0c;开发人员可以通过 A/B 测试 LLM、调整提示&#xff08;prompt&#xff09;和分块数据来迭代和构建生产 RAG 应用程序。今天…

github恢复码怎么备份

https://docs.github.com/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication-recovery-methods