是否可以通过 txt 或 CSV 文件自动将命令输入到终端,而不是手动写出来?

问题描述

比如写在sudo cd codeFolder,然后vi code.c都自动同步。我想将字符串输入到终端中,而不是直接命令,我的 Linux 程序将跟踪这些字符串。

enter image description here

。不用担心找不到命令的错误,我只想通过我正在使用的另一个命令解析用户输入。

解决方法

编辑:

哇,我写了原始答案却没有意识到您想使用文件。你可以像这样在 C++ 中做到这一点:

#include <cstdlib>
#include <fstream>
#include <iostream>
int main(int argc,char** argv){
    std::ifstream fin(argv[1]);
    std::string line;
    while(std::getline(fin,line))
        std::system(line);
}

与其他示例足够相似,但使用文件。

原文:

一种快速简便(虽然可能不安全)的方法是使用 system() 文件中提供的 cstdlib.h 函数。

像这样:

#include <cstdlib.h>
int main(int argc,char** argv){
    for(int i=0;i < argc; ++i)
        system(argv[i]);
}

这将是用法:

$ executer "cd codeFolder" "vim code.c"

在这种情况下,我认为可以使用它,因为您将使用它来自己执行命令,但是您必须记住,如果您没有正确清理输入,参数也容易受到二进制利用。

或者,您可以使用 Bash 本身来执行命令:

$ cd codeFolder; vim code.c

分号用于在第一个命令执行完毕后执行命令,无论其返回值如何,如果您选择此路线,我建议您执行以下操作:

$ cd codeFolder && vim code.c

只有在 vim code.c 成功时才会执行 cd codeFolder。还有一个 OR 运算符 (||),如果之前的命令不成功,它会执行该命令。