我在看一本书,上面写着:
每个进程至少有三个可用的通信通道:“标准输入”(STDIN)、“标准输出”(STDOUT)和“标准错误”(STDERR)。
大多数命令接受来自 STDIN 的输入并将其输出写入 STDOUT。他们将错误消息写入 STDERR。此约定允许您像构建块一样将命令串在一起以创建复合管道。
Shell 将符号
<、>和解释>>为将命令的输入或输出重新路由到文件或从文件重新路由的指令。要将一个命令的 STDOUT 连接到另一个命令的 STDIN,请使用
|通常称为管道的符号。Run Code Online (Sandbox Code Playgroud)ps -ef | grep httpd
所以基本上这就是说标准输入是一个允许用户写入文件的命令,而标准输出是一个命令让 bash shell 将输出写入 shell,而标准错误就像输出一样,但它只是当文件系统出现错误时调用。然后我们到了连接 STDOUT 和 STDIN 的部分,我迷路了。
我使用以下命令将我的输入文件内容转换为小写
tr A-Z a-z < input > output
Run Code Online (Sandbox Code Playgroud)
这个命令工作正常。
但是当我尝试将输出存储在输入文件本身中时,它不起作用。执行命令后输入文件为空。为什么?
tr A-Z a-z < input > input
Run Code Online (Sandbox Code Playgroud)