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



例如,在sudo cd codeFolder中写入,然后vi代码.c都自动同步。我希望将字符串输入到终端中,而不是直接的命令,它将由我的Linux程序跟踪。我期望的例子。不要真的担心命令未找到错误,我只想通过我正在使用的另一个命令来解析用户输入。

编辑:

哇,我在没有意识到你想使用文件的情况下写下了原始答案。你可以在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);
}

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

原件:

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

类似这样的东西:

#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

只有在cd codeFolder成功的情况下,才会执行vim code.c。还有一个OR操作符(||(,如果前面的操作不成功,它会执行命令。

最新更新