LINUX 下实现一个可执行命令的工具

这篇博客介绍了如何在Linux环境下,通过安装gcc、编写并编译源码,创建一个自定义的可执行命令。详细步骤包括检查gcc是否已安装、使用vi编辑器创建并保存源码、编译源码生成可执行文件,以及将命令移动到/usr/sbin目录以便直接使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行命令:

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LanComer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值