Bash:echo xy >| foo 做什么?

Bash:echo xy >| foo 做什么?

内核 mttr 文档 给出这个命令:

echo "base=0xf8000000 size=0x400000 type=write-combining" >| /proc/mtrr

虽然我知道>|的作用,但我从未见过它们组合在一起。谷歌搜索bash >|也没什么用。我的实验没有显示echo bla > foo和之间有什么区别echo bla >| foo

答案1

搜索man bash字符串显示

-C 如果设置,bash 不会使用 >、>& 和 <> 重定向运算符覆盖现有文件。创建输出文件时,可以使用重定向运算符 >| 代替 > 来覆盖此设置。

在下面set

所以,它的意思是“即使设置了 -C 也要覆盖”。

答案2

如您所知,echo 会写入终端...当与重定向运算符一起使用时,echo 会被发送到接收文件,但在这种情况下 /proc 不是一个文件.../proc 相当于 Windows 中的 kernel32.dll,即如果我想要有关内核的信息,我会查询 /proc

由于 /proc 允许直接访问正在运行的内核,因此必须将输出重定向到管道,然后将管道中的信息转储到 GPU 的 MTRR 寄存器中,正如 choroba 所说,这样做可确保重定向是强制的,因为这是您的内核。此命令将内存中的基址设置为 4160749568(十进制)或 0xf8000000(十六进制),并分配 4GB 内存,并启用写入合并

相关内容