لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/29/15 في كل الموقع
-
بعد أن تعرّفنا في الدّرس السّابق على طريقة تنصيب بايثون وكيفيّة العمل معها، سنكمل في هذا الدّرس مشوار تعلّم هذه اللغة بتعلّم كيفيّة التّعامل مع البيانات مثل المُتغيّرات وأنواعها كالأرقام وإسناد القيم. ولكن قبل ذلك عليك أن تتعرّف على طريقة دعم اللغة العربيّة، ويجب عليك أن تفهم بعض المُصطلحات المتداولة في مجال البرمجة (والتّي اعتَمدتُ عليها في هذا الدّرس). تذكير: نقوم بتنفيذ الأسطر البرمجيّة مُباشرة من مُفسّر بايثون، لمزيد من المعلومات عن المُفسّر راجع الدّرس السّابق. وللتوسع في لغة بايثون وتعلمها أكاديميًا، ننصحك بالانضمام إلى دورة تطوير تطبيقات باستخدام لغة بايثون التي تقدمها أكاديمية حسوب. دعم اللغة العربية في بايثون قد تواجه خطأ إذا حاولت تنفيذ أمر طباعة جملة "مرحبا بالعالم" مُستخدما حروفا عربية، لذلك يجب عليك أن تكتب السّطر التّالي، قبل كتابة أي أمر يحتوي على كلمات عربية: # -*- coding: utf-8 -*- المصطلحات مخرج Output: تعني الجواب أو النّتيجة الذي يُقدّمها مُفسّر بايثون، فمثلا إذا طلبت من مُفسّر بايثون طباعة كلمة Hello، فستستخدم السّطر التّالي: >>> print "Hello" Hello هنا نُسمّي Hello المُخرج الذي يُرجعه البرنامج (أي نتيجة الأمر). مُتغيّر: وهو الاسم الذي نُطلقه على حرف أو “كلمة” تحمل قيمة مُعيّنة، مثلا: >>> name = "abdelhadi" هنا قُمنا بإنشاء مُتغيّر name وأسندنا له القيمة abdelhadi. وإذا أردنا إظهار القيمة abdelhadi فيكفي أن نكتب اسم المُتغيّر في مُفسّر بايثون: >>> print name كما يُمكن أن نضيف تحّية على الشّكل التّالي: >>> print "Hello " + name تُفسّر الشيفرة أعلاه وتكون مُخرجاتها: Hello Abdelhadi يُمكن أن يحمل المُتغيّر عدّة أنواع من القيم، كالأرقام والنّصوص والأحرف… تعيين القيم يُعتبر تعيين قيمة لاسم معيّن من أهمّ أساسيّات البرمجة، وهذا الاسم معروف في البرمجة بالمُتغيّر، وإليك مثالا على ذلك: >>> x = 4 >>> x * x 16 قمنا في المثال أعلاه بوضع القيمة 4 للمتغيّر x، بعبارة أخرى المُتغيّر x يحمل القيمة 4. بحيث يُمكننا استعمال x عوضا عن 4 في باقي الأسطر في برنامجنا. وبعدها قمنا بالعمليّة الحسابيّة x * x أي 4 * 4 وحصلنا على 16 كنتيجة. إذا حاولت أن تستخدم مُتغيّرًا لم يُعرّف من قبل في برنامجك، فستحصل على خطأ كالتّالي: >>> foo Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'foo' is not defined >>> foo = 4 >>> foo 4 حاولنا أعلاه أن نقوم باستخدام المُتغيّر foo الذي لم نعرّفه أساساً، فحصلنا على رسالة من مُفسّر بايثون مفادها بأنّ المُتغيّر foo ليس موجودا. وبعد تعريفه وتعيين القيمة "4" له أصبح بإمكاننا استدعاؤه بدون أي مشكلة. إذا وضعت قيمة مُغايرة لمتغيّر يحمل مُسبقاً قيمة ما، فالقيمة القديمة تُستَبدَل بالقيمة الجديدة، بحيث يحمل المتغيّر القيمة الجديدة. >>> x = 4 >>> x 4 >>> x = 'hello' >>> x 'hello' في المثال أعلاه، قمنا بتحديد القيمة "4" للمتغيّر x ثمّ بعد ذلك قمنا بتحديد "hello" لنفس المُتغيّر فأصبح x يحمل القيمة hello في نهاية المطاف. ويُمكنك تعيين أكثر من قيمة لأكثر من مُتغيّر في آن واحد. >>> a, b = 1, 2 >>> a 1 >>> b 2 >>> a + b 3 ومُبادلة قيمتي مُتغيّرين (بحيث يحمل المُتغيّر قيمة الآخر) سهل جدّا في لغة بايثون: >>> a, b = 1, 2 >>> a, b = b, a >>> a 2 >>> b 1 عند تعيينِ قيمة في بايثون، تكون الأهميّة للجانب الأيمن قبل الأيسر، بحيث يقوم بايثون بالتّعرّف على القيّم في الجانب الأيمن ثمّ يقوم بتعيينها للمتغيّرات في الجانب الأيسر لعلامة = . إذ ما يقع على يسار علامة = هو المُتغير وما يقع على يمينها هو القيمة. التعليقات تُستعمل التّعليقات في البرمجة لشرح وظيفة سطر معين أو لإعطاء فكرة عن برنامجك لمن يقرأ شيفرته، وتكون التّعليقات مسبوقة بعلامة # إما في سطر مستقل أو في نفس سطر الشّيفرة، وتتميّز بأنّها لا تؤثّر على عمل البرنامج إذ يتجاهلها المُفسّر ولا تُنفّذ، وهي عموما اختيارية، لذا فأنت لست مُجبرا على كتابتها، وإليك مثالاً على التّعليقات: >>> # السّطر التّالي عبارة عن تعيين قيمة لمتغيّر >>> x = 'hello' # هذا السّطر عبارة عن تعيين قيمة لمتغيّر الأرقام لقد تعرّفنا من قبل حول كيفيّة التّعامل مع الأرقام بشكل بسيط. >>> 42 42 >>> 4 + 2 6 تدعم بايثون الأعداد العشريّة كذلك. >>> 4.2 4.2 >>> 4.2 + 2.3 6.5 وتدعم العمليّات المُختلفة مثل الإضافة والفرق وغيرهما من العمليّات الحسابيّة: + إضافة - الفرق * الضّرب / القسمة ** الأس (القوة) % باقي القسمة لنجرّب هذه العمليّات على الأعداد الصّحيحة: # عمليّة إضافة >>> 7 + 2 9 # عمليّة فرق >>> 7 - 2 5 # عمليّة ضرب >>> 7 * 2 14 # عمليّة قسمة >>> 7 / 2 3 # الأس >>> 7 ** 2 49 # باقي القسمة >>> 7 % 2 1 إذا تمعّنت في النّظر ستجد أنّ ناتج قسمة 7 على 2 يُساوي 3 وليس 3.5 وهذا لأنّ الرّمز / يُرجع الأرقام الصحيحة فقط عندما يعمل معها، لننظر مالذي سيحدث إذا جرّبنا نفس الأمر لكن بأعداد عشريّة هذه المرّة: >>> 7.0 / 2.0 3.5 >>> 7.0 / 2 3.5 >>> 7 / 2.0 3.5 يُمكن القيّام بالعمليّات الحسابيّة بالاعتماد على أكثر من عامل: >>> 7 + 2 + 5 - 3 11 >>> 2 * 3 + 4 10 هذا مهمّ جدّا وذلك لفهم كيفيّة تعامل لغة بايثون مع العمليّات الحسابيّة، حيث هناك أولويّات للعمليّات وذلك كالقائمة التّالية، من الأقل أولويّة إلى الأه: + - * / % ** ولفهم ذلك أكثر، إليك هذا المثال: عند تنفيذ العمليّة 2 + 3 * 4 في بايثون فالعمليّة الأولى التّي تُنفّذ هي 3 * 4 ، لأن العامل * أكثر أولويّة من عامل +، وبعد ذلك تضاف القيمة إلى 2. >>> 2 + 3 * 4 14 يُمكننا أن نعتمد على الأقواس () لتحديد أولويّات العمليّات، انظر المثال التّالي: >>> (2 + 3) * 4 20 في المثال أعلاه، قمنا بوضع العمليّة 2+3 بين قوسين لإخبار مُفسّر بايثون بأنّ لهذه العملية الأولويّة ويجب حسابها أوّلا، فإن لم نقم بوضع القوسين لقام المُفسّر بحساب العمليّة 4*3 ثم إضافة العدد 2. جميع العمليّات باستثناء ** يبدأ تطبيقها من اليسار ثمّ اليمين. 1 + 2 + 3 * 4 + 5 ↓ 3 + 3 * 4 + 5 ↓ 3 + 12 + 5 ↓ 15 + 5 ↓ 20 تمارين تمرين 1 ما هي مُخرجات (القيّم التّي سيطبعها) البرنامج التّالي: x = 4 y = x + 1 x = 2 print x, y تمرين 2 ما هي مُخرجات (نتيجة) البرنامج التّالي: x, y = 2, 6 x, y = y, x + 2 print x, y تمرين 3 ما هي مُخرجات البرنامج التّالي: a, b = 2, 3 c, b = a, c + 1 print a, b, c ترجمة -وبتصرف- للكتاب Python Practice Book لصاحبه Anand Chitipothu.1 نقطة
-
أحاول إنشاء ملف نصي باستخدام Python، وذلك عبر اتخاذ متغير الوقت كإسم له حتى لا يتكرر الاسم، بهذه الطريقة: a, b = time.strftime("%d/%m/%Y"), time.strftime("%H-%M-%S") c = ("SCORE"+"-"+"("+a+")"+"-"+"("+b+")") c = str(c+".txt")مما يعطي:SCORE-(28/12/2015)-(21-05-09).txt لكن عند استعمال: file3 = open(c,"w+") file3.write(file2a) file3.close()أحصل على الخطأ التالي: Traceback (most recent call last): File "E:\Program Files\Python guff\DocMarker\data\FinalScore.py", line 57, in file3 = open(c,"w+") FileNotFoundError: [Errno 2] No such file or directory: 'SCORE-(28/12/2015)-(21-05-09).txt'لا أدري أين الخلل ولا كيف أحل المشكل؟1 نقطة
-
باعتبار الكود التالي: >>> class A(object): ... def __init__(self, a): ... self.a = a ... def __eq__(self, other): ... return self.a==other.a ... >>> a=A(1) >>> b=A(1) >>> c=A(2) >>> a==b True >>> a==c False >>> a is b False >>> l = [b,c] >>> a in l True هل يمكن استعمال In عوض __eq__؟ وكيف أتأكد من أن العنصر غير موجود داخل المصفوفة، عبر التأكد بقيمة id وليس value؟1 نقطة
-
سنتعلم في هذا الدرس كيفية تصميم رُقعة مُطرّزة فيها نص مُطرّز في برنامج أدوبي إليستريتور. يُعتبر هذا الدرس من دروس المستوى المتوسط في هذا البرنامج، حيث سنستخدم عدة تأثيرات وفلاتر بالإضافة إلى أننا سنتعامل بشكل رئيسي مع لوحة المظهر، اتبع التعليمات خطوة خطوة حتى تصل إلى النتيجة النهائية مع العلم أنه بإمكانك تبديل بعض ملامح التصميم مثل نوعية الخط والألوان والأحجام. افتح ملفًا جديدًا ببرنامج الإليستريتور ثم استخدم أداة النص Type tool واكتب النص الذي تريده، أنا استخدمت عنوان (أكاديمية حسوب)، اختر نوعية الخط التي تناسبك ولكن الأهم أن يكون الخط عريضًا حتى تتمكن من إدراج خطوط التطريز بداخله، اخترتُ هنا خط Neckar العريض بحجم 125. ألغِ ألوان التعبئة والحدود للنص ثم افتح لوحة المظهر Appearance panel فإن لم تكن ظاهرة لديك فستجدها ضمن قائمة Window. من القائمة الموجودة في أقصى الزاوية العليا اليمنى من لوحة المظهر اختر خيَار تعبئة جديدة New Fill ولا تغيّر اللون الأسود الافتراضي الذي سيظهر على النص بعد هذه الخطوة. كرر العملية وأنشئ تعبئة جديدة بنفس الطريقة المُتّبعة في الخطوة السابقة ثم حدد التعبئة الجديدة وبدّل لون التعبئة من الأسود إلى اللون البني. حدّد التعبئة البنية من لوحة المظهر ثم اذهب إلى القائمة: Effect > Convert To Shape > Rounded Rectangle حدد الخيَار Relative واضبط العرض عند 7mm والارتفاع عند 4mm ونصف قطر الزاوية عند 5mm ثم انقر OK. هذه العملية ستُنشئ البنية الأساسية للرُقعة لذلك احرص أن يكون هناك مساحة كافية لوضع خيوط التطريز. مع بقاء التعبئة البنية محددة في لوحة المظهر اضغط على زر المضاعفة Duplicate الموجود أسفل لوحة المظهر. حدد التعبئة الجديدة في الأسفل وبدّل لون التعبئة إلى اللون الرمادي. تأكّد من تحديد الطبقة الرمادية ثم اذهب إلى القائمة: Effect > Path > Offset اضبط قيمة Offset عند 2mm. البُنية الأساسية والشكل العام للرقعة أصبح جاهزًا وسنعمل الآن على التفاصيل التي تتعلق بخيوط التطريز، التدرجات اللونية والظلال. اذهب إلى لوحة المظهر وحدّد التعبئة السوداء الأولى ثم لوّنها بتدرج لوني من الرمادي الفاتح إلى الأبيض باستخدام لوحة التدرجات Gradient panel ومن ذات اللوحة ضع زاوية التدرج -90 درجة. من القائمة المنبثقة من لوحة المظهر اختر حدود جديدة New Stroke. بدّل اللون إلى الرمادي واضبط حجم الحدود عند 1mm وفعّل Dashed Line ثم ضع قيمة أول Dash عند 3pt. اذهب إلى القائمة: Effect > Path > Offset ثم اضبط قيمة Offset عند -0.8mm ثم انقر OK. حدّد التعبئة الأولى ذات الألوان الباهتة في لوحة المظهر وضاعفها ثم حدد التعبئة الجديدة ولوّنها بلون واحد رمادي فاتح ثم اذهب إلى لوحة الشفافية Transparency panel وبدّل خصائص المزج لهذه التعبئة إلى Multiply. اذهب إلى القائمة: Effect > Distort & Transform > Transform واضبط قيمة التحريك العمودي Vertical Move عند 1mm. حدّد التعبئة البنّية من لوحة المظهر واستبدل اللون البنّي بتدرج لوني من البنّي إلى البنّي الفاتح مع جعل الزاوية -90 درجة. من لوحة المظهر أضف حدودًا جديدة New Stroke ثم اذهب إلى القائمة: Effect > Convert to Shape > Rounded Rectangle اضبط العرض الإضافي عند 4mm والارتفاع الإضافي 1mm ونصف قطر الزاوية 5mm. استبدل لون هذه الحدود باللون الأصفر الفاتح ثم اضبط حجم الحدود عند 1.5pt واضبط الخط المُتقطّع عند 12pt. حدّد الحدود الصفراء ثم ضاعفها. والآن حدّد الحدود الجديدة واذهب إلى القائمة: Effect > Distort & Transform > Transform اضبط قيمة التحريك العمودي عند 0.6mm . استبدل اللون الأصفر باللون الرمادي الفاتح ثم غيّر خصائص المزج إلى Multiply. حدّد آخر تعبئة من الأسفل في لوحة المظهر ولوّنها بتدرج لوني من الرمادي إلى الرمادي الفاتح مع زاوية -90 درجة في لوحة التدرجات. تأكّد من أنك لا تزال تُحدّد ذات التعبئة ثم اذهب إلى القائمة: Effect > Stylize > Drop Shadow. وفي نافذة الظلال التي ستظهر اضبط Opacity عند 50% وX Offset عند 0 وY Offset عند 2mm وBlur عند 1mm . وبهذا ننتهي من تصميم رقعة بتأثير نصّي مُطرّز باستخدام التأثيرات والفلاتر ببرنامج الإليستريتور. إن إضافة التدرجات اللونية للرقعة بشكل عام وكذلك الظلال للرقعة والخيوط منح التصميم لمسة واقعية وجمالية خاصة. والآن يمكنكم استخدام هذا التصميم بعد تصديره بصيغة PNG في أي صورة لأي نوع من الألبسة والقبّعات باستخدام برنامج فوتوشوب، أو يمكن استخدامه في مواقع الإنترنت كنوع من الشعار أو الإعلان. أرجوا أن تكونوا قد استفدتم من الدرس وأن تكون قد وصلتكم المعلومة المفيدة وأن تجربوا تنفيذ مثل هذا التصميم وتشاركونا نتائج أعمالكم.1 نقطة
-
لإنشاء bot في تلغرام عليك أولًا الدخول لصفحة BotFather من برنامج تلغرام عن طريق كتابة BotFather في البحث. كما هو الحال مع أي بوت في تلغرام فإن BotFather لديه قائمة من الأوامر. لإنشاء بوت جديد أرسل أمر newbot/ اختر اسم للبوت الذي تريد إنشاءه وأرسله: بعد ذلك يمكنك تحديد صورة للـ bot عن طريق كتابة الأمر setuserpic/ وشرح عن البوت ليظهر للزوار عن طريق كتابة الأمر setdescription/ استخدم الأمر setabouttext/ لإرسال معلومات عن الـ bot والتي ستظهر في التعريف. كما يمكنك تحديد اللّغة الافتراضية للبوت عن طريق الأمر Local مثلاً locale AR/ لتحديد اللّغة العربية. أصبح الآن البوت الخاص بك جاهزًا استخدم الأمر token/ للحصول على الرمز الخاص للاتصال بالبوت الذي أنشأته عن طريق HTTP API. كيف أنشئ bot على تلغرام بدون برمجة؟1 نقطة
-
إنشاء ملصقات Stickers من تصميمك ونشرها للأصدقاء في تطبيق تلغرام أمر ممتع للغاية يمكنك القيام بذلك عن طريق استخدام البوت bot. أولًا يجب أن تقوم بإنشاء ورسم الصورة التي تريد تحويلها لملصق في تلغرام بصيغة png ذات خلفية شفافة، بأبعاد 512 * 512 وبحواف بيضاء مع ظل shadow كما في الصورة التالية: يمكنك استخدام برنامج Photoshop أو Illustrator لإنشاء الصور. كما يمكنك البدء بالرسم على الورق وتصوير الرسومات بدقة جيدة ومن ثم رفعها وتعديلها على Illustrator. بعد الانتهاء من عمل الصور بالطريقة المطلوبة اذهب إلى تطبيق Telegram وابحث عن Stickers bot يحوي Stickers bot على مجموعة من الأوامر التي تقوم بتنفيذ الخطوات لإرسال الملصق الخاص بك إلى تطبيق تلغرام. الأمر help/ يظهر لك قائمة الأوامر. الخطوة الأولى هي إنشاء حزمة وتسميتها لتضيف إليها ملصقاتك. اكتب الأمر newpack/ سيطلب منك اختيار اسم لحزمتك مثلًا Princess. سيطلب منك إرسال emoji الذي سيمثل الملصق الذي أنشأته. الآن أرسل الملصق الذي أنشأته. إن كانت الصورة تحقق الشروط المطلوبة فسيطلب منك أن تكتب الأمر publish/ ليتم نشر الملصق ثم تحديد اسم للحزمة ليتم عرضه في الرابط الذي ستقوم بنشره لأصدقائك ليتمكنوا من إضافتها إلى تطبيقاتهم. الآن أصبح الملصق الخاص بك على تطبيق Telegram تلغرام ويمكنك استخدام الرابط لمشاركته مع من تريد. يوجد أوامر أخرى في Stickers bot مثل الأمر stats/ الذي يعطيك حالة الملصق (عدد المرات التي استخدم فيها الملصق في تطبيق تلغرام). كما يمكنك حذف الملصق باستخدام الأمر delsticker/ أو إعادة ترتيبها ضمن الحزمة باستخدام الأمر ordersticker/ أيضًا إضافة ملصق جديد لحزمة باستخدام الأمر addsticker/.1 نقطة
-
إذا كنت جديدا على أنظمة تشغيل لينكس ويونكس، فإن الطرق الأساسية للتفاعل والتنقل داخل نظام التشغيل الخاص بك يمكن أن تبدو معقدة ومربكة، في نفس النطاق يجب على المستخدمين الجدد أن يكافحوا لمعرفة كيفية استيساغ الطريقة التي تم بها هيكلة نظام الملفات. في هذه المقالة، سوف نناقش مختلف أجزاء نظام ملفات لينكس القياسي، سوف نستعرض بعض المجلدات (directories) الأكثر إثارة للاهتمام، ونبحث عن المكونات المختلفة في بيئة الخادم الخاص بك. لغرض الشرح والتوضيح، سوف نستخدم توزيعة Ubuntu، لأن توزيعات لينكس الأخرى تقوم بتنفيذ الأشياء بطرق مختلفة قليلا، وإذا لاحظت تعارض مع النظام الخاص بك، راجع توثيق التوزيعة الخاصة بك. بعض الملاحظات المختصرة عن تاريخ هيكلية نظام الملفات في لينكسيرث لينكس الكثير من المفاهيم لتنظيم الملفات من أسلافه من أنظمة Unix، الذي يعود إلى عام 1979، وقد وضع يونكس معاييرًا للتحكم في كيفية تنظيم ملفات المستخدمين. معيار هيكلية نظام الملفات FHS هو معيار توجيهي تحتفظ به مؤسسة لينكس ويحدد هيكلية الملفات التي يجدر بمختلف توزيعات لينكس أن تتبعها، وذلك لتسهيل الإدارة والحفاظ على طريقة توزيع/تثبيت موحّدة وآمنة للتطبيقات على مختلف التوزيعات. شيء واحد يجب ذكره عند التعامل مع هذه الأنظمة، هو أن كل شيء في لينكس هو ملف، فالملف النصي (Text file) ملف، والمجلد ملف أيضا (عبارة عن مجرد قائمة من الملفات الأخرى)، والطابعة تُمَثَّل في النظام عن طريق ملف (يمكن لبرنامج تشغيل الطابعة أن يرسل أي شيء مكتوب إلى ملف الطابعة ثم إلى الطابعة الفعلية)، وهكذا... في هذه المقالة، لن نذكر كافة التفاصيل والمواصفات بالضبط، لأن التوزيعات تبتعد عن المستوى القياسي غالباً، لذلك سوف نستخدم توزيعة Ubuntu لإيجاد بنية المجلد الفعلية، حيث أنها التوزيعة الأسهل والأكثر انتشارًا بين مستخدمي لينكس المتوسطين. لمحة بسيطةقبل الخوض في هيكلية نظام الملفات، تحتاج إلى معرفة بعض الأساسيات حول كيفية التعامل مع نظام الملفات والأوامر، ونحن سوف نغطي الحد الأدنى هنا لتستطيع البدء لوحدك. ملاحظة: وجود علامة $ يعني أن هذا أمر يمكنك كتابته على سطر الأوامر، وما يتبعه من الأسطر الخالية من علامة $ هو ناتج الأمر السابق. توجيه نفسكأول شيء عليك القيام به هو معرفة التعامل مع نظام الملفات، هناك عدد قليل من الطرق للقيام بذلك، ومن أبسط الطرق هي طباعة مجلد العمل: $ pwd /rootهذا ببساطة يعود لمكان كتابة الأمر نفسه، أي المجلد الذي أنت به، سوف نتعلم كيفية تفسير النتائج لاحقا. انظر حولكلمعرفة ما هي الملفات الموجودة في المجلد الحالي، يمكنك تطبيق الأمر ls، ,وهو اختصار قائمة "List": $ ls bin etc lib mnt root selinux tmp vmlinuz boot home lost+found opt run srv usr dev initrd.img media proc sbin sys varهذا الأمر يوضّح كل الامتدادات والملفات في المجلد الحالي. الأمر ls يمكن أن يأخد بعض الخيارات، وهذه الخيارات تُعدّل على سلوك الأمر الافتراضي إما لعملية أخرى أو عرض البيانات بطريقة مختلفة. على سبيل المثال، إذا أردنا أن نفرق بسهولة بين الملفات والمجلدات، وذلك بإضافة "/" بعد مخرجات المجلد، يمكنك تمرير الخيار F-: $ ls –F bin/ home/ media/ root/ srv/ var/ boot/ initrd.img@ mnt/ run/ sys/ vmlinuz@ dev/ lib/ opt/ sbin/ tmp/ etc/ lost+found/ proc/ selinux/ usr/ومن أكثر الخيارات شيوعا هي l- وa-، فالأمر الأول يقوم بإخراج المعلومات الناتجة بشكل طويل ومفصل: $ ls –l total 76 drwxr-xr-x 2 root root 4096 Apr 26 2012 bin drwxr-xr-x 3 root root 4096 Apr 26 2012 boot drwxr-xr-x 13 root root 3900 Dec 4 18:03 dev drwxr-xr-x 78 root root 4096 Dec 4 19:29 etc drwxr-xr-x 3 root root 4096 Dec 4 19:28 home lrwxrwxrwx 1 root root 33 Apr 26 2012 initrd.img -> /boot/initrd.img-3.2.0-24-virtual drwxr-xr-x 16 root root 4096 Apr 26 2012 lib ...ينتج سطر واحد لكل ملف واحد أو مجلد (الاسم في أقصى اليمين). ويكون لديه الكثير من المعلومات التي لانهتم بها في الوقت الحالي، جزء واحد مهتمون به حاليا هو الذي يوضح لنا ما هو نوع الملف. هناك 3 أنواع ملفات (الأكثر شيوعا): ملف عادي.ملف مجلد (ملف من صيغة محددة يحتوي ملفات أخرى).ملف ارتباط حقيقي أو وهمي (hard link, soft link وكلاهما اختصار لملف آخر على النظام).أما الخيار a- يستعرض كل الملفات بما فيها الملفات المخفية، وفي لينكس، يتم إخفاء الملفات تلقائيا إذا بدأ الاسم بنقطة (.) dot: $ ls -a . .. bash_logout .bashrc .profileفي هذا المثال، كافة الملفات مخفية، أول مخرجين . و.. عبارة عن مجلدات خاصة. فالمجلد "." هو اختصار يعني "المجلد الحالي"، والمجلد".." أيضا اختصار يعني "المجلد الأب للمجلد الحالي"، سوف نتعلم لاحقا بعض الطرق للاستفادة منها. جولةالآن يمكنك معرفة أين أنت في نظام الملفات وترى ما يدور حولك، حان الوقت لمعرفة كيفية التعامل مع نظام الملفات. للتغيير إلى مجلد مختلف، استخدم الأمر cd، (اختصار Change Directory) والذي يقوم بتغيير المجلد: $ cd /binيمكنك التعامل مع الأمر بمسار كامل أو مسار نسبي. حيث: المسار الكامل (Full path): هو مسار الملف الذي يحدد مكان وجود المجلد من على قمة شجرة المجلد الجذر (سنشرح ذلك لاحقا)، تبدأ المسارات الكاملة بـ "/"، كما ترون أعلاه.المسار النسبي (Relative path): هو مسار الملف نسبةً إلى مجلد العمل الحالي، هذا يعني أنه بدلا من تحديد مكان من الجزء العلوي من المجلد، فإنه يمكن تحديد المكان بالنسبة لمجلد العمل المتواجد به أنت حاليا.على سبيل المثال، إذا كنت ترغب في الانتقال إلى مجلد ضمن المجلد الحالي يدعى documents، يمكنك استخدام هذا الأمر: $ cd documentsعدم وجود "/" من البداية تدفعك لاستخدام المجلد الحالي كأساس لتبحث عن مسار المجلد الهدف. للانتقال إلى المجلد الأصل من المجلد الحالي الخاص بك، يمكنك كتابة، حيث -كما تم الإشارة إليه مسبقا- فـ ".." تعني المجلد الأب للمجلد الحالي: $ cd ..نظرة عامة على هيكلية نظام الملفات في اللنكسأول شيء تحتاج إلى معرفته عند عرض نظام الملفات في لينكس هو أن نظام الملفات يحتوي على شجرة واحدة، بغض النظر عن عدد الأجهزة المرتبطة به. ما يعنيه هذا هو أن جميع المكونات لديك في نظام التشغيل ممثلة في مكان ما في نظام الملفات الرئيسي، اذا كنت تستخدم Windows كنظام أساسي لديك، هذا يختلف عن ما كنت تستخدمه، حيث في Windows كل قرص صلب أو مساحة التخزين والملفات لها تمثيل خاص في نظام الملفات، التي تكون مسماة بالأحرف كـ C مثلا، وهو كناية عن مستوى عالي من التسلسل الهرمي في نظام الملفات، الأقراص الإضافية أو مساحات تخزين تعطى أحرف تسمية أخرى. "/" في لينكس، تعني أنه كل ملف أو جهاز على النظام موجود تحت " الجذر" (root)، فهو يرمز لنقطة بداية شجرة الملفات. ملاحظة: هذا يختلف عن المستخدم الإداري الافتراضي، وهو ما يسمى أيضا "الجذر" (root). وهو يختلف أيضا من المجلد الرئيسي للمستخدم الإداري الافتراضي، والذي يقع في "root/". وبالتالي، إذا كنا نريد أن نذهب إلى المستوى الأعلى من المجلد داخل نظام التشغيل ونرى ما هناك، يمكن أن نكتب: $ cd / $ ls bin etc lib mnt root selinux tmp vmlinuz boot home lost+found opt run srv usr dev initrd.img media proc sbin sys varكل ملف، جهاز، مجلد، أو تطبيق فهو يقع تحت مجلد واحد، ويمكننا أن نرى بداية بنية المجلد، سنذهب إلى المزيد من التفاصيل أدناه: bin/يحتوي هذا المجلد على الأوامر والبرامج الأساسية اللازمة لتحقيق بيئة عمل الحد الأدنى، يتم الاحتفاظ بها منفصلة عن بعض البرامج الأخرى على النظام للسماح لك لتشغيل النظام للصيانة حتى لو أجزاء أخرى من نظام الملفات قد تكون معطوبا أو غير متوفر. إذا كنت تبحث في هذا المجلد، وسوف تجد أن كل LS, pwd الموجودة هنا ، والأمر cd مبنى بداخل الشل (shell) التي نستخدم باش (bash)، كما أنها موجودة في هذا المجلد. boot/هذا المجلد يحتوي على الملفات الفعلية، والصور، والنواة(Kernel) اللازمة لتشغيل النظام، وعلى العناصر الأساسية التي تسمح فعليا للنظام بالإقلاع، في حين /bin يحتوي على الأساسيات. إذا كنت بحاجة إلى تعديل ملف الإقلاع في النظام الخاص بك، أو إذا كنت ترغب في رؤية الملفات النواة (Kernel) و(ramdisk)، يمكنك العثور عليها هنا، يجب أن يصل هذا المجلد إلى النظام في وقت مبكر جداً. dev/يشمل المجلد الملفات التي تمثل أجهزة القرص الصلب والأجهزة الطرفية وأجهزة الإدخال والاخراج المتوفرة في النظام، وبالاعتماد على كل جهاز تستطيع تشغيل الأجهزة بطرق مختلفة. على سبيل المثال، الجهاز الذي يمثل القرص الصلب /dev/sda تستطيع أن ترفعه من الملف الى مركز النظام وبالمقابل لوكان لديك ملف يمثل رابط الطابعة /dev/lpr فبإمكانك كتابته مباشرة ليرسل المعلومات الى الطابعة. etc/تعتبر احدى مناطق نظام الملفات التي تستهلك الكثير من الوقت والعمل اذا استخدمتها كمدير للنظام. هذا المجلد معد خصيصا لنظام الخدمات المتعددة واسعة المجال، اذا كان المجلد يتكون من عدة ملفات فرعية فهو يحتوي عدة ملفات معدة لأكثر الانشطة على النظام، بغض النظر عن وظيفة تلك الأنشطة. في حال الحاجة إلى الملفات متعددة الإعدادات فانه يتم انشاء التطبيق الفرعي الخاص لجلب هذه الملفات ،اذا حاولت أن تعد جهاز أو برنامج للنظام المدخل فان /etc هي المكان الانسب لذلك. home/يحتوي هذا المجلد على جميع المجلدات الرئيسية لكافة مستخدمي النظام ( باستثناء المستخدم الجذر)، اذا أنشأت مستخدمين جدد فسيقوم المجلد بمقارنتها مع الاسماء الموجودة لديه سابقا حتى لا يحدث تعارض في أسماء المستخدمين. في داخل كل مجلد رئيسي يرتبط كل مستخدم بالصلاحية المخصصة له، فالمستخدم العادي له صلاحية على المجلد الرئيسي الذي يمتلكه مما يعمل على حفظ نظام الملفات خالية من التغييرات التي قد يقوم بها أشخاص غير مخولين. غالبا ما يوجد مجلدات ملفات مخفية داخل المجلد الرئيسي (ممثلة بنقطة البداية)، والتي تسمح للمستخدم بالقيام بإعدادات خاصة للقوائم تستطيع غالبا انشاء نظام فرضيات في مجلد /etc يمكن أن يتجاوزها المستخدم في مجلده الرئيسي للضرورة. lib/يستخدم هذا المجلد لجميع المكتبات نظام المشتركة التي تطلب من المجلداتbin /،sbin/ ، هذه الملفات تزود البرامج بالوظائف الأساسية داخل النظام، وهي إحدى المجلدات التي لن تستطيع الوصول اليها أحيانا. lost+found/المجلد الخاص الذي يحتوي على الملفات المسترجعة /fsck، إذا كان نظام الملفات معطوب أو يتم استرجاعه حاليا، فإن نظام الملفات في اللنكس يقوم بإصلاح البرامج، وأحيانا يتم العثور على الملفات ولكن يتم فقدان الموقع الخاص بها، في هذه الحالة، سيقوم النظام بوضعها في هذا المجلد. في معظم الحالات، يبقى هذا المجلد فارغ، وإذا وجدت ملفات معطوبة أو أي مشاكل أخرى مشابهة، تقوم بإجراء عملية الاسترجاع ، ويجب عليك التحقق من الموقع عند الانتهاء من عملية الاسترجاع. media/هذا المجلد يكون فارغ في عملية الإقلاع، والغرض الحقيقي ببساطة هو تزويد موقع لتحميل الوسائط القابلة للإزالة مثل الأقراص المدمجة(CDs). في بيئة الخادم، وغالبا لن يتم استخدامها في بيئة الخوادم، ولكن إذا كان نظام التشغيل لنكس الخاص بك يقبل تحميل وسائط قابلة للإزالة وانت لست متأكد منها، يمكنك اللجوء لهذه الطريقة الآمنة. mnt/هذا المجلد يشبه المجلد السابق، وعادة ما يستخدم هذا المجلد لتحميل نظام الملفات مثل الأقراص الصلبة الخارجية، الخ. وكثيرا ما يستخدم هذا المجلد في بيئة VPS لتركيب محركات أقراص الشبكة، إذا كان لديك نظام ملفات على خادم بعيد وترغب في تركيب نظام شبكة عليه فمن الجيد استخدام هذا المجلد لعمل ذلك. opt/استخدام هذا المجلد هو غامض إلى حد ما، ويتم استخدامه من قبل بعض التوزيعات وبعضها تتجاهله، وعادة يتم استخدامه لتخزين حزم اختيارية، وتعني في اللنكس الحزم والتطبيقات التي لم يتم تثبيتها من المستودعات. على سبيل المثال، إذا كان التوزيع يوفر عادة حزم من خلال مدير الحزم، ولكن قمت بتثبيت برنامج X من المصدر، فإن هذا المجلد سيكون موقعا جيدا لهذا البرنامج، هناك خيار أكثر شيوعا لبرامج من هذا النوع موجود في المجلد المحلي /usr/local. proc/هو أكثر من مجرد مجلد منتظم، يشبه نظام الملفات التي تكون موجودة في المجلد، لا يحتوي ملفات حقيقية، ولكنه يستبدل بشكل تلقائي ليعكس الحالة الداخلية للنواة (Kernel) في اللنكس. هذا يعني أننا نقوم بالتحقق وتعديل معلومات مختلفة من نواة اللنكس نفسها (Kernel)، على سبيل المثال، يمكنك الحصول على معلومات مفصلة حول استخدام الذاكرة عن طريق كتابة cat /proc/meminfo. root/هو المجلد الرئيسي للمستخدم المدير (ويسمى "الجذر"). وهو يعمل تماما مثل المجلدات الرئيسية العادية. run/هذا المجلد هو نظام التشغيل لكتابة معلومات مؤقتة أثناء التشغيل خلال المراحل الأولى من عملية الإقلاع، بشكل عام، ويجب أن لا تقلق كثيراً بشأن المعلومات الواردة في هذا المجلد. sbin/هذا المجلد هو اشبه ما يكون للمجلد /bin لأنه يحتوي على البرامج التي تعتبر أساسية لنظام التشغيل، وهو عادة يحتوي على الأوامر المتوفرة لمسؤول النظام، بينما مجلد آخر يحتوي على برامج لجميع المستخدمين للنظام. selinux/هذا المجلد يحتوي على المعلومات التي لها علاقة بأمن نظام التشغيل، وهو وحدة النواة(Kernel) التي يتم استخدامها لتوفير التحكم في الوصول إلى نظام التشغيل. srv/يحتوي هذا المجلد على بيانات عن الخدمات المقدمة من قبل الكمبيوتر، في معظم الحالات، لا يتم استخدام هذا المجلد كثيرا لأن وظائفه يمكن تنفيذها في أي مكان آخر في نظام الملفات. tmp/هذا هو المجلد الذي يستخدم لتخزين الملفات المؤقتة على النظام، هو قابل للكتابة من قبل أي شخص على الكمبيوتر و لا وتبقى فعالة حتى إعادة التشغيل، وهذا يعني أن أي الملفات التي تحتاج فقط للقليل من العمل يمكن وضعها هنا، سيتم حذفها تلقائيا بمجرد إيقاف تشغيل النظام. usr/هذا المجلد هو واحد من أكبر المجلدات على النظام، وتشمل في الأساس مجموعة من المجلدات التي تبدو مشابهة لتلك الموجودة في مجلد الجذر مثل //usr,/bin ,/usr/,lib تستخدم هذا الموقع أساسا لتخزين كافة البرامج غير الضرورية والتوثيق والمكتبات، وغيرها من البيانات الخاصة بهم غير المطلوب من أجل استخدام الحد الأدنى من النظام. هذا هو المكان الذي سيتم تخزين معظم الملفات على النظام، بعض المجلدات الفرعية الهامة هي /usr/local، وهو يعتبر بديل إلى المجلد /opt لتخزين البرامج المترجمة محليا، شيئ آخر مثير للاهتمام هو التحقق من /usr/share directory، والذي يحتوي على وثائق وملفات وملفات الاعدادت، وملفات أخرى مفيدة. var/يفترض في هذا المجلد احتواء البيانات المتغيرة، في الممارسة العملية، وهذا يعني أنه يستخدم لتخزين معلومات أو مجلدات والتي من المتوقع أن تنمو مع استخدام النظام. على سبيل المثال، توجد سجلات النظام والنسخ الاحتياطي، وهناك استخدام شائع لهذا المجلد هو تخزين محتوى الويب إذا كنت تعمل على خادم للويب. الخاتمةعلى الرغم من أن التفاصيل التي تخزن فيها الأشياء تختلف من توزيعة إلى أخرى إلا أن المواقع التي تمت مناقشتها سترشدك إلى الاتجاه الصحيح. وإن من افضل الطرق لاكتشاف نظام الملفات هي طريقة اجتياز الاتجاهات المتعددة من أجل محاولة معرفة وظيفة ما بداخل الملفات . سيكون بإمكانك ربط المجلدات المختلفة بوظائف مختلفة وتستطيع أن تقرر أين ستذهب لإنجاز مهمة معينة. اذا كنت تريد مرجعاً سريعاً يخبرك بوظيفة كل مجلد فيمكنك استخدام المجلد الداخلي اليدوي للصفحات وذلك بكتابة الأمر التالي : man hierهذا سيعطيك فكرة عامة عن نظام الملفات النموذجية والوظائف المتعلقة بكل موقع. ترجمة -وبتصرّف- للمقال: How To Understand the Filesystem Layout in a Linux VPS.1 نقطة