Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > bash暗黑破坏神(2)
【标  题】:bash暗黑破坏神(2)
【关键字】:bash
【来  源】:http://blog.chinaunix.net/article.php?articleId=45844&blogId=8681

bash暗黑破坏神(2)

Your Ad Here bash中处理二进制数据.

1. 不要用shell变量来保存二进制数据, 也不要用函数参数来作传递, 至今我还没看到严肃的声明说可以这样

2. xxd 是个名不见经传的工具, 但比它更闻名一些的od却不能把字符描述的进六进制反转成二进制数据.
xxd 来自vim安装包, 我在windows下安装完gvim也有一个伴随的xxd, 当你想生成一个数据量不大, 但内容却希望
随心所欲的时候, 它显得尤其有用
echo 410000000000000000000000 | xxd -r -ps > tmp.dat
你的tmp.dat第一个字符将会是A, 但其后的就都是真正的ASCII为0的字节.

3. tr 是为数不多的不跟文件名作参数的命令, 它只遵循一个原则, 从stdin读, 向stdout写.

4. 如何在用grep 取到目标串时获知它在文件中的准确偏移, 麻烦:
grep -ab regexp filename.txt
输出的格式是
123:pre - regexp - post
这个123只是这一行在文件中的偏移, 不是被找到的那个regexp, 你还得把这一行存起来, 想办法把regexp前面的部分长度求出来.
加上去. 总之是麻烦.

5. 如何改变某个文件中的其中一个字节
找到偏移处, 用 echo 03 | xxd -r -ps > tmp.dat 把要写的字节存入一个文件.
dd if=tmp.dat of=file.dat bs=1c seek=1000 conv=notrunc
最后一个参数是要命的, 否则你的输出文件 file.dat将会被截为0先.

6. 在DOS下编程注意什么
binmode(stdin), 不管是在perl中, C语言中都要注意这一点. 它的文件是区分文本方式和二进制方式的.
但运行了bash.exe作为命令解释器之后约定就跟UNIX是一样的了.
在DOS下把多个文件合并成一个的办法是:
copy /b file1+file2+file3 all_in_one
在UNIX下是
cat file1 file 2 file3 > all_in_one

7. 小心很多命令, 它们不是被设计成二进制数据的.

8. printf 可以把一个整数显示出来, 但我如何把它作为一个native的int存储在INTEL体系结构的机器中?
printf "%08x" 1234 | rev | sed 's#\(.\)\(.\)##g' | xxd -r -ps > tmp.dat

bash暗黑破坏神(1):【上一篇】
shell基础三和四:后台(crontab,at,&,nohup)及(*,?,[]等):【下一篇】
【相关文章】
  • bash暗黑破坏神(1)
  • 安全撤退的一句话bash 脚本
  • bash Shell中函數的應用小結
  • bash之初
  • bash Bash 实例
  • BASH 中的字符串处理
  • 分析tuxedo的service时间日志的bash脚本
  • Bash 实例
  • bash命令的优先级
  • aix上安装bash
  • 【随机文章】
  • 一个含括弧的任意精度四则运算的详细解释
  • .NET之ASP Web Application快速入门(2)
  • plextor px-40tsi,plextor px-32tsi
  • 如何设置NetBeans5.5使用的语言
  • oracle10g网络配置
  • 解构3G网络管理体系
  • Linux环境下的上网工具(一)
  • 如何获得免费卡巴斯基激活码?
  • 许魏--温暖
  • 计算指定年月的最后一天的自定义MYSQL函数
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.