在命令行输入pwd,就会显示当前路径
在命令行输入ls -al ,就会显示所有的文件及其对应的属性
虽然我们知道,每一个指令对应着一个文件,但是具体是如何运作的呢??
一、前说
我们一般通过main函数接收命令行参数
main函数可以带参数,也可以不带,我们就根据下面这张图说一下main函数的三个参数

第一个参数 argc:命令行输入的有效参数个数
第二个参数 argv[ ]:命令行输入的参数会被保存到这个数组中
第三个参数 env[ ]:自动填充到数组,查询当前环境下的环境变量
二、代码测试
我们自己设计一条指令名为 print
无附加条件时,打印“I receive command”
若有附加条件 -a,打印“I receive command 'print -a' ”
若有附加条件 -l,打印“I receive command 'print -l ' ”
1、测试能否接收到命令行数据
我们把 从命令行接收到的内容 打印出来
-a 的后面还有一个 NULL,但是NULL不属于有效字符,所以不打印出来


2、功能实现


虽然看着有点怪,但是达到基本要求了
3、略微修正
在使用命令行运行指令时,系统优先去环境变量中的路径查找是否存在对应的文件
如果环境变量中不存在,就会报错或者忽视命令
![]()
![]()
所以我们可以把当前路径下的test 执行文件添加到 环境变量中
-----------------------------操作步骤如下---------------------------------------------
添加环境变量需要当前路径,先输入pwd获取当前所在路径
![]()
然后通过export指令导入环境变量:export 环境变量名 = $完整路径
![]()
检查是否导入成功
![]()
使用环境变量名运行程序时,需要加$解引用,但是我们可以设置 $test 的别名

使用alias设置别名,alias = '$test',这种设置方式仅在本次登录有效,一般不推荐设置
![]()
下面正式运行试试

现在是不是就有运行命令行指令那味儿了
本文介绍了如何通过main函数接收命令行参数,并以一个自定义指令`print`为例,展示了如何处理附加条件。通过添加环境变量和设置别名,使得自定义指令能在命令行中运行,模拟了系统指令的运作过程。
1705

被折叠的 条评论
为什么被折叠?



