Khi bạn áp dụng một bản vá cho một tệp, bạn đang ghi đè lên một phần của nó với dữ liệu được cập nhật (một bản vá cũng có thể xử lý dữ liệu bổ sung vào cuối). Bạn có thể vá bất kỳ loại tệp nào, cho dù đó là văn bản, nhị phân hay bất cứ thứ gì, bởi vì tất cả các tệp là các luồng byte khi nó đi xuống.
Các phần của nó được cho là ghi đè được chỉ định trong tệp vá.
Nếu sửa lỗi phần mềm liên quan đến việc cập nhật tệp, một bản vá có thể sửa đổi tệp giống như phiên bản đầy đủ của tệp được cập nhật. Vì các bản vá không phải là tệp đầy đủ, nhưng chỉ là sự khác biệt, các bản vá sẽ nhỏ hơn, tiêu thụ ít dung lượng đĩa hơn và tiêu thụ ít băng thông hơn khi tải xuống.
Chỉnh sửa trực tiếp tệp nhị phân trong trình soạn thảo hex (chẳng hạn như hexer
) đôi khi được gọi là vá "thủ công".
Tôi không quen thuộc xxd
, nhưng có vẻ như từ tìm kiếm sơ bộ xxd
có thể tạo ra một danh sách kết xuất hoặc hex của dữ liệu nhị phân và cũng có thể chuyển đổi một danh sách đó thành nhị phân thẳng. Vì vậy, bạn có thể kết xuất hex với xxd
, chỉnh sửa nó bằng vim
hoặc một trình soạn thảo văn bản khác và viết lại các thay đổi bằng một xxd -r
. Bạn cũng có thể đường ống nó một chuỗi sử dụng echo
trong xxd
"định dạng hexdump." (Các tùy chọn khác cho phép bạn thực hiện các thay đổi đối với tệp nhị phân. Có vẻ như xxd
có rất nhiều tùy chọn cho phép bạn chỉ định nơi bắt đầu và dừng ghi đè hoặc vá lỗi.)
Lệnh đầu tiên trong ví dụ về cơ bản là yêu xxd
cầu thay đổi các byte trong tệp xxd.1
bắt đầu từ offset 0x0000037
thành 0x35 0x74 0x68
(ASCII cho "5"). xxd
có thể đọc định dạng "hexdump" của riêng nó và đó là những gì lệnh "echo" đang cung cấp xxd
.
Lệnh thứ hai trong ví dụ là kết xuất số đếm ( -c
) 13 byte trong tệp bắt đầu từ cùng một giá trị bù.
Các patch
lệnh làm một điều tương tự, nhưng nó muốn tập tin trong một định dạng "khác". Bạn có thể tạo một tệp diff bằng cách lưu đầu ra của diff
lệnh, nó sẽ so sánh hai tệp và thể hiện sự khác biệt trong định dạng diff đã nói. Từ việc đọc man
trang, có vẻ như bản vá có ý nghĩa nhiều hơn đối với việc thay đổi tệp văn bản hơn là nhị phân thẳng.