উত্তর:
এর অর্থ, সেই bs
আকারের পূর্ণ ব্লক এবং বিএসের চেয়ে ছোট আকারের অতিরিক্ত ব্লক।
pushd "$(mktemp -d)"
dd if=/dev/zero of=1 bs=64M count=1 # and you get a 1+0
dd if=1 of=/dev/null bs=16M # 4+0
dd if=1 of=/dev/null bs=20M # 3+1
dd if=1 of=/dev/null bs=80M # 0+1
_crap=$PWD; popd; rm -rf "$_crap"; unset _crap
# frostschutz's case
yes | dd of=/dev/null bs=64M count=1 # 0+1
সম্পাদনা : ফ্রয়েস্টচুটজের উত্তরে পূর্ণ-অবরুদ্ধ ব্লকগুলি উত্পন্ন করার জন্য অন্য একটি মামলার উল্লেখ রয়েছে। পরার যোগ্য. Https://unix.stackexchange.com/a/17357/73443 এও দেখুন ।
0+b records out
কারণ b>1
সাধারণত পাইপ বা অন্য উত্স থেকে পড়ার সময় অসম্পূর্ণ পাঠযোগ্য যা bs=X
দ্রুত পর্যাপ্ত ডেটা সরবরাহ করতে পারে না । আপনি dd
ব্যবহার করে ডেটা সম্পূর্ণ ব্লকের জন্য অপেক্ষা করতে বাধ্য করতে পারেন iflag=fullblock
। এই বিকল্পটি বিশেষত কার্যকর যদি আপনি count=X
গণনা হিসাবেও অসম্পূর্ণ ব্লক গণনা করেন তবে এটি সম্পূর্ণ ব্লক ছাড়া বিশ্বাসযোগ্য নয় ...
এমন কয়েক ডজন স্ট্যান্ডার্ড কমান্ড লাইন ইউটিলিটি রয়েছে যা কোনও বিবরণীতে ঝুলতে পারে এবং ইনপুটটির জন্য অপেক্ষা করতে পারে। তারা সবাই কীভাবে কাজ করে তা এটি বেশ সুন্দর। dd
এটি অনন্য যে এটি আপনাকে দেখায় যে কোনও বিবরণী এখনই দেখতে কেমন লাগে ।
ব্যক্তিগতভাবে, আমি সত্যিই জিএনইউ iflag=fullblock
বিকল্পের পিছনে প্রয়োজনীয়তা বুঝতে পারি না । আমি বলতে চাইছি, আপনি কেবলমাত্র cat
নিজের ইনপুটটি কমপক্ষে সহজেই এবং আই / ও ব্লক মাপের মোটেও চিন্তা না করেই করতে পারেন।
তবে একটি স্ট্রিমের dd
একটি অংশ নিতে পারে - এবং এটি যথাযথভাবে আধুনিক সিস্টেমের read()
/ write()
সীমানায় এটি করতে পারে ।
{ ( sleep 1 #don't write() til dd is definitely setup
printf 123 #write() 3 bytes
printf %-30s\\n 456 #write() 31 bytes
printf you\ there\? #write() 10 bytes
)| dd bs=64 count=2 conv=sync| #2 64 byte read()/write() \0-padded blocks
od -vtc #show it with octal radices
} 2>/dev/null #drop stderr
0000000 1 2 3 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000100 4 5 6
0000120 \n \0
0000140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000160 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000200
dd
read()
ইনপুট ব্লক প্রতি একক করে । ফাইল এটা করার চেষ্টা করে তাহলে read()
- অনেক তথ্য হিসাবে নেই যেমন অনুরোধ করেছে এটা কোন ব্যাপার না এক read()
হিসাবে গন্য এক ইনপুটের ব্লক। এটি কিভাবে এটি কাজ করে - এটিই dd
প্রাথমিক উপযোগ।
এটি যখন কাজটি সম্পন্ন করে, এর dd
সাথে সম্পর্কিত সমস্ত ইনপুট / আউটপুট ব্লকগুলির প্রতিবেদনগুলি। উপরের কমান্ডটি আবার চালানো হচ্ছে, তবে এবার পরিবর্তে স্টডআউট হ্রাস হচ্ছে ...
dd: warning: partial read (3 bytes); suggest iflag=fullblock
0+2 records in
2+0 records out
128 bytes (128 B) copied, 1.00161 s, 0.1 kB/s
প্রতিবার dd
হয়নি read(0,&in,64)
read
ফিরে সংক্ষিপ্ত এসে - কারণ এটির stdin ফাইল বর্ণনাকারী তার অনুরোধটি পূরণ করার জন্য যখন এটি এটি তৈরি করা যথেষ্ট বাইট অপেক্ষা ছিল না। এবং তাই dd
read()
0 সম্পূর্ণ ইনপুট রেকর্ড, এবং 2 সংক্ষিপ্ত। এই রিপোর্টগুলির অর্থ এটাই।