揭秘命令行的小秘密
不知道大家是不是跟我也一样,曾经学习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盘 目录下这个文件是否是这样的内容,以免大家怀疑我从中做鬼哈哈。
看到了吧,他会原样输出的呢,所以现在对于命令行有没有新的认识呢?
上一篇: 一起学西瓜书04 决策树
下一篇: MySQL常用命令大全脚本之家总结