লিনাক্স ফাইল কমান্ড ফাইলগুলিকে শ্রেণিবদ্ধ করে


17

এলোমেলো ফাইলগুলিতে থাকা ধরণের ডেটা আমাকে সনাক্ত করতে হবে। আমি লিনাক্সে নতুন।

fileফাইলটি কী ধরণের ডেটা রয়েছে তা বোঝার জন্য আমি কমান্ডটি ব্যবহার করার পরিকল্পনা করছি । আমি সেই কমান্ডটি চেষ্টা করেছি এবং নীচে আউটপুট পেয়েছি।

কেউ আমাকে পরামর্শ দিয়েছিলেন যে fileকমান্ডটি কোনও ফাইলের প্রারম্ভিক বাইটগুলি ডেটা প্রকার নির্ধারণের জন্য দেখে। fileকমান্ড এ সব একটি ফাইল এক্সটেনশন এ দেখাচ্ছে না। এটা কি ঠিক? আমি ম্যান পেজটি দেখেছি কিন্তু অনুভব করেছি যে এটি খুব প্রযুক্তিগত। যদি কেউ কোনও লিঙ্ক সরবরাহ করতে পারে তবে fileকমান্ডটি কীভাবে কাজ করে সে সম্পর্কে আরও সহজ ব্যাখ্যা রয়েছে ।

fileকমান্ডটি চালানোর পরে আমি কীভাবে বিভিন্ন উত্তর পেতে পারি ? উদাহরণস্বরূপ, নীচের লিপিটিতে আমি জেপিইজি, আইএসও মিডিয়া, এএসসিআইআই ইত্যাদি পেয়েছি:

স্ক্রিন আউটপুট নীচে

 m7% file date-file.csv
date-file.csv: ASCII text, with CRLF line terminators
m7% file image-file.JPG
image-file.JPG: JPEG image data, EXIF standard
m7% file music-file.m4a
music-file.m4a: ISO Media, MPEG v4 system, iTunes AAC-LC
m7% file numbers-file.txt
numbers-file.txt: ASCII text
m7% file pdf-file.pdf
pdf-file.pdf: PDF document, version 1.4
m7% file text-file.txt
text-file.txt: ASCII text
m7% file video-file.MOV
video-file.MOV: data


আপডেট 1

উত্তরের জন্য ধন্যবাদ এবং তারা আমার জন্য কয়েকটি বিষয় পরিষ্কার করে দিয়েছে।

সুতরাং আমি যদি সঠিকভাবে ফোল্ডার / ইউএসআর / শেয়ার / মাইম / ম্যাজিকটি বুঝতে পারি তবে এটি বর্তমান ফাইল ফাইলগুলি কী তা আমাকে দেবে (ফাইল কমান্ড টাইপ করার পরে আমি পেতে পারি এবং একটি ফাইল দ্বারা এটি অনুসরণ করি)। এটা কি ঠিক? এটা কি সত্য যে যখনই 'ফাইল' কমান্ড আউটপুটে "পাঠ্য" শব্দটি থাকে তবে এটি এমন কোনও কিছুকে বোঝায় যা আপনি পাঠ্য দর্শকের সাথে পড়তে পারেন এবং "পাঠ্য" ব্যতীত যে কোনও কিছু বাইনারি রয়েছে?


6
ভবিষ্যতে, টার্মিনাল আউটপুটটির একটি ছবি পোস্ট করা সত্যই বাঞ্ছনীয় নয় (বা যে কেউই উপভোগ করেছেন)। মার্কডাউন কোড ব্লক ফর্ম্যাটিং ব্যবহার করুন।
HalosGhost

3
আমি ছবিটি সরিয়ে কোডটি পোস্ট করেছি।
ব্যবহারকারী 2543622

ঠিক যেমন একটি দ্রষ্টব্য: ফাইল যদি কোনও ফাইল সনাক্ত করতে না পারে তবে প্রায়শই ট্রাইড পারেন। এটির ফাইল বৈশিষ্ট্যের নিজস্ব ডেটাবেস রয়েছে, এটি সম্প্রদায় দ্বারা এটি ব্যবহার করে তৈরি করা হয়েছে।
জোসেফ বলছেন মনিকাকে

উত্তর:


13

file বিভিন্ন ধরণের পরীক্ষা ব্যবহার করে :

1: যদি ফাইলটি বিদ্যমান না থাকে, পড়তে পারা যায় না বা এর ফাইল স্থিতি নির্ধারণ করা যায় না, আউটপুট নির্দেশ করবে যে ফাইলটি প্রক্রিয়াজাত হয়েছিল, তবে এটির ধরণ নির্ধারণ করা যায়নি।

এটি আউটপুট মত হবে cannot open file: No such file or directory

2: ফাইলটি যদি নিয়মিত ফাইল না হয় তবে তার ফাইলের প্রকারটি চিহ্নিত করা হবে। ফাইল টাইপ ডিরেক্টরি, FIFO, সকেট, ব্লক বিশেষ, এবং অক্ষর বিশেষ হিসাবে চিহ্নিত করা হবে। অন্যান্য প্রয়োগ-সংজ্ঞায়িত ফাইলের প্রকারগুলিও চিহ্নিত করা যেতে পারে। যদি ফাইলটি একটি প্রতীকী লিঙ্ক হয় তবে ডিফল্টরূপে লিঙ্কটি সমাধান হয়ে যায় এবং ফাইলটি প্রতীকী লিঙ্কটি দ্বারা উল্লিখিত ফাইলের ধরণের পরীক্ষা করবে। ( নীচের -hএবং -iবিকল্পগুলি দেখুন।)

এটি আউটপুট মত .: directoryএবং হবে /dev/sda: block special। এর জন্য পূর্ববর্তী বিন্যাস এবং পূর্ববর্তী পয়েন্টটি বেশিরভাগই পসিক্স দ্বারা আংশিকভাবে সংজ্ঞায়িত করা হয়েছে - আপনি আউটপুটে থাকা কয়েকটি স্ট্রিংয়ের উপর নির্ভর করতে পারেন।

3: যদি ফাইলের দৈর্ঘ্য শূন্য হয় তবে এটি খালি ফাইল হিসাবে চিহ্নিত হবে।

এই foo: empty

4: ফাইল ইউটিলিটি ফাইলের প্রাথমিক বিভাগটি পরীক্ষা করবে এবং অবস্থান-সংবেদনশীল পরীক্ষার উপর ভিত্তি করে এর বিষয়বস্তু সনাক্ত করতে একটি অনুমান করবে। (উত্তরটি সঠিক হওয়ার গ্যারান্টিযুক্ত নয়; নীচে -d, -M এবং -m বিকল্পগুলি দেখুন see)

5: ফাইল ইউটিলিটি ফাইলটি পরীক্ষা করবে এবং প্রাসঙ্গিক-সংবেদনশীল ডিফল্ট সিস্টেম পরীক্ষার উপর ভিত্তি করে এর বিষয়বস্তুগুলি সনাক্ত করতে একটি অনুমান করবে। (উত্তরটি সঠিক হওয়ার গ্যারান্টিযুক্ত নয়))

এই দুটি ম্যাজিক নম্বর সনাক্তকরণ ব্যবহার করে এবং কমান্ডের সবচেয়ে আকর্ষণীয় অংশ। একটি ম্যাজিক নম্বর হ'ল বাইটগুলির একটি বিশেষ ক্রম যা এটির ধরণ সনাক্ত করে এমন কোনও ফাইলের একটি পরিচিত স্থানে। .তিহ্যগতভাবে place স্থানটি প্রথম দুটি বাইট, তবে দীর্ঘতর স্ট্রিং এবং অন্যান্য অবস্থান অন্তর্ভুক্ত করার জন্য এই শব্দটি আরও বাড়ানো হয়েছে। কমান্ডের ম্যাজিক সংখ্যা সম্পর্কে আরও বিশদের জন্য এই অন্যান্য প্রশ্নটি দেখুন file

fileকমান্ড এই সংখ্যা একটি ডাটাবেস আছে এবং তারা কি মিলা টাইপ করুন; যে ডাটাবেসের মধ্যে সাধারণত /usr/share/mime/magic, এবং ফাইলের বিষয়বস্তুকে মানচিত্র MIME প্রকারসমূহ । সেখানকার আউটপুট (প্রায়শই file -iযদি আপনি এটি ডিফল্টরূপে না পান তার অংশ ) একটি সংজ্ঞায়িত মিডিয়া টাইপ বা এক্সটেনশন হবে। "প্রসঙ্গ সংবেদনশীল পরীক্ষা" একই ধরণের পদ্ধতির ব্যবহার করে তবে কিছুটা ফাজি। এগুলির কোনওটিই সঠিক হওয়ার গ্যারান্টিযুক্ত নয়, তবে সেগুলি ভাল অনুমান করার উদ্দেশ্যে।

fileনামের সাথে এই ধরণের ম্যাপিংয়ের একটি ডাটাবেসও রয়েছে, যার মাধ্যমে এটি জানতে পারবে যে এটি চিহ্নিত একটি ফাইলকে এ হিসাবে application/pdfবর্ণনা করা যেতে পারে PDF document। এই মানব-পঠনযোগ্য নামগুলি অন্য ভাষায়ও স্থানীয়করণ করা যেতে পারে। এটি মেশিনের পরিবর্তে কোনও ব্যক্তির বুঝতে পারে এমনভাবে ফাইলের ধরণের কিছু উচ্চ স্তরের বিবরণ থাকবে।

আপনি যে বিভিন্ন আউটপুট পেতে পারেন তার সিংহভাগ এই পর্যায় থেকে আসবে। magicসমর্থিত প্রকারের তালিকার জন্য এবং সেগুলি কীভাবে সনাক্ত করা যায় সেগুলির জন্য আপনি ফাইলটি দেখতে পারেন - আমার সিস্টেমটি 376 বিভিন্ন ধরণের জানে। প্রদত্ত নামগুলি এবং সমর্থিত প্রকারগুলি আপনার সিস্টেম প্যাকেজিং এবং কনফিগারেশন দ্বারা নির্ধারিত হয় এবং তাই আপনার সিস্টেমটি আমার চেয়ে কম বা কম সমর্থন করতে পারে তবে এগুলির মধ্যে সাধারণত প্রচুর পরিমাণ রয়েছে। libmagicএটিতে অতিরিক্ত হার্ড-কোডড পরীক্ষাও অন্তর্ভুক্ত।

6: ফাইলটি একটি ডেটা ফাইল হিসাবে চিহ্নিত করা হবে।

এটি foo: dataতখনই যখন ফাইলটি সম্পর্কে কোনও কিছু বের করতে ব্যর্থ হয়।

অন্যান্য ছোট্ট ট্যাগগুলিও উপস্থিত হতে পারে। একটি এক্সিকিউটেবল ( +x) ফাইলটি executableআউটপুটে " " অন্তর্ভুক্ত করবে , সাধারণত কমা দ্বারা পৃথক। fileবাস্তবায়ন তাদের সম্পর্কে অতিরিক্ত পয়েন্ট বর্ণনা করতে, আপনার "হিসেবে পাবে কিছু ফাইল ফরম্যাট সম্পর্কে অতিরিক্ত কিছু জানতে পারি PDF document, version 1.4।"


8

ম্যান পেজগুলি সাধারণত সংক্ষিপ্ত রেফারেন্স হয়, পরিচিতি নয়। উইকিপিডিয়া পৃষ্ঠা দিয়ে শুরু করুন ।

fileকেবল ফাইলের বিষয়বস্তুতে দেখায়, ফাইলের নামে নয়। (এটি কিছু ফাইল মেটাডেটা যেমন ফাইলের ধরণ: ডিরেক্টরি, প্রতীকী লিঙ্ক, নামযুক্ত পাইপ ইত্যাদির দিকেও নজর দেয়) তবে যে ক্ষেত্রে আপনি আগ্রহী হন এটি বিষয়বস্তুতে গুরুত্বপূর্ণ)

fileপ্রথম কয়েকটি বাইট দেখে এবং ম্যাজিক সংখ্যার অন্তর্নির্মিত টেবিলের সাথে তুলনা করে সাধারণত কোনও ফাইলের ফর্ম্যাটটি অনুমান করে । উদাহরণস্বরূপ, যদি ফাইলটি শুরু হয় %PDF, তবে file"পিডিএফ ডকুমেন্ট" প্রতিবেদন করে (এবং সর্বনিম্ন সংস্করণটি রিপোর্ট করার জন্য আরও খনন করা যায়)। ফাইলের ধরণের জন্য যা ম্যাজিক সংখ্যার সাথে শুরু হয় না, এতে হিউরিস্টিকস রয়েছে, উদাহরণস্বরূপ "ASCII পাঠ্য" প্রতিবেদন করুন যদি প্রথম কয়েকটি বাইটগুলি সমস্ত মুদ্রণযোগ্য ASCII সীমাতে থাকে।

এর আউটপুট fileভঙ্গুর: এটি ইউনিক্স বৈকল্পিক থেকে ইউনিক্স রূপে এবং সংস্করণ থেকে সংস্করণে পরিবর্তিত হতে পারে। লিনাক্স, সাইগউইন এবং * বিএসডি-তে, fileকমান্ডটি এমন একটি বিকল্প সমর্থন -iকরে যা একটি মাইম মিডিয়া টাইপের আকারে অনুমানযোগ্য আউটপুট তৈরি করে (আইএএনএ স্ট্যান্ডার্ড মিডিয়া ধরণের তালিকা পরিচালনা করে )। এখানে অনেকগুলি বিবরণ নেই এবং আউটপুট কম মানব-বান্ধব তবে আউটপুট অনুমানযোগ্য এবং কম্পিউটার বান্ধব।

$ file -i somefile.csv
somefile.csv: text/plain; charset=us-ascii
$ file -i somefile.jpg
somefile.jpg: image/jpeg; charset=binary
$ file -i somefile.pdf
somefile.pdf: application/pdf; charset=binary

ব্যবহারের file --mime-typeআপনি শুধুমাত্র এমআইএমই তথ্য এনকোডিং, যেমন ছাড়া নিজেই টাইপ করতে চান তাহলে application/pdf-bআপনি যদি লাইনের শুরুতে ফাইলের নামটি প্রদর্শন করতে না চান তবে বিকল্পটি পাস করুন ।


5

আমি চাই আপনি উত্তরটি এখানে থেকে পড়ুন । উত্তরের কিছু অংশগুলি হ'ল,

fileকমান্ডের ম্যান পৃষ্ঠা থেকে ,

file কমান্ড আসলে ফাইলের ধরন নির্ধারণের জন্য 3 টি পরীক্ষা করে।

প্রথম পরীক্ষা

ফাইল সিস্টেম পরীক্ষাগুলি স্ট্যাট (2) সিস্টেম কল থেকে রিটার্ন পরীক্ষা করার উপর ভিত্তি করে।

দ্বিতীয় পরীক্ষা

নির্দিষ্ট নির্দিষ্ট ফর্ম্যাটে ডেটাযুক্ত ফাইলগুলি পরীক্ষা করতে ম্যাজিক নম্বর টেস্ট ব্যবহার করা হয়।

তৃতীয় পরীক্ষা

ভাষা পরীক্ষাগুলি নির্দিষ্ট স্ট্রিংগুলির জন্য অনুসন্ধান করে (সিএফ নামগুলি h) যা কোনও ফাইলের প্রথম কয়েকটি ব্লকের যে কোনও জায়গায় উপস্থিত হতে পারে। উদাহরণস্বরূপ, কীওয়ার্ড .br নির্দেশ করে যে ফাইলটি সম্ভবত একটি ট্রফ (1) ইনপুট ফাইল, যেমন কীওয়ার্ড স্ট্রাক্ট কোনও সি প্রোগ্রামকে নির্দেশ করে।

fileকমান্ডের আউটপুট সাধারণত সফল হয় যে কোনও পরীক্ষার ফলাফলের উপর ভিত্তি করে।

এখন ধরে নিলাম, সি ++ প্রোগ্রামটি এভাবে শুরু হয় এবং তৃতীয় পরীক্ষাটি সফল হয়,

#include <iostream.h>
bla
bla

তৃতীয় পরীক্ষার অনুসারে কীওয়ার্ডটি #includeনির্দিষ্ট করে এটি টাইপ সি প্রোগ্রামের যদিও আমাদের হাতে সিপিপি প্রোগ্রাম রয়েছে। এখন, আমি যখন পরীক্ষা করি,

$ file example.cpp

example.cpp: ASCII C program text

এখন, অবজেক্ট ওরিয়েন্টেড ধারণাগুলি C ++ এর সাথে নির্দিষ্ট। আসুন আমরা সি ++ এর জন্য নির্দিষ্ট একটি ফাইল তৈরি করি ।

আমি আমার সি ++ প্রোগ্রামটি এই হিসাবে শুরু করি,

Class something
{
}
bla
bla

এখন, আমি ইস্যু করার সময়

$ file example.cpp

আউটপুট হল,

example.cpp: ASCII C++ program text

এটি মূলত ব্যাখ্যা করে যে কীভাবে fileঅনুরূপ ফাইলগুলিতে কমান্ড কাজ করে (উদাহরণস্বরূপ, সি প্রোগ্রাম এবং সি ++ প্রোগ্রামটি সি -++ সম্পর্কিত নির্দিষ্ট অবজেক্ট অরিয়েন্টেড বৈশিষ্ট্যগুলি ব্যবহার না করা এবং যতক্ষণ না করা হয় ততক্ষণ পর্যন্ত একইরূপে বিবেচিত হবে)।


1

গিলস এবং মাইকেল হোমার দুর্দান্ত উত্তর সরবরাহ করেছেন। যা আমি আপনাকে উল্লেখ। আপনার সিস্টেমে স্বীকৃত ফাইলের প্রকারগুলি দেখতে, চালনার চেষ্টা করুন

cat /usr/share/magic

যদি এটি অনুমতি সংক্রান্ত সমস্যা দেয় বা উপস্থিত না থাকে তবে সম্ভবত

find / -exec file {} \; 2>/dev/null | cut -d":" -f2 | sort -u

(আপনার সিস্টেমের উপর নির্ভর করে টুইটারের প্রয়োজন হতে পারে) যা আপনার সিস্টেমে ফাইল টাইপের একটি তালিকা আপনাকে দেখায়। আপনার কমান্ডটি আপনার রুট ফাইল সিস্টেমের আকারের উপর নির্ভর করে চালাতে বেশ দীর্ঘ সময় নিতে পারে।

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