执行命令:
#cmd -l /root 列出 root 目录下的文件详细信息 #cmd -a 1 启动文本编辑器 #cmd -i 1 实现关机
制作执行命令过程,需要在Linux 下安装gcc
,未安装linux ,可以参靠如下连接进行安装:
https://blog.youkuaiyun.com/u012586487/article/details/132374898
1.检查是否安装了gcc
#gcc --version
正常输出版本,证明已安装,如果没有安装请用如下命令安装:
ubuntu Kylin 系统下,
#apt-get install gcc
2.打开命令窗口
#vi cmd.c 运行该命令
然后,复制粘贴cmd.c 的源码,vi状态下,按 : ,输入wq 保存,退出。
如不懂vi vim 工具的使用,只能直接上传cmd.c文件到linux 系统。
3.编译 cmd.c 源码
#gcc -o cmd cmd.cmd
编译完后,将生成一个 cmd 可执行文件
4.测试运行:
#./cmd -l /root 查看/root 目录信息
5.去除 ./ 直接用 cmd用命令使用
需要拷贝 cmd 文件到 /usr/sbin 目录下,
这里再尝试执行 cmd -l /root 目录,显示成功即可
6.至此,系统命令制作成功。
源码如下:
#include <stdio.h> //system 命令所在包stdlib.h #include <stdlib.h> //合并两个字符串 strcpy,strcat, string.h #include <string.h> //main 程序入口 int main(int argc, char **argv) { if (argc < 2||argc >3){ printf("执行命令方式:cmd -l /root %d: \n",argc); printf("执行命令方式:cmd -a 启动文本编辑器\n"); printf("执行命令方式:cmd -i 实现关机\n"); return 1; } //输出参数 printf("argv[%d]: %s\n", 0, argv[0]); printf("argv[%d]: %s\n", 1, argv[1]); char s3[200]; if(argc==3){ char *s2 = argv[2]; char s1[100] = "ls -la "; //实现字符串合并 strcpy(s3,s1); strcat(s3,s2); printf("argv[%d]: %s\n", 2, s3); } char *optstring = "-l:a:i:"; int c; while(1){ c = getopt(argc, argv, optstring); if(c==-1){ break; } switch(c){ case 'l': //执行 ls 目录查看命令 system(s3); break; case 'a': //启动文本编辑器 system("gedit"); break; case 'i': //实现关机 system("shutdown -h now"); break; default: break; } } system("puase"); return 0; }