Home
Quick Tutorial
Download
Installation
Command Overview
bmore
Deutsche Beschreibung
|
|
Deutsche Beschreibung
|
|
|
Der BVI (Binary-VI) ist ein Editor für Binärfiles. Seine Kommandos sind
weitgehend an den Standard UNIX Editor VI(1) angelehnt. Der Bildschirm
ist in einen hexadezimalen und einen ASCII-Bereich geteilt. Einige zusätzliche
Kommandos wurden zugefügt, einige Kommandos adaptiert und einige Kommandos,
die bei Binärfiles keinen Sinn machen, wurden weggelassen. Für eine
Gesamtübersicht siehe Manual Page BVI(1).
Zusätzliche Kommandos
Eine wichtige Funktion für binäre Files ist das Suchen nach Hexcodes.
Dafür gibt es analog zum '/' und '?' - Kommando zusätzlich das '\' und
das '#' - Kommando.
Beispiel:
\1e f4 56 - Sucht die angegebene Bytefolge in vorwärts-Richtung
#34 5a a4 - Sucht Bytefolge rückwärts.
Die normalen Textsuchkommandos sind auch vorhanden, wobei zusätzlich ein
Return, Linefeed oder NULL im Suchstring aufscheinen darf (\n \r oder \0).
Die Kommandos w, W, b, B (nächstes oder vorhergehendes Wort) wurden insoweit
abgeändert, daß sie eher dem STRINGS(1) - Kommando entsprechen, also in
einem Binärfile Textstrings suchen. Dabei sucht W und B nach Strings, die
mit einem \0 oder \n enden, w und b sucht nach Strings, die mit einem
beliebigen, nicht druckbaren Zeichen enden. Die Stringlänge beträgt 4 Zeichen,
wobei mit ":set wordlength=x" die Stringlänge auf x Zeichen eingestellt werden
kann.
Der Bildschirm ist in einen HEX und einen ASCII-Bereich aufgeteilt, wobei
jederzeit mit der TAB - Taste von einem Bereich in den anderen gewechselt
werden kann (auch im Eingabemodus). Es kann also bei der Eingabe zwischen
normalen ASCII-Zeichen und Hex-Eingabe hin- und hergesprungen werden.
Am unteren Bildrand befindet sich eine Statusanzeige, welche die Adresse des
Bytes, auf welchem der Cursor momentan steht, anzeigt. Außerdem wird das Byte
in oktaler, hexadezimaler, dezimaler und ASCII-Repräsentation anzeigt. Die
ASCII-Anzeige kann von DOS-Style (27 entspricht ^Z) auf UNIX-Style entsprechend
Manual Page ASCII(7) umgeschaltet werden (27 entspricht SUB).
Kommando ist ":set unixstyle". Die Statusanzeige kann mit ":set noshowmode"
ausgeschaltet werden.
Regular Expressions
Für die Suchkommandos sowohl für Text als auch Hex sind Regular Expressions
zulässig, wobei es die Zeichen ^ und $ für Zeilenanfang und Zeilenende nicht
gibt. Die Kombination .* ist unzulässig, da sie sich auf jeden Fall auf das
Ende des Files beziehen würde.
Zeilen
Da es in binären Files keine Zeilen gibt (die Darstellung der einzelnen
Zeilen am Bildschirm hat keinen Bezug zum File) gibt es keinerlei
zeilenorientierte Kommandos (dd, o, O, yy). Ein Kommando
wie :s/XXX/UUU/g ändert somit das gesamte File. Zu beachten ist auch, daß
:s/XX/UUUU/ nicht die beiden X durch vier U ersetzt, sondern die beiden den
X folgenden Zeichen auch durch U überschrieben werden.
Editierkommandos
Da binäre Files häufig ausführbare Programme oder Datenbankfiles sind,
bei denen Bytes nicht einfach an eine andere Adresse verschoben werden
dürfen, sind Einfüge- und Löschkommandos (z.B. a, i, x)
deaktiviert. Mit dem Kommando :set memmove können sie
aktiviert werden.
Die Kommandos :a (append), :c (change) und :i (insert)
können benutzt werden, um ein oder mehrere Bytes in ASCII, binärer,
dezimaler, hexadezimaler oder oktaler Schreibweise einzugeben
(a, b, d, h oder o). Es
können mehrere (Bildschirm) Zeilen eingegeben werden. Das Kommando
wird beendet, sobald eine Zeile, die nur aus einem Punkt besteht,
eingegeben wird.
Beispiel:
:i b
1 1001 010101 1111
11111 1010 1 0 1
.
Zu beachten ist, daß kein Einzelwert den maximalen Byte-Wert (255)
überschreiten darf, da sonst die Eingabe abgebrochen wird. Das
Drücken der RETURN - Taste führt zu keinem "RETURN" - Zeichen in
der Datei, im ASCII - Modus können allerdings die Sonderzeichen
\n, \r, \t und \0 benutzt werden.
Yank und Put
Auch hier gilt eine etwas geänderte Funktion. Das y (yank) -
Kommando ist allerdings ab Version 1.2.0 dem Vi angenähert:
5ySPACE | kopiert 5 Zeichen in den Yank-Buffer |
o | überschreibt an Cursor - Position die folgenden Zeichen
mit dem Inhalt des Yank- oder Delete - Puffers |
p | fügt an der Cursor - Position den Inhalt des Yank-
oder Delete - Puffers ein. |
P | fügt den Inhalt des Yank- oder Delete - Puffers am Dateiendes
an. |
Das Kommando ":r filename" fügt das angegebene File nicht an der Cursor-
Position sondern am Dateiende an.
Adressen
Das Kommando nG führt nicht zur n. Zeile, sondern zum n. Byte.
Die Eingabe der Nummer wird dezimal interpretiert. Um eine Adresse
hexdezimal angeben zu können, kann g eingegeben werden. Es erscheint ein
Prompt in der Statuszeile, bei dem eine hexadezimale Eingabe erfolgen kann.
Das erste Byte hat Adresse 0.
Die Anzeige der Adressen kann mit einem Offset versehen werden
(:set offset=256), beispielsweise um für .COM Files in DOS einen Beginn
bei Adresse 100Hex anzuzeigen. Wird ein offset=1 angegeben, so ist
hat das erste Byte Adresse 1. Das G - Kommando berücksichtigt den Offset.
Im Gegensatz dazu zeigt das :f - Kommando immer die Ordnungszahl des
Bytes an, beginnend mit 1 ohne Berücksichtigung des Offsets.
Bitweise Kommandos
Um Manipulationen auf Bit-Ebene durchführen zu können, stehen
folgende Kommandos zur Verfügung:
:rl n | Rotiert Bits links |
n ist eine Zahl zwischen 1 und 7 |
:rr n | Rotiert Bits rechts |
:sl n | Schiebt Bits links |
:sr n | Schiebt Bits rechts |
:and i | Und Verknüpfung |
i ist eine Zahl zwischen 0 und 255 |
:or i | Oder Verknüpfung |
:xor i | Exklusiv-oder Verknüpfung |
:not | Negiert Bytewert |
:neg | Zweier-Komplement |
Wird kein Bereich angegeben, so bezieht sich die Operation auf die gesamte
Datei. Es können zwei Adressen in den üblichen Schreibweisen
angegeben werden. Normalerweise wird dezimale Eingabe erwartet, bei
führender 0 werden die Adressen Hexadezimal interpretiert.
Der Wert i für die logische Verknüpfung kann
dezimal, hexadezimal, oder mit führendem B in binärer
Schreibweise angegeben werden. Auch bei Eingabe von genau acht 0 und 1
Werten wird der Byte - Wert binär interpretiert.
Beispiel:
:100,500and 01A RETURN
:03FA,01000or 00001000 RETURN
:.rr 3 RETURN
:'a,$sl 1 RETURN
Back to the top
Last update: Thu Jun 01 12:00:00 CEST 2000 by Gerhard Bürgmann
|