2017-04-04 124 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