当前位置: 首页 > news >正文

Linux入门篇学习——Linux 编写第一个自己的命令

目录

一、Linux 编写第一个自己的命令

1.命令的概念

2.定义一个自己的命令


一、Linux 编写第一个自己的命令

1.命令的概念

        命令就是可执行程序。
        比如说我们输入 ls -al ls 就是可执行程序的的名字。-al 就是要传递进去的参数。
        ps 命令:
        功能:显示进程的动态。
        输入 “ps” 命令
        当 shell 接收到我们的命令以后,会根据我们输入的字符到环境变量和默认路径中去找,环境变量上一 章提过,可以通过打印查看都有哪些环境变量,然后它会去寻找有没有名字和我们输入命令一样的程序。

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 文件夹,作者输入 “cpcommond /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,是发送给它的,然后它会根据我们输入的这个字符串去环境变量里面去找,去看看有
没有和我们的名字一样的程序。
http://www.dtcms.com/a/270877.html

相关文章:

  • 深度学习 必然用到的 微积分知识
  • 基于pytorch.nn模块实现softmax回归模型
  • 我是如何实现在线客服系统的极致稳定性与安全性的
  • NumPy-广播机制深入理解
  • HashMap的put、get方法详解(附源码)
  • 冷冻电镜重构的GPU加速破局:从Relion到CryoSPARC的并行重构算法
  • 【前端】异步任务风控验证与轮询机制技术方案(通用笔记版)
  • 在Centos系统上如何有效删除文件和目录的指令汇总
  • 【C++ 】第二章——类(Class)学习笔记
  • SpringGateway网关增加https证书验证
  • 基于YOLO的足球检测Web应用:从训练到部署的完整实战
  • 《心灵沟通小平台,创新发展大未来》
  • brainstorm MEG处理流程
  • 2024 睿抗编程技能赛——省赛真题解析(含C++源码)
  • 图像匹配方向最新论文--CoMatch: Covisibility-Aware Transformer for Subpixel Matching
  • 【QT】文件、多线程、网络相关内容
  • 【基础算法】贪心 (四) :区间问题
  • spring-data-jpa + Alibaba Druid多数据源案例
  • (5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略
  • OpenCV图片操作100例:从入门到精通指南(4)
  • [C#/.NET] 内网开发中如何使用 System.Text.Json 实现 JSON 解析(无需 NuGet)
  • 树莓派vsftpd文件传输服务器的配置方法
  • Java 大视界 -- 基于 Java 的大数据分布式计算在生物信息学蛋白质 - 蛋白质相互作用预测中的应用(340)
  • 【算法深练】DFS题型拆解:沿着路径“深挖到底”、递归深入、回溯回探的算法解题思路
  • 【数据分析】多数据集网络分析:探索健康与退休研究中的变量关系
  • ESOP系统电子作业指导汽车零部件车间的数字化革命
  • 玛哈特网板矫平机:精密矫平金属开平板的利器
  • 钉钉企业应用开发技巧:查询表单实例数据新版SDK指南
  • 2023年华为杯研究生数学建模竞赛A题WLAN组网分析
  • 结构体指针:使用结构体指针访问和修改结构体成员。