揭秘命令行的小秘密

      不知道大家是不是跟我也一样,曾经学习C语言的时候,因为不是用那个linux入门的,所以,没有接触过什么gcc编译c语言,只知道一个VC6.0 90年代的产品,但是等我学习到了java的时候,我就感受到了一个很神秘的现象,为什么我装好 java的环境,然后cmd输入 javac xxx.java ,他就可以给我编译了~,为什么,更神奇的是 ,我再接着输入个 java xxx(未打包的情况) 直接就可以运行刚才那个java程序了。为什么呢?怎么可以这么神奇呢?

      接下来,我就给你分析下其中神秘的面纱。所谓的命令行模式编译,其实很简单,就是配置好PATH环境,这样系统就可以找到程序所在目录了,这样直接输入程序名 当然可以运行啦。这个样子,我给大家直接举例子说明一下。

首先贴代码,将就看吧,八十年都不写C了,今天再拿出来写,发现生疏了不少。

#include <stdio.h>
#include <string.h>
void showcmd(){
	printf("-r\t\t---读取文本\n");
	printf("-t\t\t---删除文本\n");
}
int main(int argc, char *argv[])
{
	char context[1021];
	switch(argc){
		case 1:
			showcmd();
			break;
		case 3:
			if (strcmp(argv[1],"-r")==0)
			{
				
				
				FILE *p = fopen(argv[2],"r");
				if(p){
					while(!feof(p)){
						fgets(context,100,p);
						printf("%s", context);
					}
			
					fclose(p);	
				}else{
					printf("路径文件不存在");
				}
				
			}
	}
	

	return 0;
}

这段C代码,很简单的实现了一个命令。可以读取文件 ,当然没事用,但是可以拿其了解一些本质!

再详细讲解下,其中的main函数两个形参大家发现没有呢?以前我学习C语言的时候一直不理解这是什么玩意?要他干嘛呢?从来没用过他,既然他存在当然有他存在的道理了,对不对呢?首先 int argc,这个参数代表 主程序接收外来参数的数量 ,char *argv[]这个参数代表外来接收参数的内容(字符串)。如果直接运行程序,不传入外来参数,那么,argc为1,其中的内容(argv[0])是程序的所在路径。

注意一点: 输入多个参数以空格隔开,一般一个空格即可。

用VC代码运行后,会在Debug文件夹生成一个exe文件,我直接把她拖到桌面。然后path添加他的目录所在地。

如下图:

 这里说下为什么要添加这个路径进去呢?因为我把生成的exe文件放到了桌面 

如下图:

就这样懂了吧,exe文件在哪里放着  path就添加那个地址进去。

打开cmd,输入自己的命令行指令:如图:

哇,是不是很棒呢,输入cava,居然打印出了自己的命令行参数,即可以执行的功能,看到这里,有没有发现和 java命令行有点相似呢?java命令你试着在cmd就输入一个 java 然后回车,也会给你打印一些乱七八糟的参数, 你命令参数输入什么他会给你执行相应的功能,是不是很类似呀?

接着咱们也模仿下它:执行下自己的命令,嘿嘿。

打开 cmd, 输入 你自己的命令行指令和参数 即就是执行那个exe文件;如图:

看到 了吧,我执行了自己写的命令 ,然后他就会按我的输入参数 执行读入相应地址下的文件数据的功能。虽然功能确实鸡肋,但是只要肯完用心去写他,也会有自己的收获的对吧。

最后给大家看下我D盘 目录下这个文件是否是这样的内容,以免大家怀疑我从中做鬼哈哈。

看到了吧,他会原样输出的呢,所以现在对于命令行有没有新的认识呢?

猜你喜欢

转载自blog.csdn.net/huijiaaa1/article/details/81118627