ubuntu qt 运行命令行

news2024/11/15 4:25:47

文章目录

    • 1.C++实现
    • 2.python实现

1.C++实现

下面是封装好的C++头文件,直接调用run_cmd_fun()即可。

#ifndef GET_CMD_H
#define GET_CMD_H

#endif // GET_CMD_H
#include <iostream>
#include<QString>
using namespace std;

//system("gnome-terminal --window -e 'bash -c \"pwd;ls;exec bash\"' --tab -e 'bash -c \"pwd; exec bash\"'");
QString win_cmd = "gnome-terminal --window -e 'bash -c \"";  // 运行窗口的命令
QString tab_cmd = " --tab -e 'bash -c \""; //运行标签的命令
QString pause_cmd = ";exec bash\"'";  //终端等待的命令
QString source_path = "source /opt/ros/noetic/setup.bash ;"; //添加环境变量
QString Qcmd = "";

void run_cmd_fun(QString cmd1)
{ //get one cmd
    Qcmd = "";
    Qcmd.append(win_cmd);
    Qcmd.append(source_path);
    Qcmd.append(cmd1);
    Qcmd.append(pause_cmd);
    string cmd = Qcmd.toStdString();
    cout << cmd << endl;
    system(cmd.c_str());
}

void run_cmd_fun(QString cmd1, QString cmd2, int input_time=1)
{ //get two cmd
    //The time set
    Qcmd = "";
    QString pause_t = "sleep ";
    pause_t.append(QString::number(input_time));
    pause_t.append(";");
    //The  first cmd set
    Qcmd.append(win_cmd);
    Qcmd.append(cmd1);
    Qcmd.append(pause_cmd);

    //The  second cmd set
    Qcmd.append(tab_cmd);
    Qcmd.append(pause_t);
    Qcmd.append(cmd2);
    Qcmd.append(pause_cmd);

    //The  cm1 + cm2 --> string cmd
    string cmd = Qcmd.toStdString();
    system(cmd.c_str());
}

void run_cmd_fun(QString cmd1, QString cmd2, QString cmd3, int input_time=1)
{ //get three cmd
    Qcmd = "";
    QString pause_t = "sleep ";
    pause_t.append(QString::number(input_time));
    pause_t.append(";");
    //The  first cmd set
    Qcmd.append(win_cmd);
    Qcmd.append(cmd1);
    Qcmd.append(pause_cmd);

    //The  second cmd set
    Qcmd.append(tab_cmd);
    Qcmd.append(pause_t);
    Qcmd.append(cmd2);
    Qcmd.append(pause_cmd);

    //The  third cmd set
    Qcmd.append(tab_cmd);
    Qcmd.append(pause_t);
    Qcmd.append(pause_t);
    Qcmd.append(cmd3);
    Qcmd.append(pause_cmd);

    //The  cmd1 + cmd2 + cmd3 --> cmd
    string cmd = Qcmd.toStdString();
    system(cmd.c_str());
}


void run_cmd_fun(QString cmd1, QString cmd2, QString cmd3, QString cmd4, int input_time=1)
{ //get four cmd
    Qcmd = "";
    //The time set
    QString pause_t = "sleep ";
    pause_t.append(QString::number(input_time));
    pause_t.append(";");

    //The first cmd set
    Qcmd.append(win_cmd);
    Qcmd.append(cmd1);
    Qcmd.append(pause_cmd);

    //The second cmd set
    Qcmd.append(tab_cmd);
    Qcmd.append(pause_t);
    Qcmd.append(cmd2);
    Qcmd.append(pause_cmd);

    //The third cmd set
    Qcmd.append(tab_cmd);
    Qcmd.append(pause_t);
    Qcmd.append(pause_t);
    Qcmd.append(cmd3);
    Qcmd.append(pause_cmd);

    //The fourth cmd set
    Qcmd.append(tab_cmd);
    Qcmd.append(pause_t);
    Qcmd.append(pause_t);
    Qcmd.append(pause_t);
    Qcmd.append(cmd4);
    Qcmd.append(pause_cmd);

    // cmd1 + cmd2 + cmd3 + cmd4 = cmd
    string cmd = Qcmd.toStdString();
    system(cmd.c_str());
}

注意:想要生成双击直接运行的程序,需要添加:

QMAKE_LFLAGS += -no-pie

在这里插入图片描述

2.python实现

直接调用:run_cmd([“roscore”,“rostopic list”], 2)

openvino_path = "source /opt/intel/openvino/bin/setupvars.sh;"  # 添加的一些虚拟环境
ros_path = "source ~/.bashrc;"+openvino_path 


win_cmd = "gnome-terminal --window -e 'bash -c \""+ros_path
tab_cmd = " --tab -e 'bash -c \""+ros_path
end_cmd = ";exec bash\"'"

def run_win(cmd):
    # 运行的第一个窗口终端
    cmd = win_cmd+cmd+end_cmd
    return cmd

def run_tab(cmd, t):
    # 运行的标签终端
    delay_t = "sleep {};".format(str(t))
    cmd = tab_cmd+delay_t+cmd+end_cmd
    return cmd

def run_cmd(cmds, t = 2):
    cmd  = run_win(cmds[0])
    for i in range(1, len(cmds)):
        cmd = cmd + run_tab(cmds[i], t*i)
    print(cmd)
    os.system(cmd)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

USB8814动态信号采集卡——声音振动类信号处理的理想之选!

背景介绍&#xff1a; 科技的发展在一定程度上依赖于对信号的处理&#xff0c;信号处理技术的先进性在很大程度上决定了科技发展的速度和方向。数字信号处理技术的崛起&#xff0c;彻底改变了传统的信息与信号处理方式&#xff0c;使得数据采集这一前期工作在数字系统中发挥着…

FTP文件传输协议 、多种方式安装yum仓库

一、网络文件共享服务 1.存储类型分三种&#xff1a; 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN&#xff08;可以使用空间&#xff0c;管理也是你来管理&#xff09; 网络附加存储…

ImageNet Classification with Deep Convolutional 论文笔记

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

Leetcode23-数组能形成多少数对(2341)

1、题目 给你一个下标从 0 开始的整数数组 nums 。在一步操作中&#xff0c;你可以执行以下步骤&#xff1a; 从 nums 选出 两个 相等的 整数 从 nums 中移除这两个整数&#xff0c;形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一个下标从 0 开始、长…

SpringMVC参数接收见解4

# 4.参数接收Springmvc中&#xff0c;接收页面提交的数据是通过方法形参来接收&#xff1a; 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型&#xff0c;所以spirngmvc提供了很多converter&#xff08;转换…

第二证券:大盘探底回升走出底部还看成交量配合

持续震动数日后&#xff0c;大盘再现探底上升走势。 上证指数周二小幅低开后窄幅震动&#xff0c;午后快速回落改写本轮回调新低后&#xff0c;有资金开始出手介入&#xff0c;尾盘指数翻红。深证成指同样是在午后呈现探底上升走势&#xff0c;最终重回5日均线上方。截至收盘&…

mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径

一、第一步:下载步骤 下载链接&#xff1a;MySQL :: Download MySQL Installer 选择版本8.0.35&#xff0c;社区版&#xff0c; 点击 Download 下载 安装包 二、第二步:安装步骤 添加环境变量&#xff0c;C:\Program Files\MySQL\MySQL Server 8.0\bin 可以点开MySQL 8.0 Co…

如何用AI提高论文阅读效率?

已经2024年了&#xff0c;该出现一个写论文解读AI Agent了。 大家肯定也在经常刷论文吧。 但真正尝试过用GPT去刷论文、写论文解读的小伙伴&#xff0c;一定深有体验——费劲。其他agents也没有能搞定的&#xff0c;今天我发现了一个超级厉害的写论文解读的agent &#xff0c…

HNU-模式识别-作业2-面向应用分类系统

模式识别-作业2 计科210X 甘晴void 202108010XXX 【具体实现思路是按照去年数学建模国赛题来做的&#xff0c;就放个思路&#xff0c;完整不放全了】 题目&#xff1a; 查阅文献资料&#xff0c;构建一个面向应用的分类系统。 要求&#xff1a; 至少3页A4纸&#xff0c;文…

机器人制作开源方案 | AI校园服务机器人

作者&#xff1a;李强、李振宁、毛维雷、李文文、张奥 单位&#xff1a;山西能源学院 指导老师&#xff1a;姚志广、程晟 在这个科技飞速发展的时代&#xff0c;在工业智造、人工智能的飞速发展中&#xff0c;出现了越来越多的智能化机械装置&#xff0c;也有许多创新类的比赛…

STM32F103标准外设库—— 新建工程与库函数(四)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

力扣刷MySQL-第二弹(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

基于Yolov5+Deepsort+SlowFast算法实现视频目标识别、追踪与行为实时检测

前言 前段时间打算做一个目标行为检测的项目&#xff0c;翻阅了大量资料&#xff0c;也借鉴了不少项目&#xff0c;最终感觉Yolov5DeepsortSlowfast实现实时动作检测这个项目不错&#xff0c;因此进行了实现。 一、核心功能设计 总的来说&#xff0c;我们需要能够实现实时检测视…

SAP PI之Rest adapter

一&#xff0c;简介 REST风格接口是以http为传输协议&#xff0c;以xml或json或text为有效负载。下图展示了REST到XI再返回的一个过程&#xff0c;一个REST接口包含的信息有&#xff1a;服务URL、URL中带的参数、http方法(post/get/put等)、http头部、body部分的有效载荷。而X…

debian12部署Gitea服务之二——部署git-lfs

Debian安装gitlfs: 先更新下软件包版本 sudo apt update 安装 sudo apt install git-lfs 验证是否安装成功 git lfs version cd到Gitea仓库目录下 cd /mnt/HuHDD/Git/Gitea/Repo/hu/testrepo.git 执行lfs的初始化命令 git lfs install客户机Windows端在官网下载并安装Git-Lfs 再…

编译原理1.3习题 程序设计语言的发展历程

图源&#xff1a;文心一言 编译原理习题整理~&#x1f95d;&#x1f95d; 作为初学者的我&#xff0c;这些习题主要用于自我巩固。由于是自学&#xff0c;答案难免有误&#xff0c;非常欢迎各位小伙伴指正与讨论&#xff01;&#x1f44f;&#x1f4a1; 第1版&#xff1a;自…

内存操作函数

一、memcpy函数 memcpy(void * destination, const void * source, num)表示将source中的前num个字符复制到destination中&#xff0c;不允许source和destination的内存区域重叠memcpy(a, bn1, n2)表示从b中第n11个字符开始复制&#xff0c;复制n2个字符到a中为了防止溢出&…

框架基础-Maven+SpringBoot入门

框架基础 Maven基础 Maven概述 Maven是为Java项目提供项目构建和依赖管理的工具 Maven三大功能 - 项目构建构建&#xff1a;是一个将代码从开发阶段到生产阶段的一个过程&#xff1a;清理&#xff0c;编译&#xff0c;测试&#xff0c;打包&#xff0c;安装&#xff0c;部署…

给WordPress网站增加一个带时间的led广告牌

WordPress 后台》外观》小工具》自定义html》添加到合适位置 其他系统可自行添加合适位置 <style type"text/css">.studytextgzbox {background: #F9F9F9; border: 1px solid #999999;margin: 1px;text-align:center; float: left;line-height: 28px;hei…

Spring IOC 之加载 BeanDefinition

1、前言 前面的文章我们已经对IOC之Spring统一资源加载策略有了一定的了解&#xff0c;本文我们将探讨Spring IOC 加载 BeanDefinition的整个过程。 我们先先看一段熟悉的代码&#xff1a; ClassPathResource resource new ClassPathResource("bean.xml"); // &l…