Akılda Ayı ddham arayüzüdür read(), write()ve lseek()sistem çağrısı. Yalnızca normal dosyalardan veri parçalarını ayıklamak, aygıtları ve bazı karakter aygıtlarını (gibi /dev/urandom) ayıklamak için güvenilir bir şekilde kullanabilirsiniz ; bu, dosyanın sonuna ulaşılmadığı sürece dosyalarının read(buf, size)döndürüleceği garantilidir size.
Borular, soketler ve çoğu karakter cihazı (ttys gibi) için, read()1 boyutunda olmadıkça veya GNU dduzantısını kullanmadığınız sürece böyle bir garantiniz yoktur iflag=fullblock.
Bu yüzden ya:
{
gdd < file1 bs=1M iflag=fullblock count=99 skip=1
gdd < file2 bs=1M iflag=fullblock count=10
} > final_output
Veya:
M=1048576
{
dd < file1 bs=1 count="$((99*M))" skip="$M"
dd < file2 bs=1 count="$((10*M))"
} > final_output
Veya aşağıdaki gibi bir arama operatörü için yerleşik desteğe sahip kabuklarla ksh93:
M=1048576
{
command /opt/ast/bin/head -c "$((99*M))" < file1 <#((M))
command /opt/ast/bin/head -c "$((10*M))" < file2
}
Veya zsh( headburadaki -cseçeneği desteklediğini varsayarak ):
zmodload zsh/system &&
{
sysseek 1048576 && head -c 99M &&
head -c 10M < file2
} < file1 > final_output
oflag=append conv=notrunc), bu nedenle gecikmeli ayırma (XFS gibi) yapan dosya sistemlerinin, daha fazla şey olduğunda dosyanın yazılmasına karar vermesi en az muhtemeldir.