파일의 시작 부분과 끝 부분에 쓰레기(이진 머리글 및 바닥글)가 있는 파일이 있습니다. 이 바이트를 공격하는 방법을 알고 싶습니다. 예를 들어 처음부터 25바이트가 있다고 가정해보자. 그리고 끝에서 2바이트입니다.
truncate와 dd를 사용할 수 있다는 것을 알고 있지만 truncate는 스트림에서 작동하지 않으며 하드 파일에서 두 개의 명령을 실행하는 것이 약간 다루기 힘든 것 같습니다. truncate
파일의 크기를 알면서 파일을 다른 파일로 전송할 수 있다면 어떻게 될까요 dd
? 아니면 더 좋은 방법이 있을까요?
답변1
답변2
DD이 두 가지 작업은 단일 명령으로 수행됩니다. 블록 크기를 1바이트로 설정하고 처음 25바이트를 건너뛰고 건너뛰기 및 끝 바이트를 뺀 파일 크기를 계산합니다.
100 byte file
file.img
dd if=./file.img of=./trimed_file.img bs=1 skip=25 count=73
숫자는 0부터 세기 시작하므로 주의 깊게 확인하세요.
답변3
ksh93 사용:
{ head -c "$n"; } < file <#((n = EOF - 25 - 2 , 25))
아니면 그 자리에서 하세요:
{ head -c "$n"; } < file <#((n = EOF - 25 - 2 , 25)) 1<>; file
당신 /opt/ast/bin
이 당신보다 앞서 있다면 내장된 기능을 $PATH
얻게 될 것입니다 .head
<#((...))
운영자 입니다lseek()
. 는 파일의 길이인...
산술식으로 해석됩니다 . 따라서 위에서는 파일에서EOF
표시할 부분의 길이를 25바이트로 지정했습니다 .$n
<>;
읽기+쓰기 모드에서 열리고 명령 성공 시 잘리는 리디렉션 연산자입니다.