จำไว้ว่าddเป็นอินเตอร์เฟซดิบไปread(), write()และlseek()ระบบโทร คุณสามารถใช้มันได้อย่างน่าเชื่อถือเพื่อแยกส่วนของข้อมูลออกจากไฟล์ปกติอุปกรณ์บล็อกและอุปกรณ์ตัวอักษร (เช่น/dev/urandom) ซึ่งเป็นไฟล์ที่read(buf, size)รับประกันว่าจะส่งคืนsizeตราบใดที่ไม่ถึงจุดสิ้นสุดของไฟล์
สำหรับท่อซ็อกเก็ตและอุปกรณ์ตัวอักษรมากที่สุด (เช่น ttys) คุณมีการรับประกันดังกล่าวไม่จนกว่าคุณจะทำread()ของขนาด 1 หรือใช้ GNU นามสกุลddiflag=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
หรือกับกระสุนที่มี builtin รองรับผู้ใช้งานเช่น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) มีโอกาสน้อยที่สุดที่จะตัดสินใจว่าไฟล์จะถูกเขียนเมื่อยังเหลืออยู่