Unix 连接命令
Unix concatenation commands
这里有一个我不明白的问题:
cat abc.dat | tee bcd.dat | tr ab ba > cde.dat
在这种情况下,我理解翻译部分,但我对管道 | 的含义有点困惑是的,有人告诉我它需要一个程序的标准输出和另一个程序的标准输入。如果我试图解释这一点,如果我错了请纠正我,但你正在获取 abc.dat 的内容,将输出复制到 bcd.dat,然后从 bcd.dat 获取内容] 并将 a 和 b 的实例分别翻译成 b 和 a,然后将其放入 cde.dat?
官方的回答是:abc.dat复制到bcd.dat。 abc.dat 被复制到 cde.dat 但 'a' 被 'b' 替换,'b' 被 'a' 替换。但为什么 abc.dat 被复制到 cde.dat 而不是 bcd.dat?管道不继续了吗?
tee
实用程序从 stdin 读取并首先将其写入 stdout, 和 其次是作为参数给出的 all 文件.在您的情况下,stdin 被写入 stdout,并写入文件 bcd.dat
。 tee
后面的管道将 tee
的标准输出链接到 tr
的标准输入。虽然数据是相同的,但不是文件 bcd.dat
的内容被传送到 tr
。它是初始 cat
的输出,这又是文件 abc.dat
.
的内容
“官方”回答措辞不佳。 tee
和 tr
都不知道 abc.dat
;恰好它从 tee
读取的内容是 tee
从 cat
读取的内容,这就是 cat
从 abc.dat
.
读取的内容
这里有一个我不明白的问题:
cat abc.dat | tee bcd.dat | tr ab ba > cde.dat
在这种情况下,我理解翻译部分,但我对管道 | 的含义有点困惑是的,有人告诉我它需要一个程序的标准输出和另一个程序的标准输入。如果我试图解释这一点,如果我错了请纠正我,但你正在获取 abc.dat 的内容,将输出复制到 bcd.dat,然后从 bcd.dat 获取内容] 并将 a 和 b 的实例分别翻译成 b 和 a,然后将其放入 cde.dat?
官方的回答是:abc.dat复制到bcd.dat。 abc.dat 被复制到 cde.dat 但 'a' 被 'b' 替换,'b' 被 'a' 替换。但为什么 abc.dat 被复制到 cde.dat 而不是 bcd.dat?管道不继续了吗?
tee
实用程序从 stdin 读取并首先将其写入 stdout, 和 其次是作为参数给出的 all 文件.在您的情况下,stdin 被写入 stdout,并写入文件 bcd.dat
。 tee
后面的管道将 tee
的标准输出链接到 tr
的标准输入。虽然数据是相同的,但不是文件 bcd.dat
的内容被传送到 tr
。它是初始 cat
的输出,这又是文件 abc.dat
.
“官方”回答措辞不佳。 tee
和 tr
都不知道 abc.dat
;恰好它从 tee
读取的内容是 tee
从 cat
读取的内容,这就是 cat
从 abc.dat
.