警告:我在没有任何内容的驱动器上使用了这些命令 (
/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
是输入。