![在 Linux 中更改文件的第一个字节?](https://linux22.com/image/1233842/%E5%9C%A8%20Linux%20%E4%B8%AD%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AD%97%E8%8A%82%EF%BC%9F.png)
如何在 Linux 中更改多个文件的第一个字节?愿意使用perl
/ awk
/ sed
/whatever。这必须在二进制文件上正确工作(即不更改任何其他字节)。
答案1
你可以这样做,
echo -ne \\xFF | dd conv=notrunc bs=1 count=1 of=$YOURFILE
-n => 不输出尾随的换行符
-e => 启用反斜杠转义的解释
用你的十六进制值替换FF
。
不过,先尝试一下 :)
答案2
编译它gcc -o w1stb w1stb.c
并像这样使用它./w1stb <file> <byte>
:
#include <stdio.h>
int main(int argc, const char *argv[]) {
int i;
FILE* f;
unsigned char b;
if (argc < 3) {
printf("usage: w <filename> <byte>\n");
return 1;
}
i = atoi(argv[2]);
if (i < 0) {
printf("error, negative byte\n");
return 2;
}
if (i > 255) {
printf("error, to big byte\n");
return 3;
}
f = fopen(argv[1], "w");
if (!f) {
printf("error, can't open file\n");
return 4;
}
b = (unsigned char)i;
fwrite(&b, 1, 1, f);
fclose(f);
return 0;
}