如何在终端中组合多个命令?

Pri*_*ser 33 command-line

我有以下命令。

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php
Run Code Online (Sandbox Code Playgroud)

截至目前,我正在一一执行。

有没有办法将这些命令组合在一行中?

Col*_*337 40

是的,用分号分隔,如下所示:

dir; ls -l
Run Code Online (Sandbox Code Playgroud)

大多数语言/外壳使用分号来表示命令的结束并在从左到右评估时开始新的。

或者按照@RobieBasak 的建议,使用 && 而不是 ; 防止编码事故。

dir && ls -l
Run Code Online (Sandbox Code Playgroud)

  • 使用 `&&` 而不是 `;` 是个好主意。这确保仅在先前的命令没有失败时才执行后续命令。这避免了一些尴尬的后果。例如:`cd /somewhere_else; 如果`/somewhere_else` 不存在或者你拼错了, rm -Rf *` 可能会造成灾难性的后果;`cd /somewhere_else && rm -Rf *` 保护您免受此影响。 (25认同)
  • '&&' 解决方案非常好,它应该是这个答案中的第一个建议。请编辑您的答案并将更好的答案提升到第一位。 (4认同)

Rap*_*ael 7

这说明了更多:

  1. 一种 ; B – 运行 A 然后运行 ​​B,不管 A 的成功或失败

  2. A && B – 只有在 A 成功时才运行 B

  3. 一个|| B – 仅在 A 失败时运行 B

来源:https : //www.howtogeek.com/269509/how-to-run-two-or-more-terminal-commands-at-once-in-linux/