如何使用bash在Linux中创建二进制文件的未修改十六进制转储?在od
与hexdump
转储命令都插入空格,这是不理想的.
有没有办法简单地写一个长字符串,其中包含输出中的所有十六进制字符,减去空格或换行符?
如果反引号被美元括号语法替换,则以下代码无法生成二进制数:
#!/bin/bash
rm test.bin 2>/dev/null
for character in {0..255}
do
char=`printf '\\\\x'"%02x" $character`
printf "$char" >> test.bin
done
hexdump -C test.bin
Run Code Online (Sandbox Code Playgroud)
结果:
00000000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |................|
00000010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f |................|
00000020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./|
00000030 30 31 …
Run Code Online (Sandbox Code Playgroud) 首先 - 这并不意味着'这是一个更好,无知的非离子战争线'...而是,我通常需要帮助做出一个架构决定/论证提出给我的老板.
跳过细节 - 我只是很想知道并找到任何已经完成Shell与[插入通用编程语言(解释))性能比较的人的结果,例如C#或Java ......
令人惊讶的是,我花了一些时间在谷歌搜索这里找不到任何这些数据.有没有人在不同的用例中做过这些比较; 点击一个数据库就像在一个XYX#循环中执行不同类型的SQL(Oracle pref,但MSSQL会这样做)查询,例如任何CRUD操作 - 并且也没有命中数据库而只是常规的50k循环类型比较进行不同类型的计算和那种性质的东西?
特别是 - 就目前而言,我需要比较从shell脚本命中Oracle DB,比如说C#(同样,任何被解释的GPPL都可以,甚至像Python这样的更高级别的GPPL).但我还需要了解标准编程计算/指令/等...
在你问'为什么不自己写一个快速测试之前?答案是:我一直是Windows开发人员,我的整个生活/职业生涯,对Shell脚本的知识非常有限 - 更不用说*nix作为一个整体....所以从这里有经验丰富的人提问的问题就是因为我们处于接近普遍的最后期限紧缩状态,因此它是有益的,更不用说节省时间了;).
有人将整个rootdir移动到远程系统上的子目录中,因此所有系统工具(如cp,mv等)都不再起作用.我们有一个活跃的会话但是找不到使用bash内置函数复制/移动文件的方法.
有人知道实现这个目标的方法吗?
我甚至想过用currentdir复制cp或mv二进制文件
while read -r; do echo $LINE; done
Run Code Online (Sandbox Code Playgroud)
然后将其重定向到文件,但它不起作用.因为二进制文件中的所有特殊不可打印字符无法使用echo复制/显示而猜测.
谢谢.