有人提到
echo "" > /dev/null
命令我跑。但我太紧张了,不敢尝试,因为网上有人说这似乎“相对无害……”
这个命令会做什么?我正在考虑在虚拟机中运行它,但我没有设置虚拟机,如果它不执行任何操作,我不想浪费我的时间。我也不想在我的系统上运行它,以防万一。
它有什么作用?
答案1
这并不危险。
- 该
echo
命令用于将输出发送到stdout
。这通常是您的终端,但可以重定向到其他内容。 - 重定向
>
运算符将把输出重定向stdout
到您选择的文件。 - 文件
/dev
通常是一种特殊类型的文件,它将输出发送到设备驱动程序而不是存储。
在现代 Unix 系统下,这些“特殊”文件由硬件检测过程生成并动态维护 -udev
例如systemd
在 Linux 下。但是,如果系统中的硬件没有变化,则有可能有一个完全静态的系统,其中手动生成这些文件(viamknod
是一种方式)- 在即插即用接口流行之前(例如 70 年代、80 年代和 90 年代初期的各种 Unices),这是很常见的。
/dev/null
是标准的 Unix 设备驱动程序,它会直接丢弃所接收的内容。它通常用于丢弃不需要的输出或用于测试。
如果您在 Windows 的 Linux Subsystem for Windows 下运行此程序,我不确定它如何生成这些文件,但 LXSS 可能会向在子系统下运行的程序提供它们的虚拟版本以实现兼容性。(如果您在“非即插即用设备devmgmt.msc
”下查看,Windows 有一个“空”设备驱动程序 - LXSS 可能在后台执行操作以/dev/null
真正使用该 Windows 驱动程序。)Cygwin 是另一个提供 Linux 子系统的软件,它也会这样做。
""
是一个空字符串,没有任何意义,但除非指定了开关,echo
否则会添加换行符,因此输出换行符到(在示例中重定向到)。-n
echo ""
stdout
/dev/null