在 USB 驱动器上存储文本时,如何让 cat 不挂起?

在 USB 驱动器上存储文本时,如何让 cat 不挂起?

警告:我在没有任何内容的驱动器上使用了这些命令 ( /dev/sdb)。请勿在包含任何重要内容的驱动器上尝试执行此操作。

我正在尝试一些,发现以下方法有效:

$ printf 'hi\n' | sudo tee /dev/sdb
hi
$ sudo head -n 1 /dev/sdb
hi
$

整洁的。这就是我感到困惑的地方。我再次尝试使用cat(第一个命令是相同的,我用 替换了第二个命令sudo cat /dev/sdb。它打印了hi,后跟换行符,然后挂起。执行Ctrl+C并没有阻止它。真糟糕。

我推断可能需要在末尾cat添加一个 null ( ) 字符。\0所以我再次尝试(printf 'hi\n\0' | sudo tee /dev/sdb),并head像以前一样工作,但cat仍然挂起。cat直接写入 USB 驱动器时如何才能不挂起?我不是在问这是否是一个好主意(它不是)。我很清楚我可以格式化驱动器并使用文本文件,但我很好奇为什么这不能按预期工作。

我使用的是 Debian 11,带有 2 GB 闪存驱动器 ( /dev/sdb)。

答案1

printf 'hi\n' | sudo tee /dev/sdb

将标准输入(从管道)复制到标准输出并复制到/dev/sdb

printf 'hi\n' | sudo cat /dev/sdb

复制/dev/sdb到标准输出。不会读取管道的输出cat

所以cat不会挂起,它将磁盘的全部内容复制到终端,这需要一段时间。管道不会改变 cat 的任何内容,因为第一个参数告诉它/dev/sdb是输入。

相关内容