نستخدم المسارات المطلقة والنسبية في وحدة التحكم. أساسيات Linux: مقدمة عن أمثلة bash باستخدام المسارات النسبية

لقد وصفت مؤخرًا أوامر للتنقل عبر الدلائل في الجهاز لينكس... لذلك قررت أن أكمل القصة حول الأوامر الموجودة في وحدة التحكم. لذلك يبدو أن الحركات مرتبة. الآن أريد أن أفكر بمزيد من التفصيل في ماهية المسارات إلى الدلائل الموجودة في وحدة التحكم.

لنبدأ بإلقاء نظرة على المسارات الأكثر شهرة لملفاتنا وأدلةنا ، وهي المسارات المطلقة. افتح Terminal وأصدر أمرًا يطبع المسار الكامل إلى الدليل الرئيسي الخاص بك. لقد تحدثت عن هذا الفريق مؤخرًا ، هنا. يقدم pwd:


: ~ $ pwd
/ الصفحة الرئيسية / دانتي


كما ترى ، قام أمر وحدة التحكم هذا بطباعة المسار الكامل بدءًا من الدليل الجذر. لقد وصفت للتو مثل هذه الحركة في الدلائل مؤخرًا ، هذه الحركة باستخدام مسار مطلق. لكن هذه ليست كل الاحتمالات للتنقل عبر فئات نظام التشغيل لدينا. في نظام التشغيل لينكس، هناك أيضًا إمكانية استخدام المسارات النسبية.

المسارات النسبية في وحدة التحكم ، حساب الفئات المتعلقة بالفئة التي أنت فيها. يمكن استخدامها مع ".." تم الإشارة إلى نقطتين أمام المجلد الذي نريد الانتقال إليه. دعنا نذهب إلى مكان ما في نظام التشغيل الخاص بنا. على سبيل المثال في المجلد usrوفحص محتوياته باستخدام الأمر ls.

[البريد الإلكتروني محمي]: ~ $ cd / usr
[البريد الإلكتروني محمي]: / usr $ ls

[البريد الإلكتروني محمي]: / usr $

هنا نرى قائمة الدلائل المتاحة. دعنا ننتقل الآن إلى الدليل " شارك».

[البريد الإلكتروني محمي]: ~ $ cd / usr / share


لذا ، نحن الآن في هذه الفئة / البيرة / حصةكما نرى. دعنا ننتقل الآن إلى فئة على قدم المساواة مع الفئة التي نحن فيها. على سبيل المثال ، في فئة " محلي". يمكن القيام بذلك بمسار مطلق مثل هذا.

[البريد الإلكتروني محمي]: ~ $ cd / usr / local

[البريد الإلكتروني محمي]: / usr / share $ pwd
/ البيرة / حصة
[البريد الإلكتروني محمي]: / usr / share $


كما ترون ، لقد عرضت لك في وحدة التحكم المسار الكامل للمكان الذي تتواجد فيه. نحن نعلم أن الدليل " محلي"على نفس المستوى مع الدليل" شارك"ويمكننا استخدام أمر مثل هذا.

[البريد الإلكتروني محمي]: / usr / share $ cd ../local
[البريد الإلكتروني محمي]: / usr / local $


كما ترى ، أصبح أمر الاستعلام أسهل بكثير. ولكن هذا يحدث فقط إذا كنت تتذكر الدلائل الموجودة على نفس المستوى مع دليل العمل الخاص بك ، ولا أتذكر دائمًا الدلائل الأخرى في وحدة التحكم.

للانتقال إلى الدليل التالي ، ما عليك سوى إدخال الأمر في وحدة التحكم المتعلقة بدليل العمل الخاص بك. لهذه الأغراض ، استخدم بدلاً من ذلك ".." نقطتان، "." نقطة واحدة وستنتقل بالنسبة إلى الدليل في وحدة التحكم التي أنت فيها في الوقت الحالي. دعنا نعود إلى الدليل / usrوانظر مرة أخرى ما هو هناك.

[البريد الإلكتروني محمي]: / usr / local $ cd / usr
[البريد الإلكتروني محمي]: / usr $ ls
تتضمن ألعاب bin lib local sbin share src
[البريد الإلكتروني محمي]: / usr $


دعنا ننتقل الآن إلى الدليل " شارك»نسبة إلى الدليل الذي نحن فيه الآن. للقيام بذلك ، أدخل في وحدة التحكم

[البريد الإلكتروني محمي]: / usr $ cd ./local
[البريد الإلكتروني محمي]: / usr / local $


كما ترى ، يمكن أن يؤدي استخدام المسارات النسبية إلى تقصير كبير للأوامر التي تدخلها في وحدة التحكم. لينكس.

جميع الملفات في Linux لها عنوان محدد في نظام الملفات يمكننا من خلاله الوصول إليها باستخدام مدير الملفات أو أدوات وحدة التحكم. هذا موضوع بسيط إلى حد ما ، لكن العديد من المبتدئين يجدون صعوبة في ذلك.

في الملاحظة القصيرة اليوم ، سننظر في ماهية المسار إلى ملف Linux ، وما يمكن أن يكون ، وكيفية كتابته بشكل صحيح ، وأكثر من ذلك بكثير. إذا واجهت صعوبات في هذا سابقًا ، فبعد قراءة المقال سيصبح كل شيء واضحًا تمامًا.

مسارات الملفات في Linux

يختلف نظام ملفات Linux اختلافًا كبيرًا عن نظام Windows. لن نفكر في هيكلها ، لقد تم ذلك في وقت سابق. سنركز على العمل مع الملفات.

الاختلاف الأكثر أهمية هو أن عنوان الملف لا يبدأ من محرك الأقراص ، على سبيل المثال ، C: \ أو D: \ كما يحدث في Windows ، ولكن من الجذر ، دليل نظام الجذر الذي يتصل به جميع الآخرين. عنوانه - /. وهنا من الضروري أن نقول عن العناوين. تستخدم مسارات ملفات Linux الشرطة المائلة للأمام "/" لفصل المجلدات في العنوان ، وهذا يختلف عما اعتدت رؤيته على Windows - \.

على سبيل المثال ، إذا كان المسار الكامل لملف موجود على سطح المكتب في نظام التشغيل Windows يشبه C: \ Users \ Sergiy \ Desktop \ ، فسيكون مسار الملف على نظام التشغيل Linux ببساطة هو / home / sergiy / desktop /. حتى الآن ، كل شيء بسيط وواضح مع هذا. لكن المشاكل تستمر في الظهور.

يمكن أن يحتوي نظام التشغيل Linux على عدة أنواع من مسارات الملفات. لنلقِ نظرة على المسارات الموجودة في لينكس:

  • مسار لينكس الكامل والمطلق من جذر نظام الملفات- لقد رأيت هذا المسار بالفعل في المثال أعلاه ، فهو يبدأ من الجذر "/" ويصف المسار بالكامل إلى الملف ؛
  • مسار لينكس النسبيهو مسار الملف بالنسبة للمجلد الحالي ؛ غالبًا ما تسبب هذه المسارات ارتباكًا.
  • المسار المتعلق بالمجلد الرئيسي للمستخدم الحالي.- المسار في نظام الملفات ، ليس فقط من الجذر ، ولكن من مجلد المستخدم الحالي.

دعونا الآن نلقي نظرة فاحصة على كيف تبدو هذه المسارات على لينكس ، ونحلل أيضًا بعض الأمثلة لتوضيحها تمامًا. للتوضيح ، سنستخدم الأداة المساعدة ls المصممة لعرض محتويات الدلائل.

على سبيل المثال ، لدينا دليل مثل هذا في المجلد الرئيسي لدينا به أربعة ملفات:

هذه هي الطريقة التي سيبدو بها مسار لينكس الكامل لأحد الملفات:

ls / home / sergiy / tmp / file1

هذا بالفعل مسار لينكس نسبي يبدأ من المجلد الرئيسي ، ويشار إليه بواسطة ~ /. لاحظ ، ليس ~ ، ولكن ~ /. ثم يمكنك بالفعل تحديد المجلدات الفرعية ، في حالتنا tmp:

حسنًا ، أو مسار الملف في لينكس ، بالنسبة للمجلد الحالي:

يشير الارتباط الأول إلى المجلد الحالي (.) ، بينما يشير الارتباط الثاني (..) إلى المجلد الأعلى بمستوى واحد. هذا يفتح إمكانيات أوسع للتنقل عبر الفهارس. على سبيل المثال ، للإشارة إلى ملف في المجلد الحالي ، يمكنك استخدام الإنشاء:

لا فائدة منه عند عرض محتويات الملف. لكنها مهمة للغاية عند تنفيذ البرنامج. نظرًا لأنه سيتم البحث عن البرنامج أولاً في بيئة PATH ، وبعد ذلك فقط في هذا المجلد. لذلك ، إذا كنت بحاجة إلى تشغيل برنامج موجود في المجلد الحالي وتم تسميته تمامًا مثل البرنامج الموجود في الدليل / bin ، فلن يعمل أي شيء بدون مرجع صريح يحتاج إلى البحث عن الملف في المجلد الحالي مجلد.

يمكن مواجهة مثل هذه التركيبات في كثير من الأحيان عند تجميع البرامج. يمكنك استخدام كل هذه الرموز والمسارات لملفات لينكس ليس فقط في المحطة ، ولكن أيضًا في أي مدير ملفات ، والذي يمكن أن يكون مناسبًا للغاية.

لكن محطة Linux أكثر قوة. يمكنك استخدام أحرف الاستبدال البسيطة مباشرة في عناوين الملف أو الدليل. على سبيل المثال ، يمكنك سرد كافة الملفات التي تبدأ بـ f:

أو يمكنك حتى البحث ليس فقط في مجلد tmp ، ولكن في أي مجلد فرعي من المجلد الرئيسي الخاص بك:

وكل هذا سينجح ، ربما لا يكون دائمًا ضروريًا وعمليًا. لكن في مواقف معينة يمكن أن يكون مفيدًا جدًا. يتم تنفيذ هذه الوظائف على مستوى غلاف Bash ، بحيث يمكنك استخدامها في أي أمر. تبحث القشرة في عدد الملفات التي تم العثور عليها وتستدعي أمرًا لكل ملف.

الاستنتاجات

هذا كل شئ. أنت الآن تعرف كل ما تحتاجه ليس فقط لكتابة المسار إلى ملف لينكس بشكل صحيح ، ولكن أيضًا تنفيذ إجراءات أكثر تعقيدًا ، على سبيل المثال ، البحث عن الملفات أو التنقل في الدلائل باستخدام الأمر cd. إذا كان لديك أي أسئلة ، اسأل في التعليقات!

إدخالات ذات صلة:


بعد قراءة هذا المقال ، سوف تتعلم ما هو سحق(مترجم أوامر لينكس القياسي) ، تعرف على كيفية التعامل مع الأوامر القياسية: ls, cp, م... فهم الغرض من inodes والروابط الثابتة والرمزية والمزيد.

هذا البرنامج التعليمي مخصص لأولئك الجدد على Linux ولأولئك الذين يرغبون في مراجعة أو تحسين فهمهم لمبادئ Linux الأساسية مثل نسخ الملفات ونقلها وإنشاء الروابط واستخدام أوامر Linux القياسية جنبًا إلى جنب مع عمليات إعادة التوجيه والأنابيب. في هذه المقالة سوف تجد العديد من الأمثلة لتوضيح المواد المقدمة. بالنسبة للمبتدئين ، ستكون معظم المعلومات جديدة ، وبالنسبة للمستخدمين الأكثر تقدمًا ، يمكن أن تكون هذه المواد دليلاً ممتازًا لتلخيص المعارف والمهارات الحالية.

مقدمة في bash

الصدف

إذا كنت تستخدم Linux ، فأنت تعلم أنه بعد تسجيل الدخول ، يتم الترحيب بك من خلال موجه الأوامر. على سبيل المثال هذا:

\$

إذا تم تحميل الغلاف الرسومي بعد تسجيل الدخول ، فلكي تصل إلى مترجم الأوامر ، فأنت بحاجة إلى بدء المحاكي الطرفي (gnome-terminal ، xfce4-terminal ، konsole ، xterm ، rxvt ...) أو التبديل إلى أحد المحطات الافتراضية عن طريق النقر كنترولبديلF1أو كنترولبديلF2إلخ.

قد يختلف موجه الأوامر على جهاز الكمبيوتر الخاص بك عما هو موضح في المثال. يمكن أن يحتوي على اسم المستخدم واسم الكمبيوتر واسم دليل العمل الحالي. على الرغم من كل هذه الاختلافات ، فإن البرنامج الذي يطبع هذه المطالبة يسمى " الصدف"(شل) ، وعلى الأرجح أن غلاف الأوامر هو برنامج يسمى سحق.

هل تدير باش؟

يمكنك التحقق مما إذا كان bash يعمل بالأمر التالي:

\$ صدى \ $ شل/ بن / باش

إذا تلقيت خطأً نتيجة لتنفيذ هذا الأمر أو كانت مخرجاته مختلفة عن تلك الموجودة في المثال ، فمن المحتمل أن نظامك لا يستخدم bash كقذيفة أوامر. على الرغم من ذلك ، ستكون معظم المواد ذات صلة ، لكننا ما زلنا نوصي بالتبديل إلى bash. يمكن القيام بذلك (إذا تم تثبيت bash على النظام) باستخدام الأمر:

\$ سحق

ما هو باش

باش (اختصار لـ " ب Ourne- أيكسب ش ell ") هو مترجم الأوامر القياسي في معظم أنظمة Linux. تشمل مسؤولياته معالجة وتنفيذ الأوامر التي يتحكم بها المستخدم في الكمبيوتر. بمجرد الانتهاء من عملك ، يمكنك إنهاء عملية shell. بعد الضغط على المفاتيح كنترولد، فرق خروجأو تسجيل خروجتنتهي عملية shell وتطالبك الشاشة باسم المستخدم وكلمة المرور مرة أخرى.

باستخدام "cd"

لنبدأ في استخدام bash للتنقل في نظام الملفات. أولاً ، اكتب الأمر التالي:

$ قرص مضغوط /

باستخدام هذا الأمر ، أخبرنا bash أننا نريد الانتقال إلى الدليل الجذر - / ... يتم تنظيم جميع الأدلة في النظام في هيكل شجرة و / هذه بدايته (أو جذره). فريق قرص مضغوطيعمل على تغيير دليل العمل الحالي.

مسارات

لمعرفة مكانك في نظام الملفات في الوقت الحالي (دليل العمل الحالي) ، اكتب:

\$ pwd /

في المثال أعلاه / - حجة الأمر قرص مضغوط- اتصل طريق... هذا هو المكان الذي نريد الانتقال إليه في نظام الملفات. في هذه الحالة / - مسار مطلق ، مما يعني أن المسار محدد بالنسبة إلى الدليل الجذر.

المسارات المطلقة

فيما يلي بعض الأمثلة على المسارات المطلقة

/ dev / usr / usr / bin / usr / local / bin

كما لاحظت ، فإن كل هذه المسارات توحدها حقيقة أنها بدأت بها / ... بتحديد المسار / usr / local / bin كوسيطة للأمر قرص مضغوطنقول لها أن تذهب إلى الدليل الجذر / ، ثم إلى دليل usr ، ثم إلى local و bin. تبدأ المسارات المطلقة دائمًا بـ /

المسارات النسبية

النوع الثاني من المسارات يسمى المسارات النسبية. سحق، فريق قرص مضغوطوالأوامر الأخرى تحسب هذه المسارات بالنسبة إلى الدليل الحالي. لا تبدأ المسارات النسبية بـ / ... على سبيل المثال ، إذا كنا في / usr

\$ مؤتمر نزع السلاح / الدولار

ثم يمكننا الانتقال إلى / usr / local / bin باستخدام المسار النسبي

\$ قرص محلي / بن \$ pwd/ usr / local / bin

استخدام ".."

يمكن أن تحتوي المسارات النسبية على دليل واحد أو أكثر «..» ... تشير ".." إلى الدليل الأصل لدليل العمل الخاص بنا. مثال:

\$ pwd/ usr / local / bin \ $ قرص مضغوط .. \$ pwd/ البيرة / المحلية

كما ترون ، فإن الأمر قرص مضغوط .."يأخذنا مستوى أعلى."

يمكن إضافة .. إلى مسار نسبي. سيسمح لنا هذا بالانتقال إلى دليل في نفس المستوى الذي نحن فيه. مثال:

\$ pwd/ usr / local \ $ cd ../share \$ pwd/ البيرة / حصة

أمثلة باستخدام المسارات النسبية

يمكن أن تكون المسارات النسبية صعبة للغاية. وهنا بعض الأمثلة. لا تظهر نتيجة تنفيذ الأمر ، حاول تحديد الدليل الذي ستجد نفسك فيه باستخدام bash.

\$ القرص المضغوط / بن \$ القرص المضغوط ../usr/share/zoneinfo \$ cd / usr / X11R6 / bin \$ القرص المضغوط ../lib/X11 \$ cd / usr / bin \$ القرص المضغوط ../bin/../bin

عمل اخراجي "."

قبل إنهاء المحادثة حول الفريق قرص مضغوطهناك عدد قليل من الأشياء لذكرها. أولا ، هناك دليل خاص آخر «.» الذي يشير إلى الدليل الحالي. يستخدم هذا الدليل لتشغيل الملفات القابلة للتنفيذ الموجودة في الدليل الحالي.

\$ ./myprog

في المثال الأخير ، myprog هو ملف قابل للتنفيذ يقع في الدليل الحالي والذي سيتم تشغيله للتنفيذ.

القرص المضغوط والدليل الرئيسي للمستخدم

من أجل الذهاب إلى الدليل الرئيسي الخاص بك ، تحتاج إلى الكتابة

\$ قرص مضغوط

بدون جدال ، سيأخذك القرص المضغوط إلى دليل منزلك. عادةً ما يكون الدليل الرئيسي / الجذر للمستخدم المتميز ، و / home / username / للمستخدمين العاديين. ولكن ماذا لو أردنا الإشارة إلى ملف معين موجود في الدليل الرئيسي. على سبيل المثال ، كحجة للبرنامج "Myprog"؟ يمكنك كتابة:

\$ ./myprog /home/user/myfile.txt

ومع ذلك ، فإن استخدام مسارات الملفات المطلقة ليس مناسبًا دائمًا. يمكن إجراء نفس العملية باستخدام ~ - تيلدز:

\$ ./myprog ~ / myfile.txt

~ هو اسم خاص يشير في bash إلى الدليل الرئيسي للمستخدم.

الدلائل الرئيسية للمستخدمين الآخرين

ولكن ماذا لو احتجنا إلى الإشارة إلى ملف موجود في الدليل الرئيسي لمستخدم آخر؟ للقيام بذلك ، بعد التلدة ، تحتاج إلى تحديد اسم هذا المستخدم. على سبيل المثال ، للإشارة إلى ملف fredsfile.txt الموجود في الدليل الرئيسي للمستخدم fred:

\$ ./myprog ~ fred / fredsfile.txt

أوامر لينكس

مقدمة في ls

ربما تكون بالفعل على دراية بالأمر lsوالتي ، يتم استدعاؤها بدون وسيطات ، تعرض قائمة بالملفات المخزنة في دليل العمل:

\$ مؤتمر نزع السلاح / الدولار \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 تتضمن libexec Portage share tmp distfiles i686-linux info local portage.old src

إذا قمت بتحديد الخيار ، ستتمكن من رؤية جميع الملفات ، بما في ذلك الملفات المخفية (التي تبدأ أسماؤها بنقطة).

\$ ls -a... يتضمن bin gentoo-x86 مشاركة libexec Portage tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

قائمة مفصلة من الدلائل

بعد الأمر نفسه lsيمكن تحديد ملف أو مجلد واحد أو أكثر كوسيطة. إذا قمت بتحديد اسم ملف ، ثم الأمر lsسيعرض معلومات حول هذا الملف فقط. وإذا حددت اسم الدليل ، lsسيعرض جميع محتوياته. خيار "-L"أوامر lsيمكن أن يكون مفيدًا جدًا إذا كنت تريد معرفة المزيد من المعلومات التفصيلية عنها بالإضافة إلى أسماء الملفات (أذونات الملف ، واسم المالك ، ووقت آخر تعديل للملف وحجمه).

يوضح المثال التالي استخدام الخيار "-L"لعرض معلومات حول الملفات المخزنة في الدليل / usr

\$ ls -l / usr drwxr-xr-x 7 الجذر الجذر 168 Nov 24 14:02 X11R6 drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfiles lrwxrwxrwx 1 root root 9 ديسمبر 22 20:57 doc -> share / doc drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux drwxr-xr-x 4 جذر الجذر 96 نوفمبر 24 13:17 i686-pc-linux-gnu drwxr-xr-x 54 root root 5992 Dec 24 22:30 include lrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share / info drwxr-xr -x 28 جذر جذر 13552 ديسمبر 26 00:31 lib drwxr-xr-x 3 جذر الجذر 72 نوفمبر 25 00:34 libexec drwxr-xr-x 8 جذر الجذر 240 ديسمبر 22 20:57 محلي lrwxrwxrwx 1 جذر الجذر 9 ديسمبر 22 20 : 57 man -> share / man lrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86 / drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.old drwxr-xr-x 3 root 3096 ديسمبر 22 20:57 sbin drwxr-xr-x 46 root root 1144 Dec 24 15:32 share drwxr-xr-x 8 root root 328 Dec 26 00:07 src drwxr-xr-x 6 root root 176 Nov 24 14:25 ssl lrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

يعرض العمود الأول معلومات حول الأذونات لكل ملف في القائمة. (سأشرح لاحقًا أي حرف يشير إلى ماذا) يعرض العمود التالي عدد الروابط لكل عنصر من عناصر القائمة. العمودين الثالث والرابع هما المالك والمجموعة للملف ، على التوالي. العمود الخامس الحجم. السادس هو وقت آخر تعديل للملف ("وقت آخر تعديل" أو mtime). العمود الأخير هو اسم الملف أو الدليل (إذا كان رابطًا ، فحينئذٍ بعد –> "يرمز إلى اسم الكائن الذي يشير إليه).

كيف ترى الدلائل فقط

في بعض الأحيان هناك حاجة للنظر في المعلومات حول الدلائل فقط ، وليس حول كافة محتوياتها. سيساعد الخيار في التعامل مع هذه المهمة '-د'الذي يخبر الأمر لعرض معلومات حول الدلائل فقط. مثال:

\$ ls -dl / usr / usr / bin / usr / X11R6 / bin ../share drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share drwxr-xr-x 17 root root 576 Dec 24 09:03 / usr drwxr-xr-x 2 root root 3192 Dec 26 12:52 / usr / X11R6 / bin drwxr-xr-x 2 root root 14576 Dec 27 08:56 / usr / bin

قائمة متكررة ومعلومات inode

عمل الخيار "-R"عكس العمل '-د'... يسمح لك بعرض معلومات حول الملفات في دليل بشكل متكرر. أولاً ، يتم عرض محتويات دليل المستوى الأعلى ، ثم يتم عرض محتويات جميع الأدلة الفرعية بدورها ، وهكذا. يمكن أن تكون مخرجات هذا الأمر طويلة جدًا ، لذلك لا نقدم مثالاً عنها ، ولكن يمكنك تجربتها بنفسك عن طريق كتابة " ls -R' أو ' ls -Rl‘.

وأخيرًا ، الخيار '-أنا'تُستخدم لعرض inodes لكل كائن نظام ملف.

\$ ls -i / usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 93892 portage 36737 ssl 70744 gentooib 5132 portage 1585

ما هي inodes؟

كل كائن نظام ملف (ملف ، دليل ...) له رقم فريد خاص به ، يسمى inode(رقم inode). قد تبدو هذه المعلومات تافهة ، لكن فهم وظيفة inodes سيساعدك على فهم العديد من العمليات على نظام الملفات. على سبيل المثال ، دعنا نلقي نظرة على «.» و «..» كروابط موجودة في كل دليل. لفهم ما هو الدليل «..» ، اكتشف inode للدليل / use / local

\$ ls -id / usr / local 5120 / دولار / محلي

كما ترى ، فإن inode الدليل / usr / local هو 5120. الآن دعنا نرى ما هو inode / usr / local / bin / .. يحتوي الدليل:

\$ ls -id / usr / local / bin / .. 5120 / البيرة / المحلية / بن / ..

اتضح أن inodes من الدلائل / usr / local و / usr / local / bin / .. هي نفسها! هذا يعني أنه تتم الإشارة إلى inode 5120 باسمين: / usr / local و / usr / local / bin / .. أي أنهما اسمان مختلفان لنفس الدليل. يشير كل inode إلى موقع معين على القرص.

يمكن أن يكون لكل inode أسماء كائنات نظام ملفات متعددة مرتبطة به. يُظهر عدد "المرادفات" للملف (كائنات نظام الملفات التي تشير إلى نفس inode) الرقم في العمود الثاني من " ls -l‘.

\$ ls -dl / usr / local drwxr-xr-x 8 جذر الجذر 240 ديسمبر 22 20:57 / usr / local

في هذا المثال ، يمكنك أن ترى (العمود الثاني) أن الدليل / usr / local تتم الإشارة إليه بواسطة 8 كائنات مختلفة لنظام الملفات. ها هي أسمائهم:

/ usr / local / usr / local /. / usr / local / bin / .. / usr / local / games / .. / usr / local / lib / .. / usr / local / sbin / .. / usr / local / share / .. / usr / local / src / ..

مكدير

دعونا نلقي نظرة على الأمر مكدير... إنه يعمل على إنشاء أدلة جديدة. يوضح المثال التالي إنشاء ثلاثة أدلة جديدة (tic ، tac ، toe) في الدليل / tmp

\$ cd / tmp $ mkdir تيك تاك تو

افتراضيا ، الأمر مكديرلا يمكن إنشاء بنية دليل متداخلة. لذلك ، إذا كنت بحاجة إلى إنشاء عدة أدلة متداخلة ( رائع) ، فسيتعين عليك استدعاء هذا الأمر ثلاث مرات واحدًا تلو الآخر:

\$ فاز mkdir / der / ful mkdir: لا يمكن إنشاء دليل "فاز / der / ful ": لا يوجد مثل هذا الملف أو الدليل \ $ فاز مكدير \$ فاز mkdir / دير \$ فاز mkdir / der / ful

يمكنك تبسيط هذه العملية بإضافة الخيار "-P"لأمر mkdir. يتيح لك هذا الخيار إنشاء بنية دليل متداخلة:

\$ mkdir -p سهل / ك / فطيرة

لمعرفة المزيد حول إمكانيات هذه الأداة المساعدة ، اقرأ التعليمات التي يستدعيها الأمر رجل مقدير... تتوفر المساعدة لجميع الأوامر الموجودة في هذا الدليل تقريبًا (على سبيل المثال رجل ل)، يستثني قرص مضغوطمنذ إنه مدمج في bash (لمثل هذه الأوامر ، يتم استدعاء المساعدة على النحو التالي: مساعدة cd)

لمس. اتصال. صلة

دعنا ننتقل إلى تعلم الأوامر cpو م، تستخدم لنسخ وإعادة تسمية ونقل الملفات والأدلة. ولكن قبل ذلك ، قم بإنشاء ملف فارغ في الدليل / tmp باستخدام الأمر لمس. اتصال. صلة:

\$ cd / tmp \$ لمس كوبيم

فريق لمس. اتصال. صلةيحدّث وقت آخر وصول إلى الملف (العمود السادس من إخراج الأمر ls -l) إذا كان موجودًا بالفعل أو يقوم بإنشاء ملف فارغ جديد إذا لم يكن موجودًا بالفعل. بعد هذه العملية ، يجب أن يكون لدينا ملف فارغ / tmp / copyme.

صدى صوت

الآن بعد أن أصبح لدينا ملف فارغ ، اكتب سلسلة نصية إليه باستخدام الأمر صدى صوتالذي يطبع الوسيطة التي تم تمريرها إليها إلى الإخراج القياسي (محطة نصية في حالتنا).

\$ صدى "الملف الأول"الملف الأول

لكتابة سطر إلى ملفنا ، أعد توجيه إخراج الأمر إليه صدى صوت:

\$ صدى "الملف الأول"> copyme

إشارة > (المزيد) يخبر shell بإعادة توجيه إخراج الأمر الموجود على اليسار إلى الملف على اليمين. في حالة عدم وجود ملف بهذا الاسم ، سيتم إنشاؤه تلقائيًا. وإذا كان هذا الملف موجودًا بالفعل ، فسيتم الكتابة فوقه (سيتم مسح جميع محتوياته قبل كتابة سطرنا). فريق "Ls -l"سيُظهر أن حجم ملفنا الآن هو 10 بايت - تسعة بايتات مشغولة بكلمة "الملف الأول" والبايت الواحد هو حرف تغذية سطر.

\$ ls -l copyme-rw-r - r - 1 جذر جذر 10 ديسمبر 28 14:13 كوبيم

القط و cp

لإخراج محتويات ملف إلى المحطة ، استخدم الأمر قط:

\$ القط copymeالملف الأول

الآن يمكننا البدء في تحليل الوظائف الأساسية للأمر cp... يأخذ هذا الأمر حجتين. الأول هو اسم ملف موجود ("copyme") ، والثاني هو اسم النسخة الجديدة التي نريد صنعها ("copiedme").

\$ نسخ cp copyme

يمكننا التأكد من أن النسخة الجديدة من الملف لها رقم inode مختلف (وهذا يعني أننا حصلنا على ملف منفصل جديد حقًا ، وليس مجرد رابط إلى النسخة القديمة)

\$ ls -i نسخ copymeتم نسخ 648284 لي 650704 كوبيم

م

الآن دعنا نطبق الأمر ملإعادة تسمية الملف ("copiedme" -> "moveme"). لا يتغير رقم inode بعد هذه العملية ، فقط اسم الملف يتغير.

\$ mv copiedme moveme \$ ls -i moveme 648284 م

لا يتغير رقم inode فقط إذا ظل الملف المعاد تسميته داخل نفس نظام الملفات حيث تم وضع الملف الأصلي. سنلقي نظرة فاحصة على تصميم نظام الملفات في جزء لاحق من هذا البرنامج التعليمي.

فريق ملا يسمح لك بإعادة تسمية الملفات فحسب ، بل يسمح لك أيضًا بنقلها. على سبيل المثال ، لنقل ملف /var/tmp/myfile.txtإلى الدليل / المستخدمين المنزليينتحتاج إلى إعطاء الأمر:

\$ mv /var/tmp/myfile.txt / home / user

سيتم نقل الملف إلى الدليل الرئيسي للمستخدم المستخدمحتى إذا كان موجودًا في نظام ملفات مختلف (في هذه الحالة ، سيتم نسخ الملف إلى موقع جديد وبعد ذلك سيتم حذف الملف الأصلي). كما قد تكون خمنت ، فإن نقل ملف إلى نظام ملفات آخر يغير inode. هذا لأن كل نظام ملفات له مجموعة منفصلة خاصة به من inodes.

وتجدر الإشارة إلى أن هناك احتمال أن يتطابق رقم الإدخال المعين حديثًا مع الرقم القديم ، ولكنه صغير للغاية.

لنقل عدة ملفات في نفس الوقت إلى دليل واحد ، عليك كتابة:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt / home / user \$ mv -t / home / user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

إذا قمت بإضافة الخيار '-الخامس'، سيتم عرض تقرير عن العملية المنفذة على الشاشة:

\$ mv -vt / home / user /var/tmp/myfile1.txt /var/tmp/myfile2.txt"/var/tmp/myfile1.txt" -> "/home/user/myfile1.txt" "/var/tmp/myfile2.txt" -> "/home/user/myfile2.txt"