我创建了一个小别名,并得到一个问题,如何在不破坏它的情况下逐个命令地执行单行命令组?
echo " alias get='sudo apt-get install'" >> .bashrc & bash
Run Code Online (Sandbox Code Playgroud)
这里我们有 echo 和 bash 命令。即使将它们全部放在一行中,我也想逐个命令地执行它们。
更新:例如,如果有一个组命令行
命令1;命令2;命令3;命令4;命令5
然后我想不一步执行这个组命令。首先一次执行 3 个命令,然后执行接下来的 2 个命令。但条件是我必须将所有这些命令写在一行中。
小智 5
您应该能够通过使用命令分组来完成您的想法,它允许您一起执行命令,在本例中,无论它们是否成功,即以{ cmd; cmd; }
. 有关命令分组以及 && 和 || 的使用的更多信息 逻辑运算符可在Bash wiki和Bash 参考手册中找到。
我最初认为您的命令行可以采用的形式是:
{ cmd1; cmd2; cmd3; }; sleep 1; { cmd4; cmd5;}
Run Code Online (Sandbox Code Playgroud)
sleep 命令只是暂停,可以删除。
但是,您说您想要额外的返回或对最后两个命令的确认,因此要实现这一点,您需要中断上面示例中的命令流 - sleep 只是暂停,但无论如何最后两个命令始终执行。
要真正停止命令链,您可以使用read -p.....
需要用户干预才能继续的命令。您可以执行以下操作:
1) 执行前三个命令,然后让用户有机会执行或不执行最后一个命令。你可以看看我下面写的oneliner是否合适:
注意:请将 id 命令替换为您自己的命令。
id; id; id; read -p "Execute final two commands? (Y/N) " ans; if [[ $ans =~ Y|y ]]; then id; id; else echo "Finished"; fi
Run Code Online (Sandbox Code Playgroud)
现在执行了前三个命令,然后您需要按 y 并返回才能执行后两个命令,但所有命令都在同一行。这就是我真正能想到的,因为我不太确定你想要什么。