কিভাবে একটি ফাইল সিস্টেমের ফর্ম্যাট চেক


11

ডিরেক্টরি ফাইল টাইপ কী, তা বাশ স্ক্রিপ্টে পরীক্ষা করতে চাই।

ধারণাটি এমন কিছু

if [path] is on a [filesystem] filesystem then
   filesystem specific command
end if

আপনি কি মাউন্ট পয়েন্ট বা ফাইল সিস্টেম টাইপ চান? আপনার কাঙ্ক্ষিত ফলাফল কি হবে?
টেরডন

উত্তর:


11

ব্যবহার df। আপনি এটিকে একটি পাথ পাস করতে পারেন এবং এটি আপনাকে সেই পাথের জন্য ফাইল সিস্টেমের তথ্য দেয়। আপনার যদি ফাইল সিস্টেমের ধরণের প্রয়োজন হয় তবে -Tস্যুইচটি ব্যবহার করুন :

$ df -T test
Filesystem     Type 1K-blocks     Used Available Use% Mounted on
/dev/sda2      ext4 182634676 32337180 141020160  19% /home

ফাইল-সিস্টেমের প্রকারটি এক্সট্রাক্ট করার জন্য, আপনি এটি বিশ্লেষণ করতে পারেন ( ডিভাইসের অংশটি দীর্ঘ হলে লাইন ভাঙ্গা -Pএড়াতে স্যুইচটি ব্যবহার করুন df):

$ df -PT test | awk 'NR==2 {print $2}'
ext4

সুতরাং আপনি ifযেমন একটি নির্মাণে যে মানটি ব্যবহার করতে পারেন :

if [ "$(df -PT "$path" | awk 'NR==2 {print $2}')" = "ext4" ] ; then
  it is an ext4 filesystem
fi

সাবধান হন যে ডিভাইস কলামে ফাঁকা স্থান থাকতে পারে (তবে এটি বিরল), এই ক্ষেত্রে পার্সিং ব্যর্থ হবে।


12

GNU স্ট্যাট কমান্ড ইনস্টল করা সিস্টেমে (কোনও আদর্শ লিনাক্স ডিস্ট্রোর পাশাপাশি) আপনি statকমান্ডটি ব্যবহার করে কোনও পার্সিংয়ের প্রয়োজন ছাড়াই একটি প্রদত্ত ফাইলের জন্য fs টাইপ পেতে পারেন :

stat -f -c %T filename

-fstatফাইলের পরিবর্তে ফাইল-সিস্টেম সম্পর্কে তথ্য সরবরাহ করতে বলে এবং -c %Tকেবল মানব-পঠনযোগ্য ফাইল সিস্টেম টাইপ ( %T) অন্তর্ভুক্ত করতে আউটপুট ফর্ম্যাট সেট করে ।

সুতরাং আপনি এটি (ব্যাশে) হিসাবে ব্যবহার করতে পারেন:

if [[ $(stat -f -c %T filename) == ext4 ]]; then
  # ext4 specific command
fi

man stat আরও তথ্য সরবরাহ করবে।


3

সঙ্গে findmnt(অংশ util-linux):

findmnt -no fstype -T /path/to/file

বিকল্পটি ব্যবহার করার সময়

-T, --তারেটের পথ
যদি পাথটি কোনও মাউন্টপয়েন্ট ফাইল বা ডিরেক্টরি findmntনা হয় তবে মাউন্টপয়েন্টটি পেতে বিপরীত ক্রমে পাথ উপাদানগুলি পরীক্ষা করে। অন্যান্য দুটি বিকল্প শিরোনাম লাইনটি দমন করে: -n, --noheadingএবং তালিকাবদ্ধ করতে কলাম (গুলি) নির্বাচন করুন:-o, --output


dfথেকে কেবলমাত্র নির্দিষ্ট ক্ষেত্রগুলি মুদ্রণের coreutilsঅনুরূপ বিকল্প --output=রয়েছে fstypeযেমন:

df --output=fstype /path/to/file

যদিও শিরোলেখ অপসারণ করার কোনও বিকল্প নেই, সুতরাং আপনাকে আউটপুটটি উদাহরণস্বরূপ পাইপ করতে হবে | sed 1d


findmntলাইন-অঙ্কন TUI আউটপুট সহ এমনকি একটি সুন্দর সরঞ্জাম। ধন্যবাদ!
ইনকনিস মিসেসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.