struct stat { dev_t st_dev; معرف المجموعة */ dev_t st_rdev /* نوع الجهاز */ off_t st_off; /* عدد البايتات في الملف*/ unsigned long st_blksize /* حجم الكتلة*/ unsigned long st_blocks /* عدد الكتل*/ time_t st_atime; / time_t st_ctime /* وقت التغيير الأخير (بالإشارة إلى السمات) */;فلنتعرف على هذه السمات واحدة تلو الأخرى. إذا كنت بحاجة إلى عرض سمات ملف معين، فاستخدمها
القانون الأساسيما عليك سوى إصدار الأمر وسيقوم بإدراج المعلومات وفقًا للبنية المذكورة أعلاه. فضلاً عن ذلك،
ليرة سوريةيمكن للأمر أيضًا عرض السمات ذات الصلة بالملف بعد اتباع معلمات معينة، مثل
-لالمعلمة.
أنواع الملفات تتوافق مع ما ورد أعلاه
st_modeهناك العديد من أنواع الملفات، مثل الملفات العادية، والروابط الرمزية (الروابط الثابتة، والارتباطات الناعمة)، وملفات الأنابيب، وملفات الأجهزة (الأجهزة الرمزية، وأجهزة الحظر)، وملفات المقبس، وما إلى ذلك. تتوافق أنواع الملفات المختلفة مع وظائف وأدوار مختلفة.
$ ls -ltotal 12drwxr-xr-x 2 جذر الجذر 4096 2007-12-07 20:08 Directory_fileprw-r--r-- 1 جذر الجذر 0 2007-12-07 20:18 fifo_pipebrw-r--r-- 1 جذر جذر 3, 1 07-12-2007 21:44 hda1_block_dev_filecrw-r--r-- 1 root root 1, 3 2007-12-07 21:43 null_char_dev_file-rw-r--r-- 2 root root 506 2007-12-07 21:55 Regular_file-rw -r--r-- 2 جذر جذر 506 2007-12-07 21:55 Regular_file_hard_linklrwxrwxrwx 1 root root 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ stat Directory_file/ الملف: `directory_file/' الحجم: 4096 كتل: 8 كتلة IO: 4096 دليل الجهاز: 301h/769d Inode: 521521 الروابط: 2 الوصول: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) الوصول: 2007-12-07 20:08:18.000000000 +0800 تعديل: 2007- 12-07 20:08:18.000000000 +0800Change: 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file الملف: `null_char_dev_file' الحجم: 0 كتل: 0 كتلة IO: ملف خاص مكون من 4096 حرفًا الجهاز: 301h/769d Inode: 521240 الروابط: 1 نوع الجهاز: 1,3 الوصول: (0644/crw-r--r--) Uid: (0/ root) Gid: (0/ root) الوصول: 2007-12-07 21 :43:38.000000000 +0800تعديل: 2007-12-07 21:43:38.000000000 +0800التغيير: 2007-12-07 21:43:38.000000000 +0800
الوصف: مرت
ليرة سوريةيمكنك أن ترى أن الأحرف الأولى من كل سطر من نتائج الأمر تختلف عن بعضها البعض، مما يعكس فقط أنواع الملفات المختلفة.
ديمثل الدليل
-يمثل ملفًا عاديًا (أو رابطًا ثابتًا)،
ليمثل رابطًا رمزيًا،
صيمثل ملف خط أنابيب،
بو
جيمثل أجهزة الحظر وأجهزة الشخصيات على التوالي (بالإضافة إلى ذلك
قيعبر
المقبسوثيقة). يخرج
القانون الأساسيفي نتيجة الأمر، يمكنك العثور على الوصف في نهاية السطر الثاني، كما يتبين من العملية المذكورة أعلاه.
Directory_fileهو الدليل،
القانون الأساسييستخدم في نتائج الأوامر
دليليمثل، و
null_char_dev_fileيستخدم
ملف خاص بالحرفيوضح.
عادةً ما يتم استخدام الدلائل والملفات العادية والروابط الرمزية فقط، ونادرًا ما يتم العثور على أنواع أخرى من الملفات، ومع ذلك، لا يزال لهذه الملفات استخداماتها الخاصة إذا كنت تقوم بالتطوير المضمن أو اتصالات العمليات، وما إلى ذلك، فإن ملفات الجهاز تسمى الأنبوب (FIFO). ما يلي هو عملية بسيطة لتوضيح الفرق بينهما (سيتم تقديم المبادئ المحددة في القسم التالي "نظام الملفات النموذجي لبرمجة Shell". إذا كنت مهتمًا، يمكنك أيضًا الاتصال بالإنترنت مسبقًا للعثور على دور ملفات الجهاز وحظر الأجهزة واختلافات الأجهزة، وكيفية كتابة برامج تشغيل الأجهزة ذات الصلة في برنامج التشغيل، وما إلى ذلك).
بالنسبة للملفات العادية: فهي عبارة عن مجموعة من الأحرف، بحيث يمكن قراءتها وكتابتها وما إلى ذلك.
$ صدى مرحبًا، العالم > Regular_file$ cat Regular_filehello، العالم
يمكن إنشاء ملفات جديدة في الدليل، لذلك يُسمى الدليل أيضًا: سيتم تحليل بنية ملف الدليل لاحقًا، وهو في الواقع يخزن أسماء الملفات الخاصة بكل ملف تحته.
$ cd Directory_file$ touch file1 file2 file3
بالنسبة للأنابيب المسماة، تكون العملية أكثر إثارة للاهتمام: إذا كنت ترغب في قراءتها، فسيتم حظرها ما لم يكن هناك محتوى؛ وإذا كنت تريد الكتابة إليها، فسيتم حظرها ما لم يأتي شخص ما لقراءتها. يتم استخدامه عادة في عملية الاتصال. يمكن فتح محطتين
محطة1و
محطة2، جربه:
Terminal1$ cat fifo_pipe # يتم حظره هنا في البداية، ولا يطبع سلسلة الاختبار حتى يحدث إجراء الكتابة التالي Terminal2$ echo test > fifo_pipe
فيما يتعلق بأجهزة الحظر وأجهزة الشخصيات وملفات الجهاز تتوافق مع
/dev/hda1و
/dev/null، إذا كنت قد استخدمت محرك أقراص USB محمولاً أو كتبت نصًا بسيطًا، فيجب أن تكون قد استخدمت هذه الطريقة من قبل: :-)
$ mount hda1_block_dev_file /mnt # قم بتركيب القسم الأول من القرص الصلب على /mnt (ستتم مناقشة مبدأ التثبيت في القسم التالي) $ echoقليلwfef > /dev/null #/dev/null يشبه الثقب الأسود، شيء ما مفقود بمجرد الدخول، يختفي كل شيء
الملفين الأخيرين هما
Regular_fileالروابط الصلبة والروابط الناعمة للملفات، إذا قرأتها وكتبتها تكون محتوياتها واحدة، ولكن إذا قمت بحذفها فلا علاقة لها ببعضها البعض. ما الفرق بين الروابط الصلبة والروابط الناعمة؟ يمكن القول أن الأول هو الملف الأصلي، في حين أن الأخير لديه مثل هذا الملف
inode، ولكن لا توجد مساحة تخزين فعلية، فمن المستحسن استخدامها
القانون الأساسيالأمر برؤية الاختلافات بينهم بما في ذلك
كتل,
inodeأي ما يعادله، يمكنك أيضًا التفكير في استخدامه
فرققارن أحجامها.
$ ls Regular_file*ls Regular_file* -l-rw-r--r-- 2 جذر الجذر 204800 2007-12-07 22:30 Regular_file-rw-r--r-- 2 جذر الجذر 204800 2007-12-07 22 :30 Regular_file_hard_linklrwxrwxrwx 1 جذر جذر 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ rm Regular_file # احذف الملف الأصلي $ cat Regular_file_hard_link # الرابط الثابت لا يزال موجودًا، ولا يزال هناك محتوى فيه fefe$ cat Regular_file_soft_linkcat: Regular_file_soft_link: لا يوجد مثل هذا الملف أو الدليل
على الرغم من أن ملف الارتباط الناعم نفسه لا يزال موجودًا، إلا أنه لا يمكنه قراءة أي شيء لأنه لا يقوم بتخزين المحتوى نفسه. وهذا هو الفرق بين الروابط الناعمة والروابط الثابتة.
تجدر الإشارة إلى أن الروابط الصلبة لا يمكنها عبور أنظمة الملفات، لكن الروابط الناعمة يمكنها ذلك. بالإضافة إلى ذلك، لا يُسمح بإنشاء روابط ثابتة للأدلة.
تنقسم أنواع الملفات إلى الأنواع المذكورة أعلاه من مستوى نظام ملفات Linux، ولكن لا يزال من الممكن تقسيم الملفات العادية (وفقًا لـ "بنية البيانات" لمحتوى الملف)، مثل الملفات النصية الشائعة والقابلة للتنفيذ
قزموثيقة،
odtوثيقة،
jpgتنسيق الصورة,
تبديلملف التقسيم,
قوات الدفاع الشعبيوثيقة. بالإضافة إلى الملفات النصية، فهي في الغالب ملفات ثنائية ذات بنية محددة وبالتالي تتطلب أدوات متخصصة لإنشائها وتحريرها. فيما يتعلق بتنسيق أنواع الملفات المختلفة، يمكنك الرجوع إلى معايير المستندات ذات الصلة. ومع ذلك، فمن المفيد معرفة المزيد عن الملفات القابلة للتنفيذ في نظام التشغيل Linux.
قزمإذا كنت مهتمًا بمبدأ عمل الملف، فمن المستحسن قراءة المراجع و
قزمالجزء ذو الصلة من الملف، هذا الجزء ضروري لمهندسي Linux المضمنين.
على الرغم من أن الأنواع المختلفة من الملفات العادية لها أدوات تشغيل خاصة بها، إلا أنه لا يزال بإمكانك قراءتها وكتابتها مباشرةً، وسأذكر هذه الأدوات أولاً وأناقش التفاصيل لاحقًا.
التطوير التنظيمي: "تصدير" محتويات الملف بتنسيق ثماني أو تنسيقات أخرى.
سلاسل: قراءة الأحرف الموجودة في الملف (الأحرف القابلة للطباعة)
دول مجلس التعاون الخليجي,
gdb,
readelf،objdump
انتظر:قزم
أدوات تحليل ومعالجة الملفات (دول مجلس التعاون الخليجي
مترجم,gdb
مصحح أخطاء,readelf
تحليل ملفات ELF،أداة فك التجميع objdump)
إضافة أمر آخر مهم جدا،
ملف، يُستخدم هذا الأمر لعرض خصائص أنواع مختلفة من الملفات. و
القانون الأساسيبالمقارنة مع الأمر، فإنه يمكن تحديد المزيد من الملفات العادية، وهي
القانون الأساسيتم عرض الأمر
ملف عادي. لأن
ملف عادييمكن أن يكون هناك مجموعة متنوعة من الهياكل المختلفة وبالتالي يتم تفسيرها بشكل مختلف وتنفيذ إجراءات مختلفة بدعم من نظام التشغيل. على الرغم من أنه، في نظام التشغيل Linux، يتم إضافة لاحقات محددة إلى الملفات حتى يتمكن المستخدمون من التعرف على نوع الملف بسهولة، إلا أن نظام التشغيل Linux يحدد أنواعًا مختلفة من الملفات بناءً على رأس الملف، وليس لاحقة الملف، مما يجعل تفسير الملف أكثر صعوبة. الملفات المقابلة عرضة للخطأ. وفيما يلي مقدمة موجزة
ملفاستخدام الأمر.
ملف $ ././: ملف الدليل $ /etc/profile/etc/profile: ملف النص الإنجليزي ASCII $ /lib/libc-2.5.so/lib/libc-2.5.so: كائن LSB مشترك ELF 32 بت، Intel 80386، الإصدار 1 (SYSV)، ملف $ غير مُجرد /bin/test/bin/test: ELF 32 بت LSB قابل للتنفيذ، Intel 80386، الإصدار 1 (SYSV)، مرتبط ديناميكيًا (يستخدم libs المشتركة)، ملف $ مُجرد /dev/hda/dev/hda: ملف خاص بلوك (3/0) $ /dev/console/dev/console: حرف خاص (5/1) $ cp /etc/profile .$ tar zcf Profile.tar.gz Profile$ file Profile.tar.gzprofile.tar.gz: بيانات مضغوطة gzip، من Unix، آخر تعديل: الثلاثاء 4 يناير 18:53:53 2000$ mkfifo fifo_test$ ملف fifo_testfifo_test: fifo (الأنبوب المسمى)
رؤية المزيد من الاستخدام
ملفدليل القيادة، حول
ملفلمعرفة مبدأ تنفيذ الأمر، يرجى الرجوع إلى
سحردليل (انظر
/etc/file/magicملف، فهم ما هو الملف
الرقم السحريانتظر).
باعتباره نظامًا متعدد المستخدمين، يوفر Linux راحة كبيرة لمستخدمين متعددين لاستخدام نفس النظام، على سبيل المثال، بالنسبة للملفات الموجودة على النظام، فهو يميز المستخدمين المختلفين من خلال مالكيها من أجل تخصيص أذونات التشغيل الخاصة بهم لملفات مختلفة. لتسهيل الإدارة، يتضمن مالك الملف المستخدم الذي ينتمي إليه الملف ومجموعة المستخدمين التي ينتمي إليها الملف، لأنه يمكن أن ينتمي المستخدم إلى مجموعات متعددة. أولاً، دعونا نقدم بإيجاز إدارة المستخدمين والمجموعات في نظام التشغيل Linux.
يوفر Linux مجموعة من الأوامر لإدارة المستخدمين والمجموعات، مثل أوامر إنشاء المستخدمين
useraddو
com.groupadd، يستخدم لحذف المستخدمين
com.userdelو
com.groupdel،فضلاً عن ذلك،
passwdيتم استخدام الأمر لتغيير كلمة مرور المستخدم. بالطبع، يوفر Linux أيضًا تكوينين متطابقين، وهما
/etc/passwdو
/ الخ / المجموعةبالإضافة إلى ذلك، تقوم بعض الأنظمة أيضًا بوضع كلمة المرور بشكل منفصل في ملف التكوين
/ الخ / الظلوسط. يرجى الرجوع إلى المعلومات التالية للتعرف على تفاصيل استخدامها. ولن يتم تقديمها هنا إلا بعض العلاقات بين الملفات والمستخدمين.
$ chown اسم المستخدم: اسم ملف اسم المجموعة
إذا كنت تريد تعديل مالكي جميع الملفات في الدليل بشكل متكرر، فيمكنك إضافة
-رخيارات.
من بنية الملف المدرجة في بداية هذا القسم، يمكننا أن نرى أن هناك ملف user
بطاقة تعريفوالمجموعة
بطاقة تعريفمعلومات، ولكن
ليرة سورية -لتظهر النتيجة اسم المستخدم ومعلومات اسم المجموعة كيف يتم تحقيق ذلك؟ دعونا نلقي نظرة أولا
-ننتيجة:
$ ls -n Regular_file-rw-r--r-- 1 0 0 115 2007-12-07 23:45 Regular_file$ ls -l Regular_file-rw-r--r-- 1 root root 115 2007-12-07 23:45 الملف العادي
كما ترون،
ليرة سورية -نتم عرض المستخدمين
بطاقة تعريفوالمجموعة
بطاقة تعريف،و
ليرة سورية -لوتظهر أسمائهم. تذكر ملفي التكوين المذكورين أعلاه
/etc/passwdو
/ الخ / المجموعةملف؟ يقومون بتخزين المستخدمين على التوالي
بطاقة تعريفواسم المستخدم، المجموعة
بطاقة تعريفالعلاقة المقابلة مع اسم المجموعة، لذلك من السهل التفكير فيها
ليرة سورية -لكيف يمر الأمر عبر بنية الملف عند تنفيذه
بطاقة تعريفتجد المعلومات معلومات الاسم المقابلة لها. إذا كنت تريد أن تكون على حق
ليرة سورية -للفهم أفضل لتنفيذ الأمر، يمكنك استخدام
Straceتتبع لمعرفة ما إذا كان يقرأ كلا ملفي التكوين.
$ strace -f -o strace.log ls -l Regular_file$ cat strace.log |.egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
يوضح:
Straceيمكن استخدامها لتتبع مكالمات وإشارات النظام. مثل
gdbمثل الأدوات القوية الأخرى، فهو يعتمد على النظام
ptraceتنفيذ استدعاء النظام.
في الواقع، ليس من الجيد تقديم المالك والأذونات بشكل منفصل، لأن الجمع بين الاثنين فقط يجعل نظام متعدد المستخدمين ممكنًا، وإلا فإنه من المستحيل عزل عمليات المستخدمين المختلفين في ملف معين، وبالتالي فإن عملية الملف يتم تقديم الأذونات أدناه.
من
ليرة سورية -لفي آخر 9 أحرف من العمود الأول لنتيجة الأمر، يمكنك رؤية معلومات مشابهة لهذه
rwxr-xr-xوالتي تتوافق مع بنية الملف
st_modeجزء(
st_modeيحتوي على جزأين: معلومات نوع الملف ومعلومات إذن الملف). ويمكن تقسيم هذا النوع من المعلومات إلى ثلاثة أجزاء، وهي
wx,
rx,
rx، يتوافق على التوالي مع أذونات التشغيل للمستخدم والمجموعة والمجموعات الأخرى على الملف الذي ينتمي إليه الملف
wxأي واحد منهم يعني قابل للقراءة والكتابة والتنفيذ، إذا
-يشير إلى أنه لا يوجد مثل هذا الإذن. في المقابل، يمكن تمثيله بالنظام الثماني، مثل
rwxr-xr-xيمكن التعبير عنها بالرقم الثنائي 111101101، والرقم الثماني المقابل هو 755. ولهذا السبب، هناك العديد من الطرق لتعديل أذونات تشغيل الملفات، ويمكن القيام بذلك جميعًا من خلالها
chmodأمر للتعديل.
على سبيل المثال، ضع
Regular_fileقم بتعديل أذونات الملف لتكون قابلة للقراءة والكتابة والتنفيذ من قبل كافة المستخدمين، أي،
com.rwxrwxrwx، يمكن أيضًا التعبير عنها بالرقم 111111111، وترجمته إلى الرقم الثماني، وهو 777. يمكن تعديل هذا الإذن بطريقتين.
$ chmod a+rwx Regular_file
أو
$ شمود 777 Regular_file
يوضح:
أيشير إلى المستخدم المستخدم. إذا كنت تريد فقط منح المستخدم أذونات القراءة والكتابة والتنفيذ، فيمكنك ذلك
أاستبدل ب
ش؛و
+ما عليك سوى إضافة أذونات، وعلى العكس من ذلك، إذا كنت تريد إزالة إذن معين، فاستخدمه
-،و
wxوهو يتوافق مع قابل للقراءة والكتابة والتنفيذ. رؤية المزيد من الاستخدام
chmodمساعدة الأوامر.
في الواقع، بالإضافة إلى هذه الأذونات، هناك إذنان آخران يتعلقان بالأمن، وهما
setuid/setgidوالتحكم في القراءة فقط، وما إلى ذلك.
إذا تم تعيين ملف (برنامج أو أمر).
setuid/setgidالأذونات، ثم سيكون المستخدم قادرا على ذلك
جذرلذلك، قد يؤدي ذلك إلى مخاطر أمنية؛ إذا تم تعيين أذونات القراءة فقط للملف، فسيكون لدى المستخدم أذونات قابلة للقراءة فقط للملف، مما يتجنب مواقف مثل
جمهورية مقدونيا -RFالعملية "البغيضة" تجلب بعض البركات.
بشكل افتراضي، لا يسمح النظام للمستخدمين العاديين بالتنفيذ
passwdأمر، مرر
setuid/setgid، يمكن السماح للمستخدمين العاديين بتنفيذه.
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ su # قم بالتبديل إلى المستخدم الجذر وأضف "بت مثبت" $ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$exit$ passwd # يمكن للمستخدمين العاديين تعديل كلمات المرور الخاصة بهم عن طريق تنفيذ هذا الأمر.
يوضح:
setuidوsetgidيسمح Bit للمستخدمين العاديين بذلكجذريتم تشغيل دور المستخدم فقطجذربرنامج أو أمر لا يمكن تشغيله إلا عن طريق الحساب.
على الرغم من أن هذا يوفر الراحة للإدارة إلى حد ما، على سبيل المثال، تسمح العملية المذكورة أعلاه للمستخدمين العاديين بتعديل حساباتهم بدلاً من ذلك
جذرحساب للقيام بهذا العمل لكل مستخدم. عن
setuid/setgidللحصول على شرح أكثر تفصيلاً، يرجى الرجوع إلى آخر المعلومات الموصى بها.
مثال على إذن القراءة فقط: قفل الملفات المهمة (أضف بتًا غير قابل للتغيير [غير قابل للتغيير])) لتجنب العواقب الكارثية الناجمة عن عمليات التشغيل الخاطئة المختلفة (مثل
:``rm -rf)
$ chattr +i Regular_file$ lsattr Regular_file ---- i-------- Regular_file$ rm Regular_file # بعد إضافة البت غير القابل للتغيير، لا يمكنك تنفيذ أي أنشطة "تدميرية" على الملف rm: إزالة الكتابة المحمية الملف العادي `regular_file' yrm: لا يمكن إزالة `regular_file': العملية غير مسموح بها $ chattr -i Regular_file # إذا كنت تريد إجراء عمليات عادية عليه، فيمكنك إزالة هذا البت $ rm Regular_file
يوضح:
chattrيمكن استخدامها لتعيين أذونات خاصة على الملفات لمزيد من الاستخدام، يرجى الرجوع إلى
chattrيساعد.
بالنسبة للملفات العادية، يكون حجم الملف هو حجم محتوى الملف. كملف خاص، يقوم الدليل بتخزين معلومات الملفات المختلفة المنظمة في بنية الدليل. لذلك، يكون حجم الدليل ثابتًا بشكل عام له حد أعلى، وهو حجمه مقسومًا على طول اسم الملف. يتوافق "حجم ملف" ملف الجهاز مع أرقام الأجهزة الرئيسية والثانوية للجهاز، ويكون حجم ملف الأنبوب الشهير دائمًا 0 نظرًا لخصائص القراءة والكتابة الخاصة به. الارتباط الثابت (لا يمكن لملفات الدليل إنشاء روابط ثابتة) هو في الأساس نسخة كاملة من الملف الأصلي، لذا فإن حجمه هو حجم الملف الأصلي. الرابط الناعم هو مجرد
inode، يقوم بتخزين مؤشر إلى الملف الأصلي، بحيث يكون حجمه هو فقط عدد البايتات من اسم الملف الأصلي. بعد ذلك نقوم بزيادة الذاكرة من خلال العرض التوضيحي.
أمثلة على أحجام الملفات للملفات الأصلية والملفات المرتبطة:
$ echo -n abcde > Regular_file # اكتب 5 بايت إلى الملف العادي $ ls -l Regular_file*-rw-r--r-- 2 root root 5 2007-12-08 15:28 Regular_file-rw-r--r -- 2 جذر جذر 5 2007-12-08 15:28 Regular_file_hard_filerwxrwxrwx 1 جذر الجذر 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_filerwxrwxrwx 1 جذر الجذر 22 2007-12-08 15:21 Regular_file_soft_link_link -> Regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# ي} # الروابط الناعمة تخزن بالضبط عدد البايتات من اسم الملف الأصلي الذي يشير إلى 12 22حجم الملف المطابق لرقم الجهاز: رقم الجهاز الرئيسي والثانوي
$ ls -l hda1_block_dev_filebrw-r--r-- 1 جذر الجذر 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 جذر 1, 3 2007-12-07 21:43 null_char_dev_file
الملحق: الرئيسي
(الرئيسية)، مراترقم الجهاز (الثانوي) له وظائف مختلفة. عند فتح ملف جهاز، تحدد النواة رقم الجهاز الرئيسي (
رقم كبير) للعثور على برنامج التشغيل الذي تم تسجيله برقم الجهاز الرئيسي في النواة (يمكنك ذلك
القط /proc/devicesتحقق من المراسلات بين رقم برنامج التشغيل المسجل ورقم الجهاز الرئيسي)، ورقم الجهاز الثانوي (
عدد طفيف) إلى برنامج التشغيل نفسه من خلال النواة (راجع الفصل 10 من "The Linux Primer"). لذلك، بالنسبة للنواة، يمكن العثور على برنامج التشغيل المقابل للتعرف على جهاز من خلال رقم الجهاز الرئيسي، وبالنسبة للسائق، لكي تتمكن من الوصول إلى الجهاز بشكل أكثر تعقيدًا، مثل الوصول إلى أجزاء مختلفة من الجهاز (مثل الأجهزة مقسمة إلى أجزاء مختلفة من خلال أقسام) جزء، تظهر
hda1,
hda2,
hda3إلخ)، مثل توليد أرقام عشوائية بمتطلبات مختلفة (مثل
/dev/randomو
/dev/urandomانتظر).
حجم ملف الدليل لماذا هو هكذا؟ انظر إلى حجم بنية الدليل أدناه. تقوم كتلة ملف الدليل بتخزين الإدخالات لجميع أسماء الملفات في الدليل.
$ ls -ld Directory_file/drwxr-xr-x 2 جذر الجذر 4096 2007-12-07 23:14 Directory_file/
هيكل الدليل هو كما يلي:
struct dirent { long d_ino; off_t d_off;يمكن لسمة الوقت الخاصة بالملف تسجيل معلومات تشغيل المستخدم على الملف، وستوفر مرجعًا للمسؤول في إدارة النظام، وتحديد معلومات إصدار الملف، وما إلى ذلك. لذلك، عند قراءة المستندات، يوصى باستخدامها
قطةانتظر أدوات القراءة، ولا تستخدم أدوات التحرير
همةاذهب للقراءة، لأنه حتى لو لم يتم إجراء أي عمليات تعديل، بمجرد تنفيذ أمر الحفظ، سيتم تعديل معلومات الطابع الزمني للملف.
لا يتم تخزين اسم الملف في بنية الملف، ولكن في بنية الدليل الذي يوجد فيه. ولذلك، يجب أن تكون أسماء الملفات فريدة ضمن نفس مستوى الدليل.
بالنسبة للملفات، تشمل العمليات الشائعة الإنشاء والحذف والتعديل والقراءة والكتابة وما إلى ذلك. سيتم تحليل "الإجراءات التي تتم خلف الكواليس" المقابلة للعمليات المختلفة بالتفصيل في الفصل التالي "عمليات نظام ملفات نموذج برمجة Shell".
المقبسالملف هو نوع خاص من الملفات يمكن إنشاؤه من خلال لغة C ولن يتم تقديمه هنا (من غير المعروف ما إذا كان يمكن إنشاؤه مباشرة باستخدام الأوامر).
$ touch Regular_file # إنشاء ملف عادي $ mkdir Directory_file # إنشاء ملف دليل يمكن أن يحتوي على المزيد من الملفات $ ln Regular_file Regular_file_hard_link # رابط ثابت، نسخة كاملة من الملف الأصلي $ ln -s Regular_file Regular_file_soft_link # مشابه لمؤشر الملف , بالإشارة إلى الملف الأصلي $ mkfifo fifo_pipe # أو الذي تم إنشاؤه من خلال mknod fifo_pipe p، فإن FIFO يلبي خصائص الوارد أولاً يخرج أولاً $ mknod hda1_block_dev_file b 3 1 #حظر الجهاز $ mknod null_char_dev_file c 1 3 #جهاز الأحرف
يؤدي إنشاء ملف في الواقع إلى إضافة عقدة إلى نظام الملفات (
inode)، سيتم حفظ معلومات العقدة في جدول العقدة لنظام الملفات. وبعبارة أكثر وضوحًا، فهذا يعني أن ورقة (ملف) أو فرعًا جديدًا (ملف دليل، من النوع الذي تنمو عليه الأوراق) يمكن أن ينمو على شجرةشجرة
أمر أويتم تقديم الأمر ls` بشكل مرئي. من منظور الاستخدام اليومي، يمكن النظر إلى نظام الملفات على أنه شجرة مقلوبة، لأنها متشابهة جدًا ويسهل تذكرها.
الدليل الحالي لشجرة $
أو
$ ليرة سورية الدليل الحالي
الانطباع الأكثر مباشرة لحذف ملف هو أن الملف لم يعد موجودًا، ويمكن تحقيق ذلك أيضًا عن طريق
ليرة سوريةأو
شجرةيتم تقديم الأمر مثل قطع فرع من شجرة أو قطف ورقة. في الواقع، بعد الحذف، لا تختفي هذه الملفات على الفور، ولكن يتم وضع علامة عليها فقط للحذف، لذلك، إذا لم تكن هناك عمليات كتابة على القرص ذات صلة "لتغطية" مساحة القرص المقابلة بعد الحذف، فيمكن استعادتها من حيث المبدأ ، غالبًا ما يكون هذا العمل مزعجًا، لذا يرجى التفكير مرتين قبل حذف بعض البيانات المهمة، مثل القيام بمهمة النسخ الاحتياطي). لمعرفة الطريقة المقابلة، يرجى الرجوع إلى المعلومات اللاحقة.
الأوامر المحددة لحذف الملفات هي
جمهورية مقدونيا، إذا كنت تريد حذف الدلائل الفارغة، يمكنك استخدامها
rmdirطلب. على سبيل المثال:
$ rm Regular_file $ rmdir Directory_file $ rm -r Directory_file_not_empty
جمهورية مقدونياهناك معلمتان مهمتان للغاية، أحدهما هو
-و، هذا الأمر "همجي" للغاية ومن المحتمل أن يسبب الألم للعديد من مستخدمي Linux
-أنا، هذا الأمر "لطيف" للغاية، وربما يجعل العديد من المستخدمين يشعرون بالغضب. أي واحد تستخدمه يعتمد على "حالتك المزاجية". إذا قمت بعمل نسخ احتياطي مناسب أو اتخذت بعض الإجراءات الفعالة لتجنب العواقب الكارثية، فيمكنك أن تشعر براحة أكبر عند القيام بهذه المهام.
يشير نسخ الملف عادةً إلى نسخة "مؤقتة" من محتويات الملف. من خلال المقدمة في بداية هذا القسم، يجب أن نفهم أن الروابط الصلبة والروابط الإلكترونية للملفات هي أيضًا "نسخ للملفات" بمعنى ما، فالأولى تنسخ محتوى الملف بشكل متزامن، والأخيرة "تنسخ" بشكل متزامن في حالة القراءة والكتابة "محتوى الملف. على سبيل المثال:
يستخدم
cpأمر لنسخ الملفات بشكل طبيعي (يتطلب نسخ الدلائل
-صخيارات)
$ cp Regular_file Regular_file_copy$ cp -r diretory_file Directory_file_copy
إنشاء رابط ثابت (
وصلةو
ينسخالفرق هو أن الأخير يتم تحديثه بشكل متزامن، ولكن الأول ليس كذلك بعد النسخ، ولم يعد الاثنان ذا صلة).
$ ln Regular_file Regular_file_hard_link
إنشاء رابط ناعم
$ ln -s Regular_file regluar_file_soft_link
تعديل اسم الملف في الواقع يؤدي فقط إلى تعديل معرف اسم الملف. يمكن أن تمر
بالسياراتأمر لتعديل اسم الملف (أي إعادة التسمية).
$ mv Regular_file Regular_file_new_name
تحرير الملف هو في الواقع معالجة محتوى الملف، وهو ما يتوافق مع تحرير الملفات النصية العادية، ويتضمن ذلك بشكل أساسي قراءة محتوى الملف وكتابته وإلحاقه وحذفه وما إلى ذلك. يتم تنفيذ هذه المهام عادةً من خلال برامج تحرير متخصصة، مثل برامج تحرير سطر الأوامر.
همة,
ايماكسوالواجهة الرسومية
تحرير، كيديتانتظر. إذا كان الأمر يتعلق ببعض الملفات المحددة، فستكون هناك أدوات خاصة للتحرير والمعالجة، مثل برامج معالجة الصور
الأعرج، برنامج تحرير المستندات
أوبن أوفيسانتظر. تحتوي هذه الأدوات عمومًا على برامج تعليمية مخصصة.
فيما يلي مقدمة مختصرة لعمليات التحرير الشائعة للملفات من خلال إعادة التوجيه في نظام Linux.
إنشاء ملف والكتابة
abcde
$ echo abcde > new_regular_file
أضف سطرًا آخر إلى الملف أعلاه
abcde
$ echo abcde >> new_regular_file
قراءة سطر الملف سطراً
$ أثناء قراءة LINE؛ تم تنفيذ echo $LINE;
نصيحة: إذا كنت تريد تنفيذ متغير سلسلة يحتوي على إعادة توجيه كأمر، فاستخدم
تقييمالأمر، وإلا فلا يمكن تفسير إعادة التوجيه. على سبيل المثال،
$ redirect=echo abcde >test_redirect_file$ $redirect #Here > ستتم طباعته كحرف > بدلاً من تفسيره على أنه إعادة توجيه abcde >test_redirect_file$ eval $redirect #This سوف يفسر > على أنه قطة $ إعادة توجيه test_redirect_fileabcde
يهدف ضغط الملفات وفك ضغطها إلى تسهيل نقل محتوى الملف بمعنى معين، ولكن قد يكون له أيضًا بعض الاستخدامات المحددة، مثل ملفات صور kernel ونظام الملفات، وما إلى ذلك. (لمزيد من المعرفة ذات الصلة، يرجى الرجوع إلى المواد اللاحقة).
فيما يلي بعض طرق الضغط وإلغاء الضغط الشائعة:
قطران
$ tar -cf file.tar file #Compress $ tar -xf file.tar #Decompress
gz
ملف $ gzip -9 ملف $ gunzip
tar.gz
$ tar -zcf file.tar.gz file $ tar -zxf file.tar.gz
bz2
ملف $bzip2 ملف $bzip2
tar.bz2
$ القطران -jcf file.tar.bz2 الملف $ القطران -jxf file.tar.bz2
من العرض أعلاه، ينبغي أن يكون واضحا جدا
قطران,
بزيب2,بونزيب2,
غزيب,com.gunzip
هل هو دور القيادة؟ إذا لم يكن الأمر واضحًا بعد، فافعل المزيد وقارن بعض الأوامر المذكورة أعلاه وتحقق من الأدلة الخاصة بها:رجل القطران...
يشير البحث عن الملفات إلى العثور على موقع الملفات ذات سمات معينة في نظام الملفات في تسلسل هرمي معين للدليل. إذا تم توسيع هذا الموقع ليشمل الشبكة بأكملها، فيمكن التعبير عنه بـ
عنوان URLالعنوان، لعنوان محلي، يمكن التعبير عنه كـ
الملف: //+المسار المحلي. يبدأ المسار المحلي في نظام Linux بـ
/للبدء، على سبيل المثال، يمكن تمثيل الدليل الرئيسي لكل مستخدم على النحو التالي:
الملف:///المنزل/. يقدم ما يلي فقط بعض طرق البحث عن الملفات المحلية.
يجديوفر الأمر طريقة بحث "في الوقت المناسب" بناءً على طلب المستخدم، حيث يقوم باجتياز كافة الملفات الموجودة في التسلسل الهرمي للدليل المحدد حتى يتم العثور على الملف المطلوب. و
updateb+locateيوفر استراتيجية بحث "سريعة"،
محدثبتحديث وإنشاء قاعدة بيانات الملفات المحلية، في حين
تحديد موقعابحث في قاعدة البيانات هذه حسب اسم الملف للعثور بسرعة على الملف المقابل. الأول يدعم البحث من خلال سمات الملفات المختلفة ويوفر واجهة (
-تنفيذيالخيار) يستخدم لمعالجة الملفات التي تم البحث عنها. لذلك، فهو يوفر راحة كبيرة لمحبي البرامج النصية ذات "الأمر الفردي"، ولكن لعمليات البحث المستندة إلى أسماء الملفات،
updateb+locateستعمل هذه الطريقة على تحسين كفاءة البحث بشكل كبير. وفيما يلي مقدمة مختصرة عن هاتين الطريقتين:
يجدعرض لاستخدام الأوامر الأساسية
$ find ./ -name *.c -o -name *.h # البحث عن جميع ملفات لغة C، -o هو أو $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# انقل الملفات الموجودة إلى c_files. هذا الاستخدام مثير للاهتمام.يمكن استخدام الاستخدام أعلاه
com.xargsاستبدال الأوامر
$ find ./ -name *.c -o -name *.h |، على سبيل المثال، أحتاج إلى الإصلاح
قم بتغيير كافة لاحقات أسماء الملفات إلى أحرف كبيرة.
$ find ./ -name *.c -o -name *.h |. xargs -i ./toupper.sh '{}' ./c_files/toupper.shإنه ملف معالجة نحتاج إلى تنفيذه لتحويل الأحرف الصغيرة إلى أحرف كبيرة. التنفيذ المحدد هو كما يلي:
$ cat toupper.sh#!/bin/bash# سيتم توسيع {} إلى السطر الحالي وسيصبح الوسيطة الأولى لهذا البرنامج النصيFROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COMupdateb+locateمظاهرة الاستخدام الأساسي
$ updateb #تحديث المكتبة $ تحديد موقع find*.gz # البحث عن جميع حزم gz المضغوطة التي تحتوي على سلسلة البحث
في الواقع، بالإضافة إلى الأمرين المذكورين أعلاه، هناك أيضًا أدوات للبحث عن الأوامر في Linux:
أيّو
أين، يُستخدم الأول لإرجاع المسار الكامل لأمر معين، بينما يُستخدم الأخير لإرجاع أمر معين، أو ملف مصدر، أو
المسار إلى ملف الرجل. على سبيل المثال، تجدالمسار المطلق لأمر find`:
$ الذي يجد/usr/bin/find$ حيث يوجد findfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
تجدر الإشارة إلى أنه إذا كنت تريد البحث عن ملف بناءً على محتواه، إذن
يجدو
updateb+locateإلى جانب
أيّ,
أينلا يوجد شيء يمكننا القيام به، البديل هو
grep,
سيدانتظر الأمر، تتم إضافة الأول
-صفي المستقبل، يمكن استخدام المعلمة للبحث عن محتوى الملف المحدد في الملفات الموجودة في الدليل المحدد، ثم استخدامها
-أنابعد تمرير المعلمات، يمكن استبدال محتوى الملف. لقد تم تقديم الاستخدام الأساسي لها بالتفصيل في الفصول السابقة ولن يتم تكراره هنا.
تجدر الإشارة إلى أن هذه الأوامر مفيدة جدًا لعمليات الملفات. إنهم يلخصون بنية نظام الملفات إلى حد ما، مما يبسط تشغيل نظام الملفات بأكمله في تشغيل ملف واحد. إذا أخذ ملف واحد فقط جزء النص، فسيتم تحويله في النهاية إلى عملية السلسلة السابقة ما تمت مناقشته في القسم السابق. من أجل الحصول على فهم أوضح للهيكل التنظيمي للملفات والعلاقات بين الملفات، سيتم مناقشة نظام الملفات بعمق في القسم التالي.
النظر إلى نظام الملفات الظاهري Linux من ملف I/O
تحليل نظام ملفات لينكس
نظام الملفات "Linux Core" الفصل التاسع
برامج تشغيل الأجهزة Linux، الإصدار الثالث
نصائح: بعض النصائح لإعادة توجيه الإدخال/الإخراج في Linux
تحميل وتحليل وتحليل الارتباط الديناميكي لملف ELF في Linux ضمن نظام Intel الأساسي:
الجزء 1,
الجزء2
تقنية تصحيح أخطاء البرنامج النصي Shell
ملخص تنسيق ملف ELF وعملية تنفيذ تحميل البرنامج
برمجة لغة C في نظام Linux - عمليات الملفات
جزء تشغيل الملف من برمجة لغة C في نظام Linux
معيار التسلسل الهرمي لنظام الملفات
تعلم كيفية استعادة ملفات Ext3 المحذوفة في نظام Linux
استخدم mc لاستعادة الملفات المحذوفة
مبدأ Linux ext3 للحذف العرضي والاسترداد
قائمة كاملة بطرق الضغط/إلغاء الضغط في Linux
كل شيء هو بايت
ونظرًا لأهمية الملفات وأنظمة الملفات، سيتم تقديمها في ثلاثة أقسام فرعية: الملفات وأنظمة الملفات والبرامج والعمليات. في قسم "الملف"، نقدم بشكل أساسي السمات الأساسية والعمليات المنتظمة للملفات. في قسم "نظام الملفات"، سنناقش بعمق الأجزاء المختلفة لنظام ملفات Linux (بما في ذلك بنية نظام ملفات Linux و الهيكل العام لنظام ملفات معين، ومبدأ عمل برنامج التشغيل الأساسي)، وسيناقش قسم "البرامج والعمليات" على وجه التحديد المحتوى ذي الصلة للملفات القابلة للتنفيذ (بما في ذلك أنواع البرامج المختلفة، وعمليات التحميل والتنفيذ، والتفاعلات بين الملفات المختلفة). العمليات [أنابيب التحكم والأنابيب غير المسماة، اتصالات الإشارة]، التحكم في العمليات، وما إلى ذلك)
من الضروري مناقشة معنى حجم الدليل بوضوح، بالإضافة إلى ذلك، من الأفضل أخذ جميع عمليات الملف التقليدية في الاعتبار، بما في ذلك قراءة الملف، وكتابته، وتنفيذه، وحذفه، وتعديله، ونسخه، وضغطه/إلغاء ضغطه، وما إلى ذلك.
لقد عدت للتو من شنغهاي في فترة ما بعد الظهر. واكتشف أن شنغهاي مدينة جميلة. عندما عدت ، بدأت في فرز هذه المدونة التي فاتني لمدة أسبوعين بسبب المنافسة.
في 15 ديسمبر ، أضف جزء بحث الملف