파일을 자르지 않는 'dd'의 대안

파일을 자르지 않는 'dd'의 대안

다음을 사용하지 않고 파일을 자르지 않는 'dd'에 대한 대안을 아는 사람이 있습니까 conv=notrunc? conv=notrunc제한된 공간으로 인해 비지박스/토이박스를 통한 추가는 지원되지 않습니다.

예를 들어, 나는 다음과 같은 것을 원합니다.

dd bs=4 count=3 skip=2 seek=3 if=file.in of=file.out conv=notrunc

그러나 이것은 dd지원되지 않는 곳에서는 작동합니다 conv=notrunc.

답변1

표준 <> sh리디렉션 연산자를 사용하여 읽기+쓰기 모드로 파일 열기잘림 없음.

cat < file.in 1<> file.out

file.in시작 부분을 복사하세요 file.out.

입력 또는 출력 파일을 찾아야 하고 dd다음 지시문을 계속 지원한다고 가정하는 경우:

dd bs=4 count=3 skip=2 seek=3 < file.in 1<> file.out

dd그것이 전혀 없다면 head -c버전이 종료 시 파일의 올바른 위치에 포인터를 남긴다고 가정하여 시도해 볼 수 있습니다(IIRC 이전 버전의 busybox는 이 작업을 수행하지 않았습니다).

예를 들어, 위와 동등한 내용은 다음과 같습니다.

{
  head -c 8 > /dev/null        # seek input fd to offset 8
  head -c 12 <&1 > /dev/null   # seek output fd to offset 12
  head -c 12                   # copy 12 bytes
} < file.in 1<> file.out

관련 정보