我创建了一个小别名,但出现一个问题:如何逐个命令地执行单行命令组而不破坏它?
echo " alias get='sudo apt-get install'" >> .bashrc & bash
这里我们有 echo 和 bash 命令。即使将它们全部放在一行中,我也想逐个命令地执行它们。
更新:例如,如果有一个组命令行
命令 1;命令 2;命令 3;命令 4;命令 5
然后我想不分步骤地执行这组命令。一次执行前 3 个命令,然后执行接下来的 2 个命令。但条件是我必须将所有这些命令写在一行中。
答案1
您应该能够使用命令分组来实现您想要的功能,它允许您同时执行命令(在这种情况下,无论它们是否成功),即以 的形式执行{ cmd; cmd; }
。有关命令分组以及使用 && 和 || 逻辑运算符的更多信息,请访问Bash 维基并在Bash 参考手册。
我最初认为命令行可以采用的形式是:
{ cmd1; cmd2; cmd3; }; sleep 1; { cmd4; cmd5;}
sleep 命令只是暂停一下,可以删除。
然而,您说您想要额外的返回,或者对最后两个命令的确认,因此为了实现这一点,您需要中断上面示例中的命令流 - sleep 仅仅暂停,但无论如何最后两个命令总是会执行。
要真正停止命令链,您可以使用read -p.....
需要用户干预才能继续的操作。您可以执行以下操作:
1) 执行前三个命令,然后让用户有机会执行或不执行最后的命令。您可以看看我下面写的一行代码是否合适:
笔记:请将 id 命令替换为您自己的命令。
id; id; id; read -p "Execute final two commands? (Y/N) " ans; if [[ $ans =~ Y|y ]]; then id; id; else echo "Finished"; fi
现在前三个命令执行了,然后您需要按 y 并返回才能执行最后两个命令,但所有命令都在同一行。这几乎是我所能想到的最多了,因为我不太确定你想要什么。
答案2
&
在后台运行左侧命令。如果只想在前一个命令成功运行后运行第二个命令,请使用
command1 && command2
如果要运行第二个命令,即使前一个命令没有成功,请使用
command1 ; command2
答案3
echo “别名 get='sudo apt-get install'”>> .bashrc&&狂欢
只需输入 2 个“&”符号即可。
答案4
如果要按顺序运行它们,最好的方法是使用双 & 符号&&
。例如,在运行 时经常使用这种方法sudo apt-get update && sudo apt-get upgrade
。
要求&&
第一个命令成功运行后才能启动第二个命令。因此,在我给出的示例中,它会更新软件包列表,然后升级软件包,但前提是更新成功。
如果您想使某个程序与其终端脱离关联,则单个 & 符号很有用,这样即使活动终端关闭,该程序仍保持打开状态,例如使用nautilus & disown
。