2017-04-04 123 views
1

讓我們說在bash腳本中存在一個值爲「001」的變量如何將這個二進制數據寫入文件,因爲位(如「001」不是「1」)echo會寫入它作爲字符串,但我想寫入比特。如何在bash中寫入二進制數據

+0

你不能單獨的位寫入文件。您可以編寫的最小數量是8位,即一個字節。 –

+0

我該如何寫8位字符串變量說「00000011」到文件 –

+1

@JeevansaiJinne'printf'%s'$'\ x03'>文件' – 123

回答

4

你可以寫在十六進制或八進制任意字節:

printf '\x03' > file # Hex 
printf '\003' > file # Octal 

如果你有二進制文件,這是需要一點小技巧,但你可以把它變成八進制:

printf '%o\n' "$((2#00000011))" 

其中當然可以嵌套在上面:

binary=00000011 
printf "\\$(printf '%o' "$((2#$binary))")" > file 

請注意,這隻適用於最多8位。如果你想寫更長的價值觀,你要它分割成8

+0

寫入十進制和八進制之間的區別是寫入字節 –

+1

結果是一樣的,區別只在於你如何指定要寫入的字節。如果你想寫所有的,它是'\ xFF' vs'\ 377'。您可以使用任何你喜歡的工作。 –

2

組只需使用%b中的printf:

printf "%b" "\012" 
printf "%b" "\x0a" 

%B - 打印相關的參數在解釋反斜線 轉義那裏

所以,上面都打印二進制值爲小數10

printf "%b" "\x0a" | od -bc 

輸出

0000000 012                
      \n  

你甚至可以混合使用

printf "%b" "\12\xa\n" | od -bc 

0000000 012 012 012              
      \n \n \n