টার্মিনালের মাধ্যমে কীলোবাইটসকে মেগাবাইট বা গিগাবাইটে রূপান্তর করবেন?


16

আমি আমার ডিস্কের আকার সন্ধান করার চেষ্টা করেছি, তাই আমি নীচের কমান্ডটি চালিত করেছি

$ sudo fdisk -s /dev/sda
976762584

এটি উপরের মতো দেখায়। আমি মনে করি 976762584ডিস্কের আকার ( ) কিলোবাইটে দেখানো হয়েছে। কীভাবে আমি আরও ভাল বোঝার জন্য টার্মিনালের মাধ্যমে মানটিকে মেগাবাইট বা গিগাবাইটে রূপান্তর করব?


1
এই কৌতুক করতে হবে: df -h /। আকার প্রদর্শন /একটি -hUman পাঠযোগ্য বিন্যাস।
ব্লেড 19899

fdisk -s এটিকে আরও blockdev --getsize64
অবহিত করা

@ ব্লেড ১৯৮৯৯ যা পুরো ডিস্কে নয় পার্টিশনের আকার পাবেন
ব্যাকন

উত্তর:


10

শেলটি অতিরিক্ত প্রবাহের জন্য কোনও পরীক্ষা ছাড়াই স্থির-প্রস্থের পূর্ণসংখ্যার পাটিগণিত করে। সুতরাং, কোনও গণনা করার সময় যা বিপুল সংখ্যক বা ভগ্নাংশ জড়িত থাকতে পারে, bcএটি একটি ভাল পছন্দ। মেগাবাইট পেতে:

$ echo "scale=2; $(sudo fdisk -s /dev/sda6) / 1024" | bc
13641.75

গিগাবাইট পেতে:

$ echo "scale=2; $(sudo fdisk -s /dev/sda6) / 1024^2" | bc
12.70

অ্যাসাইনমেন্টটি দুটি দশমিক স্থান প্রদর্শন করতে scale=2বলে bc


আমি এই জাতীয় ক্ষেত্রে এইস্ট্রাস্টিংগুলি ব্যবহার করতে চাই:bc <<<"scale=2; $(sudo fdisk -s /dev/sda6) / 1024^2"
ডিমো 414

8

numfmt( জিএনইউ কোরিউটিলসের অংশ ) এখানে ব্যবহার করা যেতে পারে:

$ sudo fdisk -s /dev/sda | numfmt --to=iec-i --suffix=B --format="%.2f"
931.52MiB

1
আপনার উত্তরে কমান্ড থেকে আউটপুট অন্তর্ভুক্ত করা এটি আরও সম্পূর্ণ করে তুলবে।
WinEunuuchs2Unix

4

অজস্র

মেগাবাইটে ডিস্কের আকার অনুসন্ধান করতে,

$ sudo fdisk -s /dev/sda | awk '{$1=$1/1024; print $1,"MB";}'
953870 MB

গিগাবাইটে ডিস্কের আকার খুঁজে পেতে,

$ sudo fdisk -s /dev/sda | awk '{$1=$1/(1024^2); print $1,"GB";}'
931.513 GB

পরিবর্তে sudo fdisk -s /dev/sdaআপনি ব্যবহার করতে পারেনdf | grep ^\/dev.*/\$
ডিন রথ

@ ডিএনরথার sudo fdiskপ্রকল্পের ক্ষেত্রটি প্রশ্নের সাথে সংজ্ঞায়িত হয়েছিল।
WinEunuuchs2Unix

3

যদি আকারটি কিলোবাইটে দেওয়া হয়, তবে আপনাকে বাশ অন্তর্নির্মিত এক্সপ্রেশনগুলির মাধ্যমে গণনা করতে হবে। ব্লকের আকার = 512 বি ধরে ধরে, আপনাকে টাইপ করতে হবে:

echo $((`fdisk -s /dev/sda`*512/1024))

এটি কিবিতে ডিস্কের আকার প্রদর্শন করবে। আরও যেতে, কেবল /1024প্রকাশের শেষে যুক্ত করুন :

echo $((`fdisk -s /dev/sda`*512/1024/1024))

এটি এমআইবিতে ডিস্কের আকার এবং আরও কিছু দেখায়।


2
সুন্দরভাবে সম্পন্ন. একটি ছোট্ট নোট হিসাবে, $[...]ফর্ম্যাটটি অবচয় করা হয়েছে এবং যেমনটি man bashবলা হয়েছে, "আসন্ন সংস্করণগুলিতে সরানো হবে।" শেল পাটিগণিতের জন্য বর্তমানে পছন্দের বিন্যাসটি $((...))
1024

@ জন 1024 নোটের জন্য ধন্যবাদ। অনুমান করেননি যে ডাবল বন্ধনী সিনট্যাক্স উপযুক্ত।
দানাতেলা

দুটি কমান্ড অনুলিপি করা এবং আটকানো ত্রুটি উত্পন্ন করে কারণ sudoঅনুপস্থিত। এছাড়াও পরিমাপের ইউনিট প্রিন্ট করে না।
WinEunuuchs2Unix

পরিমাপ ভুল
bac0n

তবে আপনি করতে পেরেছিলেনecho $((($(cat /sys/block/sda/size)*512)/1024**3))GB

1

আপনি বাশ এবং সিউডো-ভাসমান পয়েন্ট সংখ্যাগুলির সাহায্যে এটি স্থানীয়ভাবে করতে পারেন। আপনার এই ফাংশনটি সংজ্ঞায়িত করুন ~/.bashrcএবং আপনার টার্মিনালটি আবার খুলুন:

function BytesToHuman() {

    # /unix/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254

    read StdIn

    b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)
    while ((b > 1024)); do
        d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
        b=$((b / 1024))
        let s++
    done
    echo "$b$d ${S[$s]}"

} # BytesToHuman ()

এখন এটি পরীক্ষা করুন:

$ sudo fdisk -s /dev/sda
976762584

$ sudo fdisk -s /dev/sda | BytesToHuman
931.51 MiB

1

ইউনিট নামক একটি সরঞ্জাম রয়েছে, যা ইউনিট রূপান্তরের জন্য ব্যবহার করা যেতে পারে:

$ units -o "%.0f" -t "4 gibibytes" "mebibytes"
4096

এটি প্যাকেজ হিসাবে পাওয়া যায় apt install units

এটি একটি মোটামুটি মানক সরঞ্জাম, এটি অন্যান্য ইউএনআইএক্স-এর মতো সিস্টেমে (যেমন, ফ্রিবিএসডি ) ডিফল্টরূপে ইনস্টল করা পাওয়া যায় । মনে রাখবেন যে ইউনিট (1) সিনট্যাক্স বিভিন্ন অপারেটিং সিস্টেমে উপলব্ধ বাস্তবায়ন জুড়ে আলাদা হতে পারে। এখানে একই রূপান্তরটি কিন্তু এবার ফ্রিবিএসডি ইউনিটগুলির সাথে (1) :

$ units -o "%0.f" -t "4 gigabytes" "megabytes"
4096
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.