




السمعة:
- إنضم22 ديسمبر 2023
- المشاركات 192
- الحلول 1
- مستوى التفاعل 288
- النقاط 63
السلام عليكم ورحمة الله وبركاته
أهلا بكم مرة آخرى مع موضوع جديد في سلسلة تطبيقات عملية على أنظمة التشغيل
في هذا الدرس سنقوم بإذن الله بأكمال ما بدأناه في الدرس الماضي وهي Linux commands وسنتعلم ايضاً كيفية عمل تجميع (compile) وتنفيذ (Run) كود بلغة C، كما أننا سوف نكتب سوياً أول برنامج لنا بهذه اللغة أن شاء الله، وكما أخبرتكم سابقاً من كان لديه معرفة بلغة ++C فهذا يكفي لتعلم لغة C فهي قريبه جداً منها وأنا بأذن في كل درس سأشرح كل الأختلافات المتعلقة بهذه اللغة لذا لا تقلقو ابداً ...
إذا كنت تشاهد هذا الموضوع قبل مقدمة السلسلة فمن فضلك توقف قليلاً واذهب إلى هذا الرابط مقدمة في سلسلة تطبيقات عملية على أنظمة التشغيل وأقرأ عما سنفعله في هذه السلسلة وأيضاً قم بدراسة المواضيع السابقة ثم عد مجدداً لكي نبدأ على بركة الله في هذا الدرس
اولاً سوف نكمل ال Linux commands, بسم الله :
أهلا بكم مرة آخرى مع موضوع جديد في سلسلة تطبيقات عملية على أنظمة التشغيل
في هذا الدرس سنقوم بإذن الله بأكمال ما بدأناه في الدرس الماضي وهي Linux commands وسنتعلم ايضاً كيفية عمل تجميع (compile) وتنفيذ (Run) كود بلغة C، كما أننا سوف نكتب سوياً أول برنامج لنا بهذه اللغة أن شاء الله، وكما أخبرتكم سابقاً من كان لديه معرفة بلغة ++C فهذا يكفي لتعلم لغة C فهي قريبه جداً منها وأنا بأذن في كل درس سأشرح كل الأختلافات المتعلقة بهذه اللغة لذا لا تقلقو ابداً ...
إذا كنت تشاهد هذا الموضوع قبل مقدمة السلسلة فمن فضلك توقف قليلاً واذهب إلى هذا الرابط مقدمة في سلسلة تطبيقات عملية على أنظمة التشغيل وأقرأ عما سنفعله في هذه السلسلة وأيضاً قم بدراسة المواضيع السابقة ثم عد مجدداً لكي نبدأ على بركة الله في هذا الدرس
اولاً سوف نكمل ال Linux commands, بسم الله :
cat
cat : اختصار لـِ Concatenate ويعمل هذا الأمر على عرض محتوى الملفات أو كتابة محتوى على الملفات.
الصيغة العامة له :
الآن لنأخذ مثال عملي على ذلك :
1) ليكن المثال التالي لعرض محتوى ملف shell.txt وعندما نقول عرض محتوى ملف يعني ذلك عملية قراءة من ملف Read :
اولاً انشئت الملف المطلوب ثم قمت بكتابة نص داخل هذا الملف ولا تنسى عمل save بعد ذلك لكي اعرض محتوى الملف على على النافذة استخدمت الأمر cat وتم عرضها والحمد لله .
2) هذا المثال للكتابة على ملف shell.txt وسنحتاج الى هذه الاشاره < بعد cat لكي يقوم بالكتابة على ملف لا القراءة منه ، وعندما نقول كتابة وتخزين محتوى يعني لك أن العملية Write:
نلاحظ أمرين الأول عند كتابة الأمر والضغط على enter النافذة اصبحت تنتظر مني كتابة المحتوى الذي اريده داخل الملف
الأمر الثاني ظهرت رساله اعلى الملف الذي اريد الكتابه فيه تخبريني بأن هناك برنامج يريد التعديل على محتوى الملف ولكي اظهر التعديل الجديد يجب الضغط على Discard Changes and Reload
هنا كتبت المحتوى الذي اريد ولكي اخرج من وضع إدخال المحتوى وأعود الى إدخال الأوامر اضغط ctrl+D وبعدها تعود لوضع ادخال الأوامر وتم حذف ما كان موجود بالملف وكتابة المحتوى الجديد
أما في حال لم أرد حذف المحتوى القديم يجب استخدام اشارتين << بعد ال cat كما في المثال التالي :
ملف f1.txt وكنت قد قمت بكتابة محتوى داخله ، بعد ذلك اردت كتابة محتوى جديد دون حذف القديم لذا استعملت << ثم قمت بكتابة المحتوى الجديد وتمت كتابته دون حذف القديم والحمد لله .

كود:
cat [options] file-names

1) ليكن المثال التالي لعرض محتوى ملف shell.txt وعندما نقول عرض محتوى ملف يعني ذلك عملية قراءة من ملف Read :
اولاً انشئت الملف المطلوب ثم قمت بكتابة نص داخل هذا الملف ولا تنسى عمل save بعد ذلك لكي اعرض محتوى الملف على على النافذة استخدمت الأمر cat وتم عرضها والحمد لله .
2) هذا المثال للكتابة على ملف shell.txt وسنحتاج الى هذه الاشاره < بعد cat لكي يقوم بالكتابة على ملف لا القراءة منه ، وعندما نقول كتابة وتخزين محتوى يعني لك أن العملية Write:
نلاحظ أمرين الأول عند كتابة الأمر والضغط على enter النافذة اصبحت تنتظر مني كتابة المحتوى الذي اريده داخل الملف
الأمر الثاني ظهرت رساله اعلى الملف الذي اريد الكتابه فيه تخبريني بأن هناك برنامج يريد التعديل على محتوى الملف ولكي اظهر التعديل الجديد يجب الضغط على Discard Changes and Reload
هنا كتبت المحتوى الذي اريد ولكي اخرج من وضع إدخال المحتوى وأعود الى إدخال الأوامر اضغط ctrl+D وبعدها تعود لوضع ادخال الأوامر وتم حذف ما كان موجود بالملف وكتابة المحتوى الجديد
أما في حال لم أرد حذف المحتوى القديم يجب استخدام اشارتين << بعد ال cat كما في المثال التالي :
ملف f1.txt وكنت قد قمت بكتابة محتوى داخله ، بعد ذلك اردت كتابة محتوى جديد دون حذف القديم لذا استعملت << ثم قمت بكتابة المحتوى الجديد وتمت كتابته دون حذف القديم والحمد لله .
cp
cp : اختصار لـِ (Copy) ويقوم هذا الأمر بنسخ الملفات أو المجلدات من مكان إلى آخر و يمكن استخدامه لنسخ ملف واحد، ملفات متعددة، أو حتى مجلدات كاملة.
الصيغة العامة له :
source files : هو الملف او المجلد المراد نسخه ويمكن نسخ اكثر من ملف او مجلد الى مكان معين
Destination file : هو الملف أو المجلد المراد النسخ فيه
في حال كان Destination file غير موجود فأنه يتم انشاءه بشكل تلقائي ووضع source file فيه
الآن لنأخذ مثال عملي على ذلك :
لنعمل على نسخ ملف shell.txt الى مجلد dir :
يمكن ايضاً نسخ محتوى ملف معين الى ملف آخر :
هنا كان لدي ملف txt01.txt فيه محتوى أردت نسخه على ملف آخر بأسم txt02.txt ولكنه غير موجود
عند استعمال cp تم انشاءه ونسخ المحتوى عليه بفضل الله .

كود:
cp [Source Files] [Destination File]
Destination file : هو الملف أو المجلد المراد النسخ فيه
في حال كان Destination file غير موجود فأنه يتم انشاءه بشكل تلقائي ووضع source file فيه

لنعمل على نسخ ملف shell.txt الى مجلد dir :
يمكن ايضاً نسخ محتوى ملف معين الى ملف آخر :
هنا كان لدي ملف txt01.txt فيه محتوى أردت نسخه على ملف آخر بأسم txt02.txt ولكنه غير موجود
عند استعمال cp تم انشاءه ونسخ المحتوى عليه بفضل الله .
mv
mv : هذا الأمر يُستخدم لنقل الملفات من مكان إلى آخر أو لإعادة تسمية الملفات.
الصيغة العامة له :
هذه الصيغة لإعادة تسمية ملف معين :
وهذه الصيغة لنقل ملف الى مكان آخر :
وهنا ايضاً اذا لم يكن المكان المراد النقل إليه موجود، يتم انشائه .
الآن لنأخذ مثال عملي على ذلك :
لأعادة تسمة الملف f1.txt بأسم f2.txt :
عند الضغط على enter سيتغير اسم الملف :
وهنا مثال آخر لعملية نقل ملف f2.txt الى مجلد dir :

هذه الصيغة لإعادة تسمية ملف معين :
كود:
Syntax mv [file] [newName]
وهذه الصيغة لنقل ملف الى مكان آخر :
كود:
mv [fileName OR DirectoryName] [FileName OR DirectoryName]

لأعادة تسمة الملف f1.txt بأسم f2.txt :
عند الضغط على enter سيتغير اسم الملف :
وهنا مثال آخر لعملية نقل ملف f2.txt الى مجلد dir :
man
man : اختصار لـِ manual ويُستخدم لعرض صفحات المساعدة (الدليل) الخاصة بالأوامر في Linux.
الصيغة العامة له :
الآن لنأخذ مثال عملي على ذلك :
لنقوم بعرض الدليل الخاص بالأمر touch :
عند الضغط على enter سيقوم بعرض كافه المعلومات عن الأمر touch وكيفية استخدامه وال options الخاصه فيه :
وكما ترون قام بأعطائنا كل معلومات الأمر touch ولكي نخرج من صفحة ال manual فقط اضغط على الحرف q أما اذا كانت بحاجه للمساعده اكثر اضغط h
ال manual page مهمه جداً سواء للأوامر أو كما سنتعلم لاحقاً للدوال (Functions or System Calls) في لغة ال C أو المكتبات (Libraries) أي أن هناك عدة أقسام يمكننا استخدام ال page manual فيها ولكل قسم رقم معين ثابت يوضع بعد ال man كما يلي :

كود:
man [COMMAND NAME]

لنقوم بعرض الدليل الخاص بالأمر touch :
عند الضغط على enter سيقوم بعرض كافه المعلومات عن الأمر touch وكيفية استخدامه وال options الخاصه فيه :
وكما ترون قام بأعطائنا كل معلومات الأمر touch ولكي نخرج من صفحة ال manual فقط اضغط على الحرف q أما اذا كانت بحاجه للمساعده اكثر اضغط h
ال manual page مهمه جداً سواء للأوامر أو كما سنتعلم لاحقاً للدوال (Functions or System Calls) في لغة ال C أو المكتبات (Libraries) أي أن هناك عدة أقسام يمكننا استخدام ال page manual فيها ولكل قسم رقم معين ثابت يوضع بعد ال man كما يلي :
القسم | مثال عليه | شرح للمثال |
---|---|---|
القسم 1 أوامر المستخدم (termenal command) | man 1 touch | ستعرض لك صفحة المساعدة الخاصة بأمر touch (الذي يُستخدم لإنشاء أو تحديث تاريخ الملفات). |
القسم 2 الدوال (System Calls) | man 2 open | سيعرض لك صفحة المساعدة التي تشرح دالة open الخاصة بالنظام، والتي تُستخدم لفتح الملفات في البرمجة. |
القسم 3 الدوال المكتبية (Library Functions) | man 3 strlen | سيعرض صفحة المساعدة الخاصة بدالة strlen في القسم 3، والتي تشرح كيفية حساب عدد الحروف في سلسلة نصية. |
وهناك اقسام آخرى ايضاً ولكن استخدامها اقل مثل :
القسم 4: ملفات الجهاز (Device files)
القسم 5: ملفات التكوين (Configuration files)
القسم 6: الألعاب (Games)
القسم 7: معايير ووثائق (Miscellaneous)
القسم 8: أوامر المسؤول (System administration commands)
القسم 4: ملفات الجهاز (Device files)
القسم 5: ملفات التكوين (Configuration files)
القسم 6: الألعاب (Games)
القسم 7: معايير ووثائق (Miscellaneous)
القسم 8: أوامر المسؤول (System administration commands)
help
help : هو أمر يُستخدم للحصول على المساعدة حول أوامر النظام، وهو مفيد للحصول على معلومات سريعة حول كيفية استخدام الأوامر بدون الحاجة إلى البحث عن صفحات الدليل عبر man.
الصيغة العامة له :
الآن لنأخذ مثال عملي على ذلك :
لنقوم بطلب المساعده لأستخدام الأمر touch :
نلاحظ أنه قام بإعطائي معلومات سريعه عن الأمر دون الذهاي الى صفحة آخرى
ولكن لماذا نستخدم help مع أن man تفعل نفس الشيء تقريباً
؟
نقوم بذلك لسببين :
1. سهولة الوصول للمساعدة: يوفر help طريقة سريعة للحصول على معلومات حول الأوامر دون الحاجة إلى صفحات ال manual المعقدة.
2. التركيز على الأوامر المدمجة: يتم استخدامه فقط للأوامر المتاحة داخل ال shell فقط كالتي تعلمناها cd , cp , touch وغيرها ، وليس للأوامر الخارجية أو دوال النظام.
الآن بفضل الله نكون قد أنهينها معظم الأوامر التي نحتاجها واذا احتجنا الى المزيد اثناء الشرح سنقوم بشرحها في ذلك الوقت
الان ننتقل الى القسم الثاني وهو كيفية تجميع وتشغيل برنامج C على نظام Linux :
لإنشاء وتشغيل ملف C على Kali Linux، يجب أتباع الخطوات التالية :

كود:
[COMMAND NAME] --help

لنقوم بطلب المساعده لأستخدام الأمر touch :
نلاحظ أنه قام بإعطائي معلومات سريعه عن الأمر دون الذهاي الى صفحة آخرى
ولكن لماذا نستخدم help مع أن man تفعل نفس الشيء تقريباً

نقوم بذلك لسببين :
1. سهولة الوصول للمساعدة: يوفر help طريقة سريعة للحصول على معلومات حول الأوامر دون الحاجة إلى صفحات ال manual المعقدة.
2. التركيز على الأوامر المدمجة: يتم استخدامه فقط للأوامر المتاحة داخل ال shell فقط كالتي تعلمناها cd , cp , touch وغيرها ، وليس للأوامر الخارجية أو دوال النظام.
الآن بفضل الله نكون قد أنهينها معظم الأوامر التي نحتاجها واذا احتجنا الى المزيد اثناء الشرح سنقوم بشرحها في ذلك الوقت
الان ننتقل الى القسم الثاني وهو كيفية تجميع وتشغيل برنامج C على نظام Linux :
لإنشاء وتشغيل ملف C على Kali Linux، يجب أتباع الخطوات التالية :
1. تثبيت الcompiler :
الcompiler : هو الذي يترجم أكواد C إلى برامج قابله للتنفيذ وهنا سنستخدم ال GCC compiler .
ولتثبيت GCC نستخدم سنفعل التالي:
اولاً يجب تحديث قاعدة البيانات الخاصة بالحزم (packages) ليقوم النظام بالتحقق من أحدث الإصدارات المتوفرة لجميع الحزم المثبتة والمستودعات المضافة، مما يتيح لك الحصول على تحديثات جديدة أو حزم جديدة قبل تثبيتها وذلك لأننا نريد تثبيت أحدث اصدار من ال GCC compiler .
ولكي نفعل ذلك نستخدم الأمر التالي على ال termenal :
كود:
sudo apt update[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
ثانياً عند الانتهاء من التحديث سنقوم بتثبين ال GCC compiler لذا سنستخدم الأمر التالي :
كود:
sudo apt install build-essential[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
في ال build-essential سنجد مجموعة كبيرة من الأدوات الأساسية مثل GCC و make اللازمة لبناء البرامج لذا قمنا باستخدامها.
ثالثاً اذا كنت تريد التأكد من تثبيت ال GCC compiler استخدم الأمر التالي:
وسيعرض لك إصدار GCC المثبت على نظامك.
ثالثاً اذا كنت تريد التأكد من تثبيت ال GCC compiler استخدم الأمر التالي:
كود:
gcc --version
2. كتابة برنامج C
يمكنك كتابة برنامج C بطريقتين ولكن قبل ذكر الطريقيتين لنشرح الكود الذي نريد كتابته ثم نذكر الطريقتين وكيفية استخدامهما :
ليكن الكود هو التالي :
هل رأيت إنه يشبة كود ++C كثيرا
الآن لنفهمه سطرا سطرا :
الكود يقوم بإدراج مكتبة stdio.h لتوفير وظائف الإدخال والإخراج (ادخال المحتوى write واخراج المحتوى read) .
بعد ذلك يبدأ البرنامج من الدالة main الدالة الأساسية في كل برنامج C، وهي نقطة البداية التي يبدأ منها تنفيذ البرنامج ، ممكن ان تقوم بارجاع قيمة int او دون ارجاع void هنا جعلناها ترجع قيمة لذا استخدمنا معها int .
بعدها اردنا طباعة نص معين وهو !Hello, World لكي نقوم بذلك يجب استخدام printf وهي دالة من مكتبة stdio.h تقوم بطباعة النصوص إلى شاشة الإخراج التي عادةً ما تكون شاشة الـ terminal وال n\ لكي يقوم بالنزول الى سطر جديد اذا اراد طباعة نص آخر.
الان يجب ارجاع قيمة ولكن هذه القيمه يجب أن تدل على أن البرنامج أنتهى ، القيمة المستخدمه لذلك 0 لذا قمنا بكتابة return 0
بهذا، يعمل البرنامج على طباعة "Hello, World!" على الشاشة ثم ينتهي.
بعد معرفتنا بالكود لنتعلم طريقتين لإنشاء ملفات c :
الطريقة الأولى : تنشئ ملف بأمتداد c. وثم تقوم بفتحه والكتابة بداخله كما يلي :
الطريقه الثانية : تستخدم محرر نصوص مثل vim للكتابة مباشرة على نفس ال terminal
ولفعل ذلك اتبع الخطوات التالية :
سيفتح محرر vim الملف Clang.c وإذا كان الملف غير موجود، فسيتم إنشاؤه.
عند فتح vim، يبدأ المحرر في وضع Normal Mode، مما يعني أنه لا يمكنك كتابة النص مباشرة. للكتابة، يجب عليك التبديل إلى Insert Mode.
للانتقال إلى Insert Mode، اضغط على مفتاح i , الآن يمكنك كتابة برنامج C
بعد أن اكملت البرنامج ، لحفظ الملف والخروج من vim اضغط esc للعودة الى Normal Mode ثم اكتب الأمر التالي للحفظ والخروج wq: أما اذا اردت الحفظ دون الخروج اكتب الأمر w:
وبهذا لستعود الى command terminal
ليكن الكود هو التالي :
C:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}

الآن لنفهمه سطرا سطرا :




بهذا، يعمل البرنامج على طباعة "Hello, World!" على الشاشة ثم ينتهي.
بعد معرفتنا بالكود لنتعلم طريقتين لإنشاء ملفات c :
الطريقة الأولى : تنشئ ملف بأمتداد c. وثم تقوم بفتحه والكتابة بداخله كما يلي :
الطريقه الثانية : تستخدم محرر نصوص مثل vim للكتابة مباشرة على نفس ال terminal
ولفعل ذلك اتبع الخطوات التالية :
سيفتح محرر vim الملف Clang.c وإذا كان الملف غير موجود، فسيتم إنشاؤه.
عند فتح vim، يبدأ المحرر في وضع Normal Mode، مما يعني أنه لا يمكنك كتابة النص مباشرة. للكتابة، يجب عليك التبديل إلى Insert Mode.
للانتقال إلى Insert Mode، اضغط على مفتاح i , الآن يمكنك كتابة برنامج C
بعد أن اكملت البرنامج ، لحفظ الملف والخروج من vim اضغط esc للعودة الى Normal Mode ثم اكتب الأمر التالي للحفظ والخروج wq: أما اذا اردت الحفظ دون الخروج اكتب الأمر w:
وبهذا لستعود الى command terminal
3. ترجمة البرنامج باستخدام GCC وتشغيل البرنامج :
لترجمة ملف ال C الى برنامج قابل للتنفيذ سنستخدم ال GCC compiler كما يلي :
وبهذا تم تحويل الملف Clang.c الى ملف run قابل للتنفيذ , الملف القابل للتنفيذ يمكنك تسميه كما تريد وانا هنا اسميه run
بعد ذلك سنقوم بالتنفيذ بأستخدم /. واسم الملف القابل للتنفيذ كما يلي :
وبهذا نكون قد أنشاءنا بفضل الله أول برنامج بلغة C وقمنا بتنفيذه ايضاً
آخر جزئية من درسنا لهذا اليوم ستقومون أنتم بفعلها

اريد منكم بعض تنفيذ بعض المهام لقياس مدى فهمكم للدرس :
تدريب1: اكتب اسمك وعمرك في ملف text.txt باستخدام أمر cat.
تدريب2: انسخ محتويات ملف text.txt إلى ملف text2.txt.
تدريب3: اعرض الدليل الخاص بالأمر ls .
تدريب4: اكتب برنامج c يقوم بطباعة اسمك وتخصصك الجامعي ومن ثم قم بتنفيذه .
أنت الآن جاهز بأذن الله لكي تبدأ رحلتك الفعلية بال operating system وهذا ما سنبدأ به الدرس القادم أن شاء الله.
كُنْ على اتم الإستعداد
وأخيرا إذا كانت هناك أي مشكلة لا تتردد في اخباري بذلك فمن دواعي سروري مساعدتكم لحل المشكلة
ونختم بدعائنا اللهم انفعنا بما علمتنا، وعلمنا ما ينفعنا، وزدنا علمًا يا أرحم الراحمين
نراكم قريبا
والسلام عليكم ورحمة الله وبركاته
المرفقات
التعديل الأخير: