我有一个encrypt()
功能是这样的:重定向VS管 - 为什么它的工作原理和为什么它不
encrypt -a aes -k key **-i input.file** -o output.file
内搭在1个输入文件和输出1文件也是如此。
通过使用管:
echo "abc" | encrypt -a aes -k key -o output.file
Q1)如何在encrypt()
功能知道或OS知道输出为管|
是假设是用于加密函数输入(这样我没不需要指定“-i input.file”参数)?
Q2为什么重定向在这种情况下起作用? echo“abc”> encrypt -a aes -k key -o output.file
你能解释为什么echo“abc”>实际上并没有提供“abc”作为加密过程的输入。但仍然回显“abc”> file.txt将“abc”放入file.txt中。 – Noob
@Noob'echo“abc”'将'abc \ n'写入'stdout'。因为您使用重定向操作符将'stdout'重定向到'file.txt',所以实际上是将'abc \ n'写入一个名为'file.txt'的文件中。通常,echo“X”> Y'会将'X \ n'写入文件'Y'。如果你使用'echo'abc“> encrypt ...',你可以将'abc \ n'写入一个名为'encrypt'的文件中。您不执行encrypt命令。 –
当你说'echo abc |加密'你正在将输出传送到程序'encrypt'中。当你说'echo abc> encrypt'时,你将输出重定向到一个名为“encrypt”的文件中。 '|'操作符管道化为程序。 '>'操作符重定向到文件。你可能会有一个误解,那就是Unix/Linux中的命令名是特殊的 - 它们不是。当你说'echo abc> encrypt'时,shell不会**注意到“encrypt”也是一个命令的名字。它只是查找'>'后面的单词并通过该名称创建输出文件。 –