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


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.