مضى على الشبكة و يوم من العطاء.

الدرس الثالث : أوامر لينكس (الجزء الثاني) وتشغيل اول برنامج بلغة C

Sakura02Sakura02 is verified member.

./عضو نشيط
.:: الرقابة والتنظيم ::.
.:: طاقم المشرفين ::.

السمعة:

السلام عليكم ورحمة الله وبركاته

أهلا بكم مرة آخرى مع موضوع جديد في سلسلة تطبيقات عملية على أنظمة التشغيل

في هذا الدرس سنقوم بإذن الله بأكمال ما بدأناه في الدرس الماضي وهي Linux commands وسنتعلم ايضاً كيفية عمل تجميع (compile) وتنفيذ (Run) كود بلغة C، كما أننا سوف نكتب سوياً أول برنامج لنا بهذه اللغة أن شاء الله، وكما أخبرتكم سابقاً من كان لديه معرفة بلغة ++C فهذا يكفي لتعلم لغة C فهي قريبه جداً منها وأنا بأذن في كل درس سأشرح كل الأختلافات المتعلقة بهذه اللغة لذا لا تقلقو ابداً ...

إذا كنت تشاهد هذا الموضوع قبل مقدمة السلسلة فمن فضلك توقف قليلاً واذهب إلى هذا الرابط مقدمة في سلسلة تطبيقات عملية على أنظمة التشغيل وأقرأ عما سنفعله في هذه السلسلة وأيضاً قم بدراسة المواضيع السابقة ثم عد مجدداً لكي نبدأ على بركة الله في هذا الدرس

12506-82c79048cfa7c899b71c63326ca3121d.webp

اولاً سوف نكمل ال Linux commands, بسم الله :

cat : اختصار لـِ Concatenate ويعمل هذا الأمر على عرض محتوى الملفات أو كتابة محتوى على الملفات.

📝 الصيغة العامة له :
كود:
cat [options] file-names


🔰الآن لنأخذ مثال عملي على ذلك :
1) ليكن المثال التالي لعرض محتوى ملف shell.txt وعندما نقول عرض محتوى ملف يعني ذلك عملية قراءة من ملف Read :

1731667567268.webp


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

2) هذا المثال للكتابة على ملف shell.txt وسنحتاج الى هذه الاشاره < بعد cat لكي يقوم بالكتابة على ملف لا القراءة منه ، وعندما نقول كتابة وتخزين محتوى يعني لك أن العملية Write:

1731668080403.webp

نلاحظ أمرين الأول عند كتابة الأمر والضغط على enter النافذة اصبحت تنتظر مني كتابة المحتوى الذي اريده داخل الملف
الأمر الثاني ظهرت رساله اعلى الملف الذي اريد الكتابه فيه تخبريني بأن هناك برنامج يريد التعديل على محتوى الملف ولكي اظهر التعديل الجديد يجب الضغط على Discard Changes and Reload
1731668157918.webp

هنا كتبت المحتوى الذي اريد ولكي اخرج من وضع إدخال المحتوى وأعود الى إدخال الأوامر اضغط ctrl+D وبعدها تعود لوضع ادخال الأوامر وتم حذف ما كان موجود بالملف وكتابة المحتوى الجديد

أما في حال لم أرد حذف المحتوى القديم يجب استخدام اشارتين << بعد ال cat كما في المثال التالي :
1731668850129.webp

ملف f1.txt وكنت قد قمت بكتابة محتوى داخله ، بعد ذلك اردت كتابة محتوى جديد دون حذف القديم لذا استعملت << ثم قمت بكتابة المحتوى الجديد وتمت كتابته دون حذف القديم والحمد لله .

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

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



🔰الآن لنأخذ مثال عملي على ذلك :

لنعمل على نسخ ملف shell.txt الى مجلد dir :

1731669508478.webp

يمكن ايضاً نسخ محتوى ملف معين الى ملف آخر :
1731669897195.webp

هنا كان لدي ملف txt01.txt فيه محتوى أردت نسخه على ملف آخر بأسم txt02.txt ولكنه غير موجود
عند استعمال cp تم انشاءه ونسخ المحتوى عليه بفضل الله .

mv : هذا الأمر يُستخدم لنقل الملفات من مكان إلى آخر أو لإعادة تسمية الملفات.

📝 الصيغة العامة له :

هذه الصيغة لإعادة تسمية ملف معين :
كود:
Syntax mv [file] [newName]

وهذه الصيغة لنقل ملف الى مكان آخر :
كود:
mv [fileName OR DirectoryName] [FileName OR DirectoryName]
وهنا ايضاً اذا لم يكن المكان المراد النقل إليه موجود، يتم انشائه .



🔰الآن لنأخذ مثال عملي على ذلك :

لأعادة تسمة الملف f1.txt بأسم f2.txt :
1731670756379.webp

عند الضغط على enter سيتغير اسم الملف :
1731670816375.webp


وهنا مثال آخر لعملية نقل ملف f2.txt الى مجلد dir :
1731670952803.webp

man : اختصار لـِ manual ويُستخدم لعرض صفحات المساعدة (الدليل) الخاصة بالأوامر في Linux.

📝الصيغة العامة له :
كود:
man [COMMAND NAME]

🔰الآن لنأخذ مثال عملي على ذلك :
لنقوم بعرض الدليل الخاص بالأمر touch :

1731671440373.webp


عند الضغط على enter سيقوم بعرض كافه المعلومات عن الأمر touch وكيفية استخدامه وال options الخاصه فيه :

1731671518737.webp


وكما ترون قام بأعطائنا كل معلومات الأمر 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)

help : هو أمر يُستخدم للحصول على المساعدة حول أوامر النظام، وهو مفيد للحصول على معلومات سريعة حول كيفية استخدام الأوامر بدون الحاجة إلى البحث عن صفحات الدليل عبر man.

📝الصيغة العامة له :
كود:
[COMMAND NAME] --help

🔰الآن لنأخذ مثال عملي على ذلك :
لنقوم بطلب المساعده لأستخدام الأمر touch :
1731672688281.webp

نلاحظ أنه قام بإعطائي معلومات سريعه عن الأمر دون الذهاي الى صفحة آخرى


ولكن لماذا نستخدم help مع أن man تفعل نفس الشيء تقريباً🤔؟
نقوم بذلك لسببين :

1. سهولة الوصول للمساعدة: يوفر help طريقة سريعة للحصول على معلومات حول الأوامر دون الحاجة إلى صفحات ال manual المعقدة.
2. التركيز على الأوامر المدمجة: يتم استخدامه فقط للأوامر المتاحة داخل ال shell فقط كالتي تعلمناها cd , cp , touch وغيرها ، وليس للأوامر الخارجية أو دوال النظام.

الآن بفضل الله نكون قد أنهينها معظم الأوامر التي نحتاجها واذا احتجنا الى المزيد اثناء الشرح سنقوم بشرحها في ذلك الوقت

12506-82c79048cfa7c899b71c63326ca3121d.webp

الان ننتقل الى القسم الثاني وهو كيفية تجميع وتشغيل برنامج 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 --version
وسيعرض لك إصدار GCC المثبت على نظامك.

2. كتابة برنامج C
يمكنك كتابة برنامج C بطريقتين ولكن قبل ذكر الطريقيتين لنشرح الكود الذي نريد كتابته ثم نذكر الطريقتين وكيفية استخدامهما :
ليكن الكود هو التالي :
C:
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}
هل رأيت إنه يشبة كود ++C كثيرا 😁

الآن لنفهمه سطرا سطرا :
🔸الكود يقوم بإدراج مكتبة stdio.h لتوفير وظائف الإدخال والإخراج (ادخال المحتوى write واخراج المحتوى read) .
🔸 بعد ذلك يبدأ البرنامج من الدالة main الدالة الأساسية في كل برنامج C، وهي نقطة البداية التي يبدأ منها تنفيذ البرنامج ، ممكن ان تقوم بارجاع قيمة int او دون ارجاع void هنا جعلناها ترجع قيمة لذا استخدمنا معها int .
🔸بعدها اردنا طباعة نص معين وهو !Hello, World لكي نقوم بذلك يجب استخدام printf وهي دالة من مكتبة stdio.h تقوم بطباعة النصوص إلى شاشة الإخراج التي عادةً ما تكون شاشة الـ terminal وال n\ لكي يقوم بالنزول الى سطر جديد اذا اراد طباعة نص آخر.
🔸الان يجب ارجاع قيمة ولكن هذه القيمه يجب أن تدل على أن البرنامج أنتهى ، القيمة المستخدمه لذلك 0 لذا قمنا بكتابة return 0

بهذا، يعمل البرنامج على طباعة "Hello, World!" على الشاشة ثم ينتهي.

بعد معرفتنا بالكود لنتعلم طريقتين لإنشاء ملفات c :
الطريقة الأولى :
تنشئ ملف بأمتداد c. وثم تقوم بفتحه والكتابة بداخله كما يلي :

1731674626243.webp


الطريقه الثانية : تستخدم محرر نصوص مثل vim للكتابة مباشرة على نفس ال terminal
ولفعل ذلك اتبع الخطوات التالية :


1731674730771.webp


سيفتح محرر vim الملف Clang.c وإذا كان الملف غير موجود، فسيتم إنشاؤه.
عند فتح vim، يبدأ المحرر في وضع Normal Mode، مما يعني أنه لا يمكنك كتابة النص مباشرة. للكتابة، يجب عليك التبديل إلى Insert Mode.
للانتقال إلى Insert Mode، اضغط على مفتاح i , الآن يمكنك كتابة برنامج C

1731675686581.webp

بعد أن اكملت البرنامج ، لحفظ الملف والخروج من vim اضغط esc للعودة الى Normal Mode ثم اكتب الأمر التالي للحفظ والخروج wq: أما اذا اردت الحفظ دون الخروج اكتب الأمر w:
1731675723914.webp

وبهذا لستعود الى command terminal

3. ترجمة البرنامج باستخدام GCC وتشغيل البرنامج :

لترجمة ملف ال C الى برنامج قابل للتنفيذ سنستخدم ال GCC compiler كما يلي :

1731675768918.webp


وبهذا تم تحويل الملف Clang.c الى ملف run قابل للتنفيذ , الملف القابل للتنفيذ يمكنك تسميه كما تريد وانا هنا اسميه run
بعد ذلك سنقوم بالتنفيذ بأستخدم /. واسم الملف القابل للتنفيذ كما يلي :

1731675941917.webp


وبهذا نكون قد أنشاءنا بفضل الله أول برنامج بلغة C وقمنا بتنفيذه ايضاً

12506-82c79048cfa7c899b71c63326ca3121d.webp


آخر جزئية من درسنا لهذا اليوم ستقومون أنتم بفعلها 😇 :

اريد منكم بعض تنفيذ بعض المهام لقياس مدى فهمكم للدرس :



تدريب1: اكتب اسمك وعمرك في ملف text.txt باستخدام أمر cat.


تدريب2: انسخ محتويات ملف text.txt إلى ملف text2.txt.


تدريب3: اعرض الدليل الخاص بالأمر ls .


تدريب4: اكتب برنامج c يقوم بطباعة اسمك وتخصصك الجامعي ومن ثم قم بتنفيذه .

أنت الآن جاهز بأذن الله لكي تبدأ رحلتك الفعلية بال operating system وهذا ما سنبدأ به الدرس القادم أن شاء الله.
كُنْ على اتم الإستعداد

وأخيرا إذا كانت هناك أي مشكلة لا تتردد في اخباري بذلك فمن دواعي سروري مساعدتكم لحل المشكلة


ونختم بدعائنا اللهم انفعنا بما علمتنا، وعلمنا ما ينفعنا، وزدنا علمًا يا أرحم الراحمين


نراكم قريبا
والسلام عليكم ورحمة الله وبركاته

 

المرفقات

  • 1731674957646.webp
    1731674957646.webp
    12.8 KB · المشاهدات: 85
  • 1731675256862.webp
    1731675256862.webp
    12.3 KB · المشاهدات: 88
  • 1731675379225.webp
    1731675379225.webp
    12.3 KB · المشاهدات: 85
التعديل الأخير:
السلام عليكم ورحمة الله وبركاته

أهلا بكم مرة آخرى مع موضوع جديد في سلسلة تطبيقات عملية على أنظمة التشغيل

في هذا الدرس سنقوم بإذن الله بأكمال ما بدأناه في الدرس الماضي وهي Linux commands وسنتعلم ايضاً كيفية عمل تجميع (compile) وتنفيذ (Run) كود بلغة C، كما أننا سوف نكتب سوياً أول برنامج لنا بهذه اللغة أن شاء الله، وكما أخبرتكم سابقاً من كان لديه معرفة بلغة ++C فهذا يكفي لتعلم لغة C فهي قريبه جداً منها وأنا بأذن في كل درس سأشرح كل الأختلافات المتعلقة بهذه اللغة لذا لا تقلقو ابداً ...

إذا كنت تشاهد هذا الموضوع قبل مقدمة السلسلة فمن فضلك توقف قليلاً واذهب إلى هذا الرابط مقدمة في سلسلة تطبيقات عملية على أنظمة التشغيل وأقرأ عما سنفعله في هذه السلسلة وأيضاً قم بدراسة المواضيع السابقة ثم عد مجدداً لكي نبدأ على بركة الله في هذا الدرس

مشاهدة المرفق 15584
اولاً سوف نكمل ال Linux commands, بسم الله :


cat : اختصار لـِ Concatenate ويعمل هذا الأمر على عرض محتوى الملفات أو كتابة محتوى على الملفات.

📝 الصيغة العامة له :
كود:
cat [options] file-names


🔰الآن لنأخذ مثال عملي على ذلك :
1) ليكن المثال التالي لعرض محتوى ملف shell.txt وعندما نقول عرض محتوى ملف يعني ذلك عملية قراءة من ملف Read :

مشاهدة المرفق 15572

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

2) هذا المثال للكتابة على ملف shell.txt وسنحتاج الى هذه الاشاره < بعد cat لكي يقوم بالكتابة على ملف لا القراءة منه ، وعندما نقول كتابة وتخزين محتوى يعني لك أن العملية Write:

مشاهدة المرفق 15573
نلاحظ أمرين الأول عند كتابة الأمر والضغط على enter النافذة اصبحت تنتظر مني كتابة المحتوى الذي اريده داخل الملف
الأمر الثاني ظهرت رساله اعلى الملف الذي اريد الكتابه فيه تخبريني بأن هناك برنامج يريد التعديل على محتوى الملف ولكي اظهر التعديل الجديد يجب الضغط على Discard Changes and Reload
مشاهدة المرفق 15574
هنا كتبت المحتوى الذي اريد ولكي اخرج من وضع إدخال المحتوى وأعود الى إدخال الأوامر اضغط ctrl+D وبعدها تعود لوضع ادخال الأوامر وتم حذف ما كان موجود بالملف وكتابة المحتوى الجديد

أما في حال لم أرد حذف المحتوى القديم يجب استخدام اشارتين << بعد ال cat كما في المثال التالي :
مشاهدة المرفق 15575
ملف f1.txt وكنت قد قمت بكتابة محتوى داخله ، بعد ذلك اردت كتابة محتوى جديد دون حذف القديم لذا استعملت << ثم قمت بكتابة المحتوى الجديد وتمت كتابته دون حذف القديم والحمد لله .


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

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



🔰الآن لنأخذ مثال عملي على ذلك :

لنعمل على نسخ ملف shell.txt الى مجلد dir :

مشاهدة المرفق 15576
يمكن ايضاً نسخ محتوى ملف معين الى ملف آخر :
مشاهدة المرفق 15577
هنا كان لدي ملف txt01.txt فيه محتوى أردت نسخه على ملف آخر بأسم txt02.txt ولكنه غير موجود
عند استعمال cp تم انشاءه ونسخ المحتوى عليه بفضل الله .


mv : هذا الأمر يُستخدم لنقل الملفات من مكان إلى آخر أو لإعادة تسمية الملفات.

📝 الصيغة العامة له :

هذه الصيغة لإعادة تسمية ملف معين :
كود:
Syntax mv [file] [newName]

وهذه الصيغة لنقل ملف الى مكان آخر :
كود:
mv [fileName OR DirectoryName] [FileName OR DirectoryName]
وهنا ايضاً اذا لم يكن المكان المراد النقل إليه موجود، يتم انشائه .



🔰الآن لنأخذ مثال عملي على ذلك :

لأعادة تسمة الملف f1.txt بأسم f2.txt :
مشاهدة المرفق 15578
عند الضغط على enter سيتغير اسم الملف :
مشاهدة المرفق 15579

وهنا مثال آخر لعملية نقل ملف f2.txt الى مجلد dir :
مشاهدة المرفق 15580


man : اختصار لـِ manual ويُستخدم لعرض صفحات المساعدة (الدليل) الخاصة بالأوامر في Linux.

📝الصيغة العامة له :
كود:
man [COMMAND NAME]

🔰الآن لنأخذ مثال عملي على ذلك :
لنقوم بعرض الدليل الخاص بالأمر touch :

مشاهدة المرفق 15581

عند الضغط على enter سيقوم بعرض كافه المعلومات عن الأمر touch وكيفية استخدامه وال options الخاصه فيه :

مشاهدة المرفق 15582

وكما ترون قام بأعطائنا كل معلومات الأمر 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)


help : هو أمر يُستخدم للحصول على المساعدة حول أوامر النظام، وهو مفيد للحصول على معلومات سريعة حول كيفية استخدام الأوامر بدون الحاجة إلى البحث عن صفحات الدليل عبر man.

📝الصيغة العامة له :
كود:
[COMMAND NAME] --help

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


ولكن لماذا نستخدم help مع أن man تفعل نفس الشيء تقريباً🤔؟
نقوم بذلك لسببين :

1. سهولة الوصول للمساعدة: يوفر help طريقة سريعة للحصول على معلومات حول الأوامر دون الحاجة إلى صفحات ال manual المعقدة.
2. التركيز على الأوامر المدمجة: يتم استخدامه فقط للأوامر المتاحة داخل ال shell فقط كالتي تعلمناها cd , cp , touch وغيرها ، وليس للأوامر الخارجية أو دوال النظام.

الآن بفضل الله نكون قد أنهينها معظم الأوامر التي نحتاجها واذا احتجنا الى المزيد اثناء الشرح سنقوم بشرحها في ذلك الوقت

مشاهدة المرفق 15584

الان ننتقل الى القسم الثاني وهو كيفية تجميع وتشغيل برنامج C على نظام Linux :

لإنشاء وتشغيل ملف C على Kali Linux، يجب أتباع الخطوات التالية :


ال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 --version
وسيعرض لك إصدار GCC المثبت على نظامك.


يمكنك كتابة برنامج C بطريقتين ولكن قبل ذكر الطريقيتين لنشرح الكود الذي نريد كتابته ثم نذكر الطريقتين وكيفية استخدامهما :
ليكن الكود هو التالي :
C:
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}
هل رأيت إنه يشبة كود ++C كثيرا 😁

الآن لنفهمه سطرا سطرا :
🔸الكود يقوم بإدراج مكتبة stdio.h لتوفير وظائف الإدخال والإخراج (ادخال المحتوى write واخراج المحتوى read) .
🔸 بعد ذلك يبدأ البرنامج من الدالة main الدالة الأساسية في كل برنامج C، وهي نقطة البداية التي يبدأ منها تنفيذ البرنامج ، ممكن ان تقوم بارجاع قيمة int او دون ارجاع void هنا جعلناها ترجع قيمة لذا استخدمنا معها int .
🔸بعدها اردنا طباعة نص معين وهو !Hello, World لكي نقوم بذلك يجب استخدام printf وهي دالة من مكتبة stdio.h تقوم بطباعة النصوص إلى شاشة الإخراج التي عادةً ما تكون شاشة الـ terminal وال n\ لكي يقوم بالنزول الى سطر جديد اذا اراد طباعة نص آخر.
🔸الان يجب ارجاع قيمة ولكن هذه القيمه يجب أن تدل على أن البرنامج أنتهى ، القيمة المستخدمه لذلك 0 لذا قمنا بكتابة return 0

بهذا، يعمل البرنامج على طباعة "Hello, World!" على الشاشة ثم ينتهي.

بعد معرفتنا بالكود لنتعلم طريقتين لإنشاء ملفات c :
الطريقة الأولى :
تنشئ ملف بأمتداد c. وثم تقوم بفتحه والكتابة بداخله كما يلي :

مشاهدة المرفق 15585

الطريقه الثانية : تستخدم محرر نصوص مثل vim للكتابة مباشرة على نفس ال terminal
ولفعل ذلك اتبع الخطوات التالية :


مشاهدة المرفق 15586

سيفتح محرر vim الملف Clang.c وإذا كان الملف غير موجود، فسيتم إنشاؤه.
عند فتح vim، يبدأ المحرر في وضع Normal Mode، مما يعني أنه لا يمكنك كتابة النص مباشرة. للكتابة، يجب عليك التبديل إلى Insert Mode.
للانتقال إلى Insert Mode، اضغط على مفتاح i , الآن يمكنك كتابة برنامج C

مشاهدة المرفق 15590
بعد أن اكملت البرنامج ، لحفظ الملف والخروج من vim اضغط esc للعودة الى Normal Mode ثم اكتب الأمر التالي للحفظ والخروج wq: أما اذا اردت الحفظ دون الخروج اكتب الأمر w:
مشاهدة المرفق 15591
وبهذا لستعود الى command terminal



لترجمة ملف ال C الى برنامج قابل للتنفيذ سنستخدم ال GCC compiler كما يلي :

مشاهدة المرفق 15592

وبهذا تم تحويل الملف Clang.c الى ملف run قابل للتنفيذ , الملف القابل للتنفيذ يمكنك تسميه كما تريد وانا هنا اسميه run
بعد ذلك سنقوم بالتنفيذ بأستخدم /. واسم الملف القابل للتنفيذ كما يلي :

مشاهدة المرفق 15593

وبهذا نكون قد أنشاءنا بفضل الله أول برنامج بلغة C وقمنا بتنفيذه ايضاً

مشاهدة المرفق 15282

آخر جزئية من درسنا لهذا اليوم ستقومون أنتم بفعلها 😇 :

اريد منكم بعض تنفيذ بعض المهام لقياس مدى فهمكم للدرس :



تدريب1: اكتب اسمك وعمرك في ملف text.txt باستخدام أمر cat.


تدريب2: انسخ محتويات ملف text.txt إلى ملف text2.txt.


تدريب3: اعرض الدليل الخاص بلأمر ls .


تدريب4: اكتب برنامج c يقوم بطباعة اسمك وتخصصك الجامعي ومن ثم قم بتنفيذه .



أنت الآن جاهز بأذن الله لكي تبدأ رحلتك الفعلية بال operating system وهذا ما سنبدأ به الدرس القادم أن شاء الله.
كُنْ على اتم الإستعداد

وأخيرا إذا كانت هناك أي مشكلة لا تتردد في اخباري بذلك فمن دواعي سروري مساعدتكم لحل المشكلة


ونختم بدعائنا اللهم انفعنا بما علمتنا، وعلمنا ما ينفعنا، وزدنا علمًا يا أرحم الراحمين


نراكم قريبا
والسلام عليكم ورحمة الله وبركاته

يعطيك العافيه يا رب شرح جبار بإنتظار المزيد 🔥🔥
 
يعطيكي العافية
السلام عليكم ورحمة الله وبركاته

أهلا بكم مرة آخرى مع موضوع جديد في سلسلة تطبيقات عملية على أنظمة التشغيل

في هذا الدرس سنقوم بإذن الله بأكمال ما بدأناه في الدرس الماضي وهي Linux commands وسنتعلم ايضاً كيفية عمل تجميع (compile) وتنفيذ (Run) كود بلغة C، كما أننا سوف نكتب سوياً أول برنامج لنا بهذه اللغة أن شاء الله، وكما أخبرتكم سابقاً من كان لديه معرفة بلغة ++C فهذا يكفي لتعلم لغة C فهي قريبه جداً منها وأنا بأذن في كل درس سأشرح كل الأختلافات المتعلقة بهذه اللغة لذا لا تقلقو ابداً ...

إذا كنت تشاهد هذا الموضوع قبل مقدمة السلسلة فمن فضلك توقف قليلاً واذهب إلى هذا الرابط مقدمة في سلسلة تطبيقات عملية على أنظمة التشغيل وأقرأ عما سنفعله في هذه السلسلة وأيضاً قم بدراسة المواضيع السابقة ثم عد مجدداً لكي نبدأ على بركة الله في هذا الدرس

مشاهدة المرفق 15584
اولاً سوف نكمل ال Linux commands, بسم الله :


cat : اختصار لـِ Concatenate ويعمل هذا الأمر على عرض محتوى الملفات أو كتابة محتوى على الملفات.

📝 الصيغة العامة له :
كود:
cat [options] file-names


🔰الآن لنأخذ مثال عملي على ذلك :
1) ليكن المثال التالي لعرض محتوى ملف shell.txt وعندما نقول عرض محتوى ملف يعني ذلك عملية قراءة من ملف Read :

مشاهدة المرفق 15572

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

2) هذا المثال للكتابة على ملف shell.txt وسنحتاج الى هذه الاشاره < بعد cat لكي يقوم بالكتابة على ملف لا القراءة منه ، وعندما نقول كتابة وتخزين محتوى يعني لك أن العملية Write:

مشاهدة المرفق 15573
نلاحظ أمرين الأول عند كتابة الأمر والضغط على enter النافذة اصبحت تنتظر مني كتابة المحتوى الذي اريده داخل الملف
الأمر الثاني ظهرت رساله اعلى الملف الذي اريد الكتابه فيه تخبريني بأن هناك برنامج يريد التعديل على محتوى الملف ولكي اظهر التعديل الجديد يجب الضغط على Discard Changes and Reload
مشاهدة المرفق 15574
هنا كتبت المحتوى الذي اريد ولكي اخرج من وضع إدخال المحتوى وأعود الى إدخال الأوامر اضغط ctrl+D وبعدها تعود لوضع ادخال الأوامر وتم حذف ما كان موجود بالملف وكتابة المحتوى الجديد

أما في حال لم أرد حذف المحتوى القديم يجب استخدام اشارتين << بعد ال cat كما في المثال التالي :
مشاهدة المرفق 15575
ملف f1.txt وكنت قد قمت بكتابة محتوى داخله ، بعد ذلك اردت كتابة محتوى جديد دون حذف القديم لذا استعملت << ثم قمت بكتابة المحتوى الجديد وتمت كتابته دون حذف القديم والحمد لله .


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

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



🔰الآن لنأخذ مثال عملي على ذلك :

لنعمل على نسخ ملف shell.txt الى مجلد dir :

مشاهدة المرفق 15576
يمكن ايضاً نسخ محتوى ملف معين الى ملف آخر :
مشاهدة المرفق 15577
هنا كان لدي ملف txt01.txt فيه محتوى أردت نسخه على ملف آخر بأسم txt02.txt ولكنه غير موجود
عند استعمال cp تم انشاءه ونسخ المحتوى عليه بفضل الله .


mv : هذا الأمر يُستخدم لنقل الملفات من مكان إلى آخر أو لإعادة تسمية الملفات.

📝 الصيغة العامة له :

هذه الصيغة لإعادة تسمية ملف معين :
كود:
Syntax mv [file] [newName]

وهذه الصيغة لنقل ملف الى مكان آخر :
كود:
mv [fileName OR DirectoryName] [FileName OR DirectoryName]
وهنا ايضاً اذا لم يكن المكان المراد النقل إليه موجود، يتم انشائه .



🔰الآن لنأخذ مثال عملي على ذلك :

لأعادة تسمة الملف f1.txt بأسم f2.txt :
مشاهدة المرفق 15578
عند الضغط على enter سيتغير اسم الملف :
مشاهدة المرفق 15579

وهنا مثال آخر لعملية نقل ملف f2.txt الى مجلد dir :
مشاهدة المرفق 15580


man : اختصار لـِ manual ويُستخدم لعرض صفحات المساعدة (الدليل) الخاصة بالأوامر في Linux.

📝الصيغة العامة له :
كود:
man [COMMAND NAME]

🔰الآن لنأخذ مثال عملي على ذلك :
لنقوم بعرض الدليل الخاص بالأمر touch :

مشاهدة المرفق 15581

عند الضغط على enter سيقوم بعرض كافه المعلومات عن الأمر touch وكيفية استخدامه وال options الخاصه فيه :

مشاهدة المرفق 15582

وكما ترون قام بأعطائنا كل معلومات الأمر 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)


help : هو أمر يُستخدم للحصول على المساعدة حول أوامر النظام، وهو مفيد للحصول على معلومات سريعة حول كيفية استخدام الأوامر بدون الحاجة إلى البحث عن صفحات الدليل عبر man.

📝الصيغة العامة له :
كود:
[COMMAND NAME] --help

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


ولكن لماذا نستخدم help مع أن man تفعل نفس الشيء تقريباً🤔؟
نقوم بذلك لسببين :

1. سهولة الوصول للمساعدة: يوفر help طريقة سريعة للحصول على معلومات حول الأوامر دون الحاجة إلى صفحات ال manual المعقدة.
2. التركيز على الأوامر المدمجة: يتم استخدامه فقط للأوامر المتاحة داخل ال shell فقط كالتي تعلمناها cd , cp , touch وغيرها ، وليس للأوامر الخارجية أو دوال النظام.

الآن بفضل الله نكون قد أنهينها معظم الأوامر التي نحتاجها واذا احتجنا الى المزيد اثناء الشرح سنقوم بشرحها في ذلك الوقت

مشاهدة المرفق 15584

الان ننتقل الى القسم الثاني وهو كيفية تجميع وتشغيل برنامج C على نظام Linux :

لإنشاء وتشغيل ملف C على Kali Linux، يجب أتباع الخطوات التالية :


الcompiler : هو الذي يترجم أكواد C إلى برامج قابله للتنفيذ وهنا سنستخدم ال GCC compiler .
ولتثبيت GCC نستخدم سنفعل التالي:
اولاً
يجب تحديث قاعدة البيانات الخاصة بالحزم (packages) ليقوم النظام بالتحقق من أحدث الإصدارات المتوفرة لجميع الحزم المثبتة والمستودعات المضافة، مما يتيح لك الحصول على تحديثات جديدة أو حزم جديدة قبل تثبيتها وذلك لأننا نريد تثبيت أحدث اصدار من ال GCC compiler .
ولكي نفعل ذلك نستخدم الأمر التالي على ال termenal :

كود:
sudo apt update[/SIZE][/CENTER][/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER][SIZE=5][CENTER]
سيطلب منك كلمة مرور وهي نفسها كلمة المرور الخاصة بنظام الكالي عندك ادخلها ومن ثم سيبدأ التحديث.




ثانياً عند الانتهاء من التحديث سنقوم بتثبين ال GCC compiler لذا سنستخدم الأمر التالي :
كود:
sudo apt install build-essential[/SIZE][/CENTER][/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER][SIZE=5][CENTER]



في ال build-essential سنجد مجموعة كبيرة من الأدوات الأساسية مثل GCC و make اللازمة لبناء البرامج لذا قمنا باستخدامها.

ثالثاً اذا كنت تريد التأكد من تثبيت ال GCC compiler استخدم الأمر التالي:
كود:
gcc --version
وسيعرض لك إصدار GCC المثبت على نظامك.


يمكنك كتابة برنامج C بطريقتين ولكن قبل ذكر الطريقيتين لنشرح الكود الذي نريد كتابته ثم نذكر الطريقتين وكيفية استخدامهما :
ليكن الكود هو التالي :
C:
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}
هل رأيت إنه يشبة كود ++C كثيرا 😁

الآن لنفهمه سطرا سطرا :
🔸الكود يقوم بإدراج مكتبة stdio.h لتوفير وظائف الإدخال والإخراج (ادخال المحتوى write واخراج المحتوى read) .
🔸 بعد ذلك يبدأ البرنامج من الدالة main الدالة الأساسية في كل برنامج C، وهي نقطة البداية التي يبدأ منها تنفيذ البرنامج ، ممكن ان تقوم بارجاع قيمة int او دون ارجاع void هنا جعلناها ترجع قيمة لذا استخدمنا معها int .
🔸بعدها اردنا طباعة نص معين وهو !Hello, World لكي نقوم بذلك يجب استخدام printf وهي دالة من مكتبة stdio.h تقوم بطباعة النصوص إلى شاشة الإخراج التي عادةً ما تكون شاشة الـ terminal وال n\ لكي يقوم بالنزول الى سطر جديد اذا اراد طباعة نص آخر.
🔸الان يجب ارجاع قيمة ولكن هذه القيمه يجب أن تدل على أن البرنامج أنتهى ، القيمة المستخدمه لذلك 0 لذا قمنا بكتابة return 0

بهذا، يعمل البرنامج على طباعة "Hello, World!" على الشاشة ثم ينتهي.

بعد معرفتنا بالكود لنتعلم طريقتين لإنشاء ملفات c :
الطريقة الأولى :
تنشئ ملف بأمتداد c. وثم تقوم بفتحه والكتابة بداخله كما يلي :

مشاهدة المرفق 15585

الطريقه الثانية : تستخدم محرر نصوص مثل vim للكتابة مباشرة على نفس ال terminal
ولفعل ذلك اتبع الخطوات التالية :


مشاهدة المرفق 15586

سيفتح محرر vim الملف Clang.c وإذا كان الملف غير موجود، فسيتم إنشاؤه.
عند فتح vim، يبدأ المحرر في وضع Normal Mode، مما يعني أنه لا يمكنك كتابة النص مباشرة. للكتابة، يجب عليك التبديل إلى Insert Mode.
للانتقال إلى Insert Mode، اضغط على مفتاح i , الآن يمكنك كتابة برنامج C

مشاهدة المرفق 15590
بعد أن اكملت البرنامج ، لحفظ الملف والخروج من vim اضغط esc للعودة الى Normal Mode ثم اكتب الأمر التالي للحفظ والخروج wq: أما اذا اردت الحفظ دون الخروج اكتب الأمر w:
مشاهدة المرفق 15591
وبهذا لستعود الى command terminal



لترجمة ملف ال C الى برنامج قابل للتنفيذ سنستخدم ال GCC compiler كما يلي :

مشاهدة المرفق 15592

وبهذا تم تحويل الملف Clang.c الى ملف run قابل للتنفيذ , الملف القابل للتنفيذ يمكنك تسميه كما تريد وانا هنا اسميه run
بعد ذلك سنقوم بالتنفيذ بأستخدم /. واسم الملف القابل للتنفيذ كما يلي :

مشاهدة المرفق 15593

وبهذا نكون قد أنشاءنا بفضل الله أول برنامج بلغة C وقمنا بتنفيذه ايضاً

مشاهدة المرفق 15282

آخر جزئية من درسنا لهذا اليوم ستقومون أنتم بفعلها 😇 :

اريد منكم بعض تنفيذ بعض المهام لقياس مدى فهمكم للدرس :



تدريب1: اكتب اسمك وعمرك في ملف text.txt باستخدام أمر cat.


تدريب2: انسخ محتويات ملف text.txt إلى ملف text2.txt.


تدريب3: اعرض الدليل الخاص بلأمر ls .


تدريب4: اكتب برنامج c يقوم بطباعة اسمك وتخصصك الجامعي ومن ثم قم بتنفيذه .



أنت الآن جاهز بأذن الله لكي تبدأ رحلتك الفعلية بال operating system وهذا ما سنبدأ به الدرس القادم أن شاء الله.
كُنْ على اتم الإستعداد

وأخيرا إذا كانت هناك أي مشكلة لا تتردد في اخباري بذلك فمن دواعي سروري مساعدتكم لحل المشكلة


ونختم بدعائنا اللهم انفعنا بما علمتنا، وعلمنا ما ينفعنا، وزدنا علمًا يا أرحم الراحمين


نراكم قريبا
والسلام عليكم ورحمة الله وبركاته




يعطيكي العافية
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى