是否有可以将命令作为批处理列表运行的应用程序?

fme*_*ier 1 linux shell

有没有可以收集命令并连续运行它们的应用程序?当我有多个不应该同时运行的命令要运行时,这会很有帮助。有一个小窗口,我可以在其中看到正在运行和即将到来的命令,这也很有趣。

我搜索了“linux shell 批处理列表”,但没有找到任何东西。

X T*_*ian 5

传统上,在多用户环境中,batch被用于这种事情。想象一下 3 个人在一台特定的共享机器上工作。每个人可能都想编译他们的程序,但他们只希望一次运行一个编译,这样他们都可以在没有太多干扰的情况下进行编辑。每个人都可以发出自己的命令,系统会依次处理每个人。

echo cc a.c |batch 
echo make projectUser2 |batch 
echo make projectBUser3 |batch 
Run Code Online (Sandbox Code Playgroud)

每个构建都将按顺序运行。

您需要安装at软件包才能获取batch命令。

sudo apt-get install at
Run Code Online (Sandbox Code Playgroud)

但是,如果您是自己机器上的单个用户,那么您只需编辑一个文件并将每个命令放在它自己的行上即可。例如,假设您创建一个包含fileWithCommands以下内容的文件名:

cc a.c
make projectUser2
make projectBUser3
Run Code Online (Sandbox Code Playgroud)

获取 bash 来使用它,

bash ./fileWithCommands
Run Code Online (Sandbox Code Playgroud)

其他答案使用更多的 bash shell 命令语言,以提供更多情报报告

如果要将输出保存在文件中,则

bash ./fileWithCommands >ouput.log` 
Run Code Online (Sandbox Code Playgroud)

会这样做,错误将报告给终端。要将错误正确重定向到同一文件,则命令是:

bash ./fileWithCommands >outputWithErrors.log 2>&1
Run Code Online (Sandbox Code Playgroud)