有没有可以收集命令并连续运行它们的应用程序?当我有多个不应该同时运行的命令要运行时,这会很有帮助。有一个小窗口,我可以在其中看到正在运行和即将到来的命令,这也很有趣。
我搜索了“linux shell 批处理列表”,但没有找到任何东西。
传统上,在多用户环境中,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)