如何将“cat”的输出重定向到不同的文件夹?

tri*_*ity 3 command-line output cat

我有一个 Python 脚本EulerianCycle.py和一个输入文件euleriancycle.txt

通过py EulerianCycle euleriancycle.txt > cat euleriancycleout.txt进入当前文件夹(py是 的别名python3),我能够获得正确的结果。

不过,我有在当前的一个叫另一个文件夹输出,而我希望我的所有输出文件中被引导。

我试过了 py EulerianCycle.py euleriancycle.txt | cd outputs/ | cat > euleriancycleout.txt

py EulerianCycle.py euleriancycle.txt | cat >cd outputs/euleriancycleout.txt

这给了我破碎的管道错误。

ste*_*ver 7

如果py EulerianCycle.py euleriancycle.txt写入标准输出流(我认为是这样,否则您将无法通过管道将其传输到cat),那么cat在这里完全是多余的 - 您可以直接重定向标准输出,指定输出文件的绝对路径或相对路径:

py EulerianCycle.py euleriancycle.txt > outputs/euleriancycleout.txt
Run Code Online (Sandbox Code Playgroud)

(注意:目录outputs/必须已经存在)。


您的其他命令都不会像您想象的那样工作。

  • py EulerianCycle euleriancycle.txt > cat euleriancycleout.txt,壳创建一个名为文件cat在当前目录,并重定向输出py EulerianCycle到它,经过双方 euleriancycle.txteuleriancycleout.txt把它作为输入参数。

  • in py EulerianCycle.py euleriancycle.txt | cat >cd outputs/euleriancycleout.txt,shell 创建一个cd在当前目录中命名的文件,将它cat 读取 outputs/euleriancycleout.txt和写入 file cd,忽略来自管道的cat标准输入(仅在没有输入文件或显式输入时读取标准输入-)。

也许您在这里的目标是将输出通过管道传输到子shell,例如:

py EulerianCycle.py euleriancycle.txt | (cd outputs; cat > euleriancycleout.txt)
Run Code Online (Sandbox Code Playgroud)

或者

py EulerianCycle.py euleriancycle.txt | (cd outputs && cat > euleriancycleout.txt)
Run Code Online (Sandbox Code Playgroud)

在这里,cat在更改到目标目录后读取子shell 的标准输入(由管道提供)。第二个版本仅euleriancycleout.txtcd命令成功时创建;如果cd失败,第一个在当前目录中创建它。