gpt4 book ai didi

bash - 在 shell 中一行运行多个命令

转载 作者:行者123 更新时间:2023-11-29 08:37:03 25 4
gpt4 key购买 nike

假设我有一个文件 /templates/apple 并且我想要

  1. 把它放在两个不同的地方然后
  2. 删除原来的。

因此,/templates/apple 将被复制到 /templates/used/templates/inuse然后我想删除原件。

cp 是执行此操作的最佳方法,其次是 rm 吗?或者有更好的方法吗?

我想在一行中完成所有工作,所以我认为它看起来像这样:

cp /templates/apple /templates/used | cp /templates/apple /templates/inuse | rm /templates/apple

这是正确的语法吗?

最佳答案

您正在使用 |(管道)将一个命令的输出定向到另一个命令。您正在寻找的是 && 运算符,仅当前一个命令成功时才执行下一个命令:

cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple

或者

cp /templates/apple /templates/used && mv /templates/apple /templates/inuse

总结(非详尽地)bash 的命令操作符/分隔符:

  • | 将一个命令的标准输出 (stdout) 通过管道(管道)传输到另一个命令的标准输入。请注意,stderr 仍然进入其默认目的地,无论碰巧是什么。
  • |&将一个命令的 stdoutstderr 通过管道传输到另一个命令的标准输入。非常有用,在 bash 版本 4 及更高版本中可用。
  • && 仅当前一个命令成功时才执行 && 的右侧命令。
  • || 执行 || 的右侧命令,只有前一个命令失败。
  • ; 总是执行 ; 右边的命令,不管前一个命令是成功还是失败。除非之前调用了 set -e,这会导致 bash 因错误而失败。

关于bash - 在 shell 中一行运行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com