我有一個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」也是一個命令的名字。它只是查找'>'後面的單詞並通過該名稱創建輸出文件。 –