W powłoce, jak mogę odczytać bajty posiadanego pliku binarnego i wydrukować dane wyjściowe jako liczby szesnastkowe?
shell
text-processing
binary
Tom Brito
źródło
źródło
Odpowiedzi:
Posługiwać się
hexdump(1)
...
źródło
od
. Istnieje również edytor szesnastkowy w stylu vi o nazwiehexer
.hexdump -e '"\\\x" /1 "%02x"' filename
10
, które wynosi 16 w systemie szesnastkowym. Reprezentacja dwubajtowa zależy od endianizmu systemu. Wpiszman hexdump
pełne informacje.Inną opcją jest od :
lub
od
ma wiele opcji dostrajania.źródło
od -t x1
Myślę, że większość ludzi uzna to za preferowany format.od -t test
którą dostałemod: invalid character 't' in type string 'test'
--t
od --version od (GNU coreutils) 7.4
Podczas gdy jesteśmy włączone
od
i jeszczehexdump
dwa podobne narzędzia:Przykładowe dane wyjściowe:
Lub, jeśli chcesz czytać bajty pojedynczo i drukować je we własnym formacie, spróbuj czegoś takiego:
Przykładowe dane wyjściowe:
źródło
while
pętla nie działa dla znaków odwrotnego ukośnika i znaku nowej linii (oraz w bash (w przeciwieństwie do ksh93) dla znaków pustych), ani nie będzie działać poprawnie w ustawieniach narodowych utf8 dla bajtów z zestawem 8-bitowym. Nie potrzebujesz też „od”, możesz użyćprintf '%02x\n' "'$byte"
offset
jest tutaj jedynie „zmienną fikcyjną”; nie ma praktycznego zastosowania. Jest po prostu używany jako symbol zastępczy, aby się do niego dostaćhex
. To czasami wpływa negatywnie na czytelnośćread
: zmienne wychodzą z niebieskiego.$offset
jest ograniczony przez podpowłokę, więc nie widzę w tym problemu.Moje dwa centy:
Podoba mi się to, ponieważ modyfikujesz aktualnie buforowany plik, a jednocześnie widzisz zrzut heksowy na żywo. Nie zapominaj, że WSZYSTKO w Uniksie jest plikiem i możemy z łatwością łączyć polecenia, takie jak
tail
ihexdump
rozwiązywać różnorodne problemy.źródło
for((i=0;i<100;i++));do echo $i >>tst2.bin;sleep 1;done&
nim działa dobrze do monitorowania thx :)Dowódca północy to kolejna opcja. Nie wiem, czy jest dostępny dla wszystkich smaków unixowych. Być może trzeba go najpierw pobrać.
F3 F4aby wyświetlić w wewnętrznym edytorze / w trybie szesnastkowym.
źródło
Używam od z c i x1, gdy muszę wyszukać tekst w pliku binarnym:
źródło