Text-Processing

在 USB 驅動器上儲存文本時,如何讓 cat 不掛起?

  • November 28, 2021

警告:我在一個沒有任何內容的驅動器上使用了這些命令(/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是輸入。

引用自:https://unix.stackexchange.com/questions/679357