调用命令就像在另一个目录中调用一样

puf*_*ish 7 bash scripts

我正在使用一个命令行程序,其文档说明:

“您可以在位于另一个目录中的输入上运行 XXX,但其输出将始终放在当前工作目录中”。不过,我希望将输出写入另一个目录。

我可以(用cd, 或pushd+ popd

  1. 切换到输出目录
  2. 运行命令,以便将输出放在那里
  3. 然后改回来

或者

  1. 在我当前的位置运行命令
  2. 将输出移动到输出文件夹

...但两者都显得笨拙,并且如果脚本由不了解此要求的人编辑,则容易出错。我能想到的唯一其他解决方案是用分号连接命令。还有其他方法吗?

顺便说一下,这是在 bash 中。

gle*_*man 10

使用括号,因此 cd 出现在子外壳中:

(cd other_dir && xxx)
Run Code Online (Sandbox Code Playgroud)

结束时,您当前的工作目录不会改变。

cd 可能会失败,因此用于&&有条件地执行程序。