Text-Processing
在 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 驅動器時如何才能不掛起?我不是在問這是否是個好主意(不是)。我很清楚我可以格式化驅動器並使用文本文件,但我很好奇為什麼這沒有按預期工作。我正在使用帶有 2 GB 快閃記憶體驅動器 (
/dev/sdb
) 的 Debian 11。
printf 'hi\n' | sudo tee /dev/sdb
將標準輸入(從管道)複製到標準輸出並複製到
/dev/sdb
printf 'hi\n' | sudo cat /dev/sdb
複製
/dev/sdb
到標準輸出。管道的輸出不被讀取cat
。所以
cat
不會掛起,它將磁碟的全部內容複製到終端,這需要一段時間。管道不會改變 cat 的任何內容,因為第一個參數告訴它/dev/sdb
是輸入。