다른 파일(크기 1.1KB)을 작성해야 하는 9.0KB(0만 포함) 크기의 빈 파일이 있지만 첫 번째 파일의 크기나 나머지 내용이 손실되어서는 안 됩니다. 따라서 전체 파일이 00000000000000...
지금이라면 그 안에 두 번째 파일을 작성하고 0을 변경하지 않고 그대로 두어야 합니다. 나는 dd
성공하지 못한 채 파일 크기 조정을 사용해 보았습니다 .
dd if=out/one.img of=out/go.img
내가 어떻게 할 수 있는지 아는 사람 있나요?
답변1
자르지 않고 객체 파일의 시작 부분을 덮어쓰려면 notrunc
변환 지시문을 제공하십시오.
$ dd if=out/one.img of=out/go.img conv=notrunc
소스 파일의 데이터를 원하는 경우추가의대상에 대해 다음 지시문을 사용하여 이를 수행할 수 있습니다 seek
.
$ dd if=out/one.img of=out/go.img bs=1k seek=9
이는 dd
블록 크기가 1kiB이므로 seek
쓰기 전에 9kiB가 진행되었음을 나타냅니다.
두 가지 양식을 결합할 수도 있습니다. 예를 들어 재정의하려면두번째1kiB 소스가 있는 파일의 1kiB 청크:
$ dd if=out/one.img of=out/go.img bs=1k seek=9 conv=notrunc
즉, 출력 파일의 처음 1kiB를 건너뛰고 거기에 있는 데이터를 입력 파일의 데이터로 덮어쓴 다음 먼저 자르지 않고 출력을 닫습니다.
답변2
<>
자르기를 사용하여 쓰기 전용 모드를 여는 대신 쉘 리디렉션 연산자를 사용하여 읽기-쓰기 모드로 대상 파일을 엽니다 >
.
file2
위에 작성 하고 싶다고 가정해 보겠습니다 file1
.
cat file2 1<> file1
file2
그러면 오프셋 file1
0(처음 부분)이 기록됩니다 .
file2
끝에 추가 하려면 연산자를 file1
사용하십시오 .>>
cat file2 >> file1
file2
어떤 오프셋에도 쓸 수 있습니다 file1
.
{ head -c1000 # for 1000 bytes within or
# head -n 10 # for 10 lines within
cat file2 >&0
} <> file1 > /dev/null
바이트 오프셋의 경우 dd
Warren의 솔루션을 사용하는 것이 더 편리할 수 있습니다.