"ls -l | wc -l" 输出 "1+no.file/directories"(第一行额外一个)。
但是,当我运行命令 ls -l | wc -l > temp(当输出被重定向到一个新的文件 temp 时)。存储在临时文件中的值比未重定向时输出的值多 1。我想这是因为创建了新的“临时”文件,但临时文件应该是在 ls -l 命令运行后创建的,因此,输出应该与没有重定向的输出相同。
有人请帮忙
这是完全正常的行为。
发生的情况是 shell(sh、bash、csh、ksh 等)首先读取整个命令行。
然后按从右到左的顺序构建进程、管道和重定向文件,然后才运行实际命令。
因此,在运行 ls 命令之前创建重定向文件 (temp)。
它必须是,因为在 wc 实际启动之前,与“temp”相关联的文件句柄需要可用作 wc 输出的目标。
在将 ls 的输出附加到将成为 wc 输入的文件句柄之前,需要依次设置 wc 命令。
尽管一开始看起来有点不合逻辑,但当您了解 shell 构建其命令序列的方式时,这完全有道理。
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |