linux下的二进制文件的编辑和查看 -
linux下的二進(jìn)制文件的編輯和查看
一、在Linux下查看二進(jìn)制文件的軟件:
xxd (默認(rèn)2進(jìn)制)
hexdump? (默認(rèn)16進(jìn)制,可轉(zhuǎn)其他進(jìn)制)?
od (默認(rèn)8進(jìn)制,可轉(zhuǎn)其他進(jìn)制)
二、編輯:
1、biew
2、hexedit
3、vim
Vim 來編輯二進(jìn)制文件。Vim 本非為此而設(shè)計(jì)的,因而有若干局限。但你能讀
取一個(gè)文件,改動(dòng)一個(gè)字符,然后把它存盤。結(jié)果是你的文件就只有那一個(gè)字符給改了,
其它的就跟原來那個(gè)一模一樣。
? ?要保證 Vim 別把它那些聰明的竅門用錯(cuò)地方,啟動(dòng) Vim 時(shí)加上 "-b" 參數(shù):
? ?? ???vim -b datafile
這個(gè)參數(shù)設(shè)定了 'binary' 選項(xiàng)。其作用是排除所有的意外副作用。例如,'textwidth'
設(shè)為零,免得文本行給擅自排版了。并且,文件一律以 Unix 文件格式讀取。
二進(jìn)制模式可以用來修改某程序的消息報(bào)文。小心別插入或刪除任何字符,那會(huì)讓程序運(yùn)
行出問題。用 "R" 命令進(jìn)入替換模式。
文件里的很多字符都是不可顯示的。用 Hex 格式來顯示它們的值:
? ?? ???:set display=uhex
另外,也可以用命令 "ga"??來顯示光標(biāo)下的字符值。當(dāng)光標(biāo)位于一個(gè)??字符上時(shí),
該命令的輸出看起來就像這樣:
? ?? ?? ? 27, Hex 1b,??Octal 033
文件中也許沒那么多換行符。你可以關(guān)閉 'wrap' 選項(xiàng)來獲得總覽的效果:
? ?? ???:set nowrap
字 節(jié) 位 置
要發(fā)現(xiàn)你在文件中的當(dāng)前字節(jié)位置,請(qǐng)用這個(gè)命令:
? ?? ???g CTRL-G
其輸出十分冗長(zhǎng):
? ? Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
最后兩個(gè)數(shù)字就是文件中的當(dāng)前字節(jié)位置和文件字節(jié)總數(shù)。這已經(jīng)考慮了 'fileformat'
選項(xiàng)導(dǎo)致?lián)Q行符字節(jié)不同的影響。
? ? 要移到文件中某個(gè)指定的字節(jié),請(qǐng)用 "go" 命令。例如,要移到字節(jié) 2345:
? ?? ???2345go
使 用 XXD
一個(gè)真正的二進(jìn)制編輯器用兩種方式來顯示文本: 二進(jìn)制和十六進(jìn)制格式。你可以在 Vim
里通過轉(zhuǎn)換程序 "xxd" 來達(dá)到這效果。該程序是隨 Vim 一起發(fā)布的。
? ?首先以二進(jìn)制方式編輯這個(gè)文件:
? ?? ???vim -b datafile
現(xiàn)在用 xxd 把這個(gè)文件轉(zhuǎn)換成十六進(jìn)制:
? ?? ???:%!xxd
文本看起來像這樣:
? ?? ???0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49??....9..;..tt.+NI
? ?? ???0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30??K,.`.....b..4^.0
? ?? ???0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9??7;'1.".....i.59.
現(xiàn)在你可以隨心所欲地閱讀和編輯這些文本了。 Vim 把這些信息當(dāng)作普通文本來對(duì)待。
修改了十六進(jìn)制部分并不導(dǎo)致可顯示字符部分的改變,反之亦然。
? ?最后,用下面的命令把它轉(zhuǎn)換回來:
? ?? ???:%!xxd -r
只有十六進(jìn)制部分的修改才會(huì)被采用。右邊可顯示文本部分的修改忽略不計(jì)。
轉(zhuǎn)載于:https://www.cnblogs.com/fengkang1008/p/4737914.html
總結(jié)
以上是生活随笔為你收集整理的linux下的二进制文件的编辑和查看 -的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用百度地图API制作线路轨迹播放
- 下一篇: varchar 保存英文中文区别。