我正在編寫腳本來更改NTFS分區(AFAIK,沒有)的UUID。這意味着寫入/dev/sdaX
(X是我的分區的#號)的0x48至0x4F(十進制72-79)中的8個字節。Bash腳本:如何修補文件? (在文件的給定位置寫入給定的字符串)
如果我想將其更改爲隨機UUID,我可以用這個:
dd if=/dev/urandom of=/dev/sdaX bs=8 count=1 seek=9 conv=notrunc
或者我可以改變/dev/urandom
到/dev/sdaY
克隆從另一個分區的UUID。
但是......如果我想製作個性化的UUID,該怎麼辦?我已經把它存儲(和正則表達式覈對)在十六進制字符串格式(16個字符)一個$UUID
變量,就像這樣:
UUID="2AE2C85D31835048"
我在想這個辦法:
echo "$UUID" | xxd -r -p | dd of=/dev/sdaX ...
這是隻是一個劃痕...我不知道確切的選項,使其工作。我的問題是:
echo $var | xxd -r | dd
真的是最好的方法嗎?- 什麼是確切的命令和選項,使其工作?
至於答案,林也在尋找:
- 使用的所有選項的說明,和他們做什麼。
- 如果可能,請在替換命令之前在文件和/或屏幕中測試它,然後再更改分區。
我已經有一個名爲ntfs.bin,我可以用於測試和使用
xxd ntfs.bin
所以這爲我提供了一種方法,使用xxd
檢查結果的任何解決方案檢查結果的100個字節的轉儲文件屏幕,所以我可以比較原始的ntfs.bin文件將不勝感激。
謝謝!
這裏只是一個快速的問題,你測試這個'dd'對您的設備成功?你的'echo ... dd'流水線應該可以工作,因爲它會讀取標準輸入'if ='不被命名。 – Xailor 2011-03-04 16:13:21
好吧,我測試了dd if =/dev/urandom對我的ntfs.bin文件。它工作得很好(我編輯我的帖子來添加conv = notrunc選項)。但是我的恐懼是:/ dev/urandom有無限的字節,我的回聲只有16個。當使用seek時,它是否同時尋找輸出和輸入?如何指定「讀取整個輸入,但僅查找輸出」?我應該使用「尋找」還是「跳過」?爲什麼? – MestreLion 2011-03-04 17:32:31