마음에 베어 dd
원시받는 인터페이스 read()
, write()
및 lseek()
시스템 호출. 일반 파일, 블록 장치 및 일부 문자 장치 (예 :)에서 데이터 청크를 추출하는 데만 안정적으로 사용할 수 있습니다 /dev/urandom
. 즉 , 파일 끝에 도달하지 않는 한 read(buf, size)
반환 size
되는 파일입니다.
파이프, 소켓 및 대부분의 문자 장치 (예 : ttys) read()
의 경우 크기가 1이거나 GNU dd
확장을 사용 하지 않으면 그러한 보장이 없습니다 iflag=fullblock
.
그래서 :
{
gdd < file1 bs=1M iflag=fullblock count=99 skip=1
gdd < file2 bs=1M iflag=fullblock count=10
} > final_output
또는:
M=1048576
{
dd < file1 bs=1 count="$((99*M))" skip="$M"
dd < file2 bs=1 count="$((10*M))"
} > final_output
또는 다음과 같은 탐색 연산자를 기본적으로 지원하는 쉘을 사용합니다 ksh93
.
M=1048576
{
command /opt/ast/bin/head -c "$((99*M))" < file1 <#((M))
command /opt/ast/bin/head -c "$((10*M))" < file2
}
또는 zsh
( 여기에서 귀하 head
의 -c
옵션을 지원 한다고 가정 ) :
zmodload zsh/system &&
{
sysseek 1048576 && head -c 99M &&
head -c 10M < file2
} < file1 > final_output
oflag=append conv=notrunc
않으므로 할당이 지연된 파일 시스템 (예 : XFS)은 파일이 아직 더 많이 남아있을 때 파일이 작성되었다고 결정할 가능성이 가장 낮습니다.