اللينكس و اليونكس


الدرس الأول: مقدمة عن الحاسب الالي


·
        نقاط الدرس:

1-               معرفة مكونات الحاسب الآلي.

2-               معرفة ماهي الفائدة من النواة (kernel).

3-               معرفة ماهي الفائدة من الغلاف (shell).

4-               معرفة أشهر أنواع الأغلفة.

5-               معرفة نوع الغلاف الحالي باستخدام (echo $shell).

6-               تغيير نوع الغلاف باستخدام الأمر (chsh).
 

·        مكونات الحاسب الآلي:

يتكون أي جهاز حاسب آلي من قسمين رئيسيين إذا عدم أحدهما لن يكون هناك حاسب آلي وهذين القسمين هما :

1-               العتاد (hardware).

2-               البرامج التي تدير هذا العتاد (operating system).

·        العتاد (hardware):

العتاد هو الأجزاء التي تكون لنا الحاسب الآلي.

يتكون العتاد غالباً من أربعة أقسام رئيسية وهي:

1.    وحدة التحكم أو  (CPU) إختصاراً ل (central processing unit) وهو أساس الحاسب الآلي ويمكن تشبيه وحدة التحكم  بالقلب عند الإنسان.

2.    وحدات إدخال (input device) ومنها لوحة المفاتيح والفأرة.

3.    وحدات إخراج (output device) ومنها الشاشة والطابعة.

4.     الذاكرة وهي تنقسم إلى قسمين رئيسيين وهما (RAM) اختصاراً ل (random access memory ) ذاكرة الوصول العشوائية ومحتوى هذا النوع من الذاكرة يبقى إلى ان يتم إقفال جهاز الحاسب ثم بعد ذلك يتم إفراغ محتواها. أما النوع الآخر من الذاكرة فهو (ROM) اختصاراً ل (read only memory) ذاكرة القراءة فقط او ما يعرف بال (BIOS) وهي تحتوي على معلومات جهاز الحاسب الالي كاملاً من المعالج وكروت الشاشة و الصوت وغيرها.

 

·        البرامج التي تدير العتاد (operating system):

يتكون نظام التشغيل يونكس (Unix) من ثلاثة أقسام رئيسية وهي :

·        النواة (kernel).

·        الغلاف (shell).

·        نظام الملفات (The file system).

 

·        النواة (kernel):

تعتبر النواة هي أساس نظام التشغيل كما هو متضح من اسمها ومن وظائف النواة أنها تقوم بالوظايف الأساسية التالية:

1-               تدير عتاد الحاسب الآلي وذلك بتنظيم تشغيل كل وحدة في جهاز الحاسب.

2-               تتحكم في نقل البيانات والمعلومات بين الأجزاء الصلبة والبرامج التي تعمل على النظام.

3-               تقوم بتنفيذ الأوامر التي يريدها المستخدم.
 

·        الغلاف (shell):

يعتبر الغلاف هو الواجهة التي سيتم الإعتماد عليه في تطبيق الأوامر.وهي تعتبر الواجهة التي يستطيع من خلالها المستخدم أن يقوم بما يريد من عمليات مثلاً كإنشاء ملفات أو حذفها أو ... إلخ .ويتم تكوين هذا الغلاف بواسطة أحد لغات البرمجة مثل لغة (c ,c++) وغيرها كما انه يوجد لها لغة خاصة تعرف ب (shell scripting) وهي تعتبر لغة وذلك لأنها تحتوي على العديد من الجمل الشرطبة والبرمجية مثل ال(ifstatement).

وهنا يتبادر إلى أذهاننا سؤال مهم وهو:

-كيف تفهم النواة (kernel) ما يريده المستخدم؟

يوجد في الغلاف ما يسمى بالمترجم (compiler) ووظيفة هذا المترجم أنه يقوم بتحويل الأمر الذي يقوم بالعمل الذي يريده المستخدم إلى شفرة تكون معلومة لدى النواة (kernel) أنها تقوم بعمل معين.

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

1-               (bourn shell)  واختصاراً تسمى ب(bash): وهي تأخذ العلامة ($) وتظهر هذه العلامة في سطر الأوامر. ويعتبر هذا النوع من الغلاف هو الغلاف الإفتراضي لنظام التشغيل (Unix) وهو عادة يستخدم من قبل مدراء النظام.كما أنه لا يحتوي على ما يعرف بال (aliasing ) و ال (history)وسوف يتم شرحها في دروس قادمة بإذن الله.

2-                (korn shell) واختصاراً تسمى ب (ksh): وهي تأخذ العلامة ($) .ويعتبر هذا النوع من الأغلفة هو النوع المطور من الغلاف السابق (bourn shell) حيث أنه يمتلك نفس مواصفات ال (bourn shell)مع زيادة في المميزات مثل ال (aliasing) و (history)وغيرها.وهي تستخدم من قبل المستحدم العادي للنظام.

3-              (c shell) واختصاراً تسمى (csh): وهي تأخذ العلامة (%).وهذا النوع من الأغلفة التي صممت بواسطة لغة البرمجة (c) بواسطة المبرمجين وهي عالباً ما تستخدم من قبلهم وأيضاً يمكن استخدامها من قبل المستخدمين العاديين الذين يرويدن كفاءة أكبر للنظام وذلك لسرعتها في القيام بالعمليات.

*إذا كنت مديراً للنظام فإن العلامة الإفتراضية لك هي (#).
 

*لرؤية نوع الغلاف الذي تستخدمه حالياً اطبع الجملة التالية على سطر الأوامر:

bash-2.05$ echo $shell

شرح الجملة السابقة كما يلي:

-يستخدم الأمر (echo) لطباعة شيء ما على الشاشة.

-العبارة ($shell) هي عبارة عن متغير من متغيرات الغلاف .

تمارين:

1.    ما هو المقصود بالعتاد ؟ ومما يتكون ؟

2.    ما هي مكونات نظام التشغيل يونكس (Unix) ?

3.    ما هي الوظائف التي تقوم بها النواة؟

4.    أذكر أهم أنواع الأغلفة المتوفرة في نظام التشغيل يونكس (Unix

5.    كيف يمكنك معرفة نوع الغلاف المستعمل حالياً ؟ وكيف يمكنك تغييره؟

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

 

الدرس الثاني - نظام الملفات في اليونكس

  • محاور الدرس:

1. أقسام الأدلة في نظام اليونكس (Unix).

2. معرفة وظائف أدلة نظام اليونكس (Unix).

3. معرفة شكل نظام الملفات في النظام يونكس (Unix).

4. بعض مميزات النظام يونكس (Unix).

 

  • نظام الملفات:

هو نظام معرّف من قبل نواة النظام (kernel) عن كيفية تخزين البيانات في الأدلة والملفات.والشكل التالي يبين لك نظام الملفات في نظام اليونكس (Unix)، والبنية الرئيسية لملفات النظام أنه يتكون من أدلة وملفات.ومن الممكن أن يتغير هذا الشكل من نظام إلى آخر ولكن يوجد بعض هذه الأجزاء لا يمكن تغييرها مثل دليل الجذر(root)وأيضاً دليل (etc) ودليل (dev).

  • أقسام الأدلة في نظام اليونكس إلى قسمين هما:

1. أدلة رئيسية وهو الدليل الرئيسي للنظام وهو عادة ما تندرج تحته جميع أدلة النظام وهو ما يعرف باسم الجذر (Root) ، وهو يأخذ عادة العلامة (/).

2. أدلة فرعية وهي الأدلة المندرجة تحت دليل آخر مثل المجلد (/usr) يعتبر دليل فرعي وذلك لأنه مندرج تحت الدليل الرئيسي الجذر (Root) (/).

 

  • وظيفة كل دليل في الصورة السابقة بالترتيب:

1. ( / ):

وهذا الدليل يعتبر الدليل الرئيسي للنظام حيث أنه يعتبر أساس النظام.

2. (/usr):

ويتكون هذا المجلد من الملفات والأدلة التي من الممكن أن يتشارك فيها مستخدموا النظام مثل الأغلفة.

3. (/bin):

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

4. (/etc):

ويحتوي هذا المجلد جميع ملفات مدير النظام ومن أهم هذه الملفات ملفات كلمات المرور المضللة (/etc/passwd) وملفات كلمات المرور المشفرة (/etc/shadow) وأيضا ملفات تعديل إعدادت النظام وملفات المجموعات في النظام والذي سوف يتم مناقشة هذا الملفات في دروس قادمة. .وهذه الملفات تكون عادة ً قابلة للقراءة فقط بالنسبة لجميع مستخدمي النظام ماعدا رئيس النظام (administer).

5. (/home):

ويحتوي هذا المجلد على الأدلة الإفتراضية لمستخدمي النظام مثلاً الدليل (/home/one) يعتبر الدليل الإفتراضي للمستخدم (one). وهكذا.

6. (/dev):

وهذا المجلد يحتوي على جميع ملفات الأجهزة المتصلة بالنظام وغير ذلك من تعاريف للعتاد. وهذا الدليل اختصار لكلمة (device) وهي تعني الأجهزة.

7. (/var):

وهذا الدليل يحتوي على الملفات التي تتغير مع إستخدام النظام واسم الدليل هو إختصار ل(variable) أي بمعنى متغير وهذا الدليل غالباً يحتوي على ملفات تسجيل الدخول لجميع المستخدمين (log files).

8. (/tmp):

وهذا الدليل خاص بملفات النظام المؤقتة حيث أن هذه الملفات ستذهب إذا تم إعادة تشغيل الجهاز (boot).

9. (/proc):

وهذا الدليل يحتوي على قائمة بجميع العمليات العاملة على الجهاز وبأرقامها.

  • نظرة عامة على نظام الملفات في اليونكس:

يمكننا تشبيه نظام الملفات في نظام اليونكس بالحقيبة المليئة بالمستندات وداخل هذه المستندات أوراق، حيث أن الحقيبة في هذا المثال تشبه الدليل الرئيسي الجذر (root) والمستندات تشبه الأدلة الفرعية مثل (/home). أما بالنسبة للأوراق التي بداخل المستندات فهي تشبه هنا الملفات المندرجة تحت الأدلة مثل (/etc/passwd).

  • نظرة عامة على نظام اليونكس:

يعتبر نظام اليونكس من أقوى أنظمة التشغيل وذلك لأنه قائم على عدة مفاهيم وهي:

(multitasking): وهي تعني أن نظام اليونكس يعتبر نظام متعدد المهام أي بالإمكان القيام بأكثر من مهمة في الوقت نفسه.

(multi user) : وهي تعني أن نظام اليونكس يعتبر نظام يقبل بتعدد المستخدمين ومعنى ذلك أنه يمكن لأكثر من مستخدم أن يسجل دخوله للنظام في الوقت نفسه دون الحاجة لخروج أحدهم حتى يسجل الآخر دخوله .

(distributed) : وهي تعني أن نظام اليونكس يسمح للمستخدمين باستخدام مصادر النظام من خلال الشبكة.

 

الدرس الثالث - حجز free shell account

سوف نتحدث في هذا الدرس عن كيفية حجز حساب خاص بك على أحد السيرفرات التي تقدم خدمة الغلاف المجاني (free shell account) وهذه السيرفرات تعطيك هذه الخدمة حتى تستطيع من خلاله تطبيق جميع أوامر اليونكس الذي سوف نتطرق لها في دروسنا ولاحظ أن هذا الغلاف لا يعطيك الصلاحية في تنفيذ جميع أوامر اليونكس عليه مثل ترجمة ملفات مكتوبة بلغة السي إلى برامج تطبيقية تستطيع تشغيلها على النظام. وقد بحثت على الإنترنت عن هذه السيرفرات التي تقدم هذه الخدمة.وقد وجدت أن أفضل سيرفر في هذا المجال هو السيرفر (cyberspace.org) ولذلك رأيت أن أجعل هذا السيرفر هو السيرفر الرسمي الذي سنعتمد من خلاله جميع الأوامر الذي سوف يتم مناقشتها في الدروس كما أنه وفي حال أن كان هناك أمر يعمل في بيئة اللينوكس (Linux) بطريقة معينة ولا يعمل بالطريقة نفسها في نظام السيرفر فإنه سوف يتم التنبيه على ذلك. والآن وقبل أن نبدأ في عملية التسجيل لابد أن نتعرف على كيفية الوصول إلى السيرفر. يعلم الأكثر منا عن الأداة الموجودة تقريباً في جميع أنظمة التشغيل وهذه الأداة هي التلنت (telnet) والتلنت هو أداة لإجراء عملية إتصال بين جهازين بعيدين وقد كانت هذه الأداة هي الأداة الأولى سابقاً في تصفح الانترنت حينما كان الانترنت نصوص فقط. وهذه الأداة يمكنك تشغيلها بأكثر من طريقة منها أن تذهب إلى (start -> run -> telnet) وهذه الطريقة عند تنفيذها سوف يظهر لك شاشة دوس وهذا فقط في نظام الويندوز 2000 (windows 2000) أما في الويندوز 98 و me  (windows 98 & me) سوف تظهر لك شاشة بيضاء. والآن وبعد أن تعرفنا على هذه الأداة دعونا نبدأ في شرح طريقة حجز الحساب:

1.     افتح برنامج التلنت بالطريقة التي سبق ذكرها فإذا كنت من مستخدمي الويندوز 2000 فيجب أن تتبع التعليمات التالية:

1.     عند تشغيل برنامج التلنت سوف يظهر لك شاشة دوس كما ذكرنا سابقاً ولكي تفتح إتصال مع السيرفر الذي سنسجل عنده فإنه يجب أن تنفذ الأمر على الصورة:

 

Microsoft (R) Windows 2000 (TM) Version 5.00 (Build 2195)

Welcome to Microsoft Telnet Client

Telnet Client Build 5.00.99201.1

 

Escape Character is 'CTRL+]'

 

Microsoft Telnet>open cyberspace.org
 

والذي يجب عليك كتابته هو فقط ماهو مكتوب باللون الأحمر.

أما إذا كنت من مستخدمين (windows 98 or me):

1.     عند تشغيل برنامج التلنت سوف يظهر لك شاشة بيضاء كما ذكرنا سابقاً ولكي تفتح إتصال مع السيرفر يجب عليك أن تقوم بما يلي (connect -> remote system ) عندها ستظهر لك شاشة صغيرة أكتب في الخانة (host name) اسم السيرفر هنا وهو (cyberspace.org) ثم إضغط على زر (connect). وبعدها سيتم الإتصال مع السيرفر.

 

بعد الخطوتين السابقتين وبعد أن تم الإتصال بالسيرفر فإن الخطوات التالية تعتبر متشابهة في كلا النظامين.

2.     عند الإتصال بالسيرفر سوف يظهر لك ما يلي:

 

Grex central timekeeping.  At the beep, the time is

11:03AM on Tuesday, 06 August 2002

 

New to grex?  Type help at the login prompt

 

(ttyr2) grex login:

 

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

3.     عند كتابة الكلمة (help) سوف يظهر لك ما يلي:
 

Welcome to the Grex computer conferencing system!  If you

have already run the "newuser" program, you can supply your

login ID at the "login:" prompt to get into Grex.

 

   Otherwise, you may select one of the following at the login prompt:

 

        newuser     To create your own login ID, so you can use Grex.

 

        trouble     If you're having trouble getting something to

                    work, and want to send the staff on Grex an

                    e-mail message.  Don't forget to tell us who

                    you are, and how we can reach you.

 

        exit        If you would like to disconnect right now.

 

        confused    If you're confused about something, and would

                    like talk to someone on the phone.


 

 

وهذا يعني السيرفر يوجهك إلى الإختيارات المحتملة لديك.

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

 

Grex central timekeeping.  At the beep, the time is

11:03AM on Tuesday, 06 August 2002

 

New to grex?  Type help at the login prompt

 

(ttyr2) grex login: newuser

newuser program (Version: February 29, 1996)

 

 

Welcome to Grex, a service of Cyberspace Communications, located in

Ann Arbor, Michigan, USA.

 

   Note: Grex does not allow bots of ANY kind--they will not work

         here.  IRC only works for paying members.  Bringing over

         your own copies WILL NOT WORK.  Do not FTP IRC/bots to Grex.

         EGGDROP WILL NOT WORK HERE.  BOUNCERS WILL NOT WORK HERE.

 

 

Grex is a Sun-4/670 MP, running SunOS 4.1.4.  It has 256M of RAM and

8GB of hard disk space.  We have 11 public dial-in phone lines

and a dedicated 128K ISDN connection to the Internet.  Grex is run

by an all-volunteer staff.  There is no software upload/download area.

 

You may be wondering what kind of system Grex is.  To help explain

that, here is the Grex Declaration of Principles:

 Press ?

 

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

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

6.     ستظطر إلى أن تضغط على زر الإدخال في كل مرة تجد فيها الجملة (press ?) إلى أن يظهر لك الجزء التالي:

 

The erase character allows you to remove the last character you typed.

You'll probably want to set it to whatever your "Backspace" or "<--"

key sends; if so, press that key now.  Otherwise, press whatever key

you want to use to remove the last character you typed.

 

If you're not sure what to type here, PRESS YOUR BACKSPACE KEY.

 

Your current choice for the erase character is '^H'.

Please type that character, or another choice, or '?' for help: ^H

Your erase character is now set to '^H'

 

وهذا الجزء هو أن برنامج التسجيل يسألك عن الزر الذي تريده لكي يمسح لك آخر حرف تكتبه. وهو  يخيرك أن تضع زر المسح كما تريد وبما أن الأكثرية منا تستخدم الويندوز ونحن نستخدم الزر (backspace) للمسح في الويندوز لذلك يجب عليك هنا أن تضغط الزر (backspace) حتى يتم تعيينه لك لكي يكون زر المسح في حسابك.

7.     بعد تحديد زر المسح في حسابك فإن السيرفر سوف يسألك عن تحديد الزر الذي سوف يمسح لك سطر كامل من سطر الأوامر ويفترض لك السيرفر أن تختار (ctrl-U) أو (^U). وهذه الحروف تعرف باسم أحرف التحكم وسوف يتم التظرق لها في الدروس القادمة بإذن الله. لذلك يجب عليك الآن أن تضغط على الزرين (ctrl) و (U) في وقت واحد.بعد ذلك سوف يخبرك السيرفر أنه قد تم إعتماد (^U) لحذف سطر كامل.

8.     بعد ذلك سوف يسألك السيرفر عن تحديد زر  قطع عمل معين من سطر الأوامر ويفترض لك الخيار (ctrl-C) (^C) لذلك يجب عليك أن تضغط الزرين (ctrl) مع الزر (C) في وقت واحد. بعد ذلك سوف يخبرك السيرفر أنه قد تم إعتماد هذا الخيار.

9.     بعد ذلك سوف يتجه برنامج التسجيل إلى تحديد نوع التلنت لديك وذلك لأن لكل نوع طريقة في تحديد كيفية تحرك المؤشر وكيفية الإنتقال إلى سطر جديد وهكذا. وأنا هنا قد اخترت نوع التلنت لدي هو (vt100) كما هو واضح في الكلمة المكتوبة باللون الأحمر أما إذا كنت تريد أن تجعل السيرفر يحدد ذلك فيجب عليك أن تكتب بدلاً من (vt100) علامة الإستفهام (?) خيث أن السيرفر سوف يحدد نوعه لديك بعدها سوف يظهر لك نوع التلنت لديك وعليك عندها أن تضغط على زر الإدخال لكي يتم إعتماد نوع التنلت لديك.  لاحظ الشكل التالي:

 

Terminal identification:

 There are some programs that need to know how to move the cursor around on

your screen and do various other related things.  The software you're

running is probably capable of doing this in several different ways

depending on how you set it up.  Since there's no one standard, you need to

tell the system which standard your computer or terminal is using.

If you're using some sort of personal computer (not necessarily an MS-DOS

PC, though), you are probably emulating an ANSI or VT100 terminal; in that

case the "vt100" terminal type is what you want.

 

Note that the name of your computer won't work, and neither will the name

of the software you're running, because neither one is specific enough.

There are hundreds of different communications software packages out there,

and each one usually gives you a choice of at least five or six different

terminal types.  If you have a choice and know how to set it up, you probably

want to choose "VT100" and use the "vt100" or "ansi" terminal types.

Press ?

If you'd like Grex to try to figure out your terminal type for you,

enter "?".  Grex will test your terminal type and display the result

on your screen.

If you'd like a list of all 350+ terminals in the termcap database,

enter "??".  Feel free to use the interrupt key ('^C') to stop the

list midway though if you see something you like.

Finally, if you're confused by all this, just type   vt100

You can change this later once you learn more.

What kind of terminal do you usually use? vt100

Terminal type is vt100

 

10. بعد ذلك سوف يوجهك برنامج التسجيل إلى بعض الأسئلة المتعلقة بك مثل  السؤال عن إسمك ولاحظ هنا أن الإسم الذي إستخدمته هو (asd) أي هذا الإسم هو إسمي الحقيقي:
 

Enter your FULL name? asd

 

If you so desire, the following information will only be made available

to the system staff.  Otherwise, it will be placed in a special file

called a .plan that other users can view when they type a certain command.

I'll ask you to make that decision after I get your answers.  Don't

worry about misspellings and such; you'll have a chance to fix any

mistakes you've made after you're done entering the information.

 

بعد ذلك سوف يسألك بعض الأسئلة فإن أردت الإجابة عليها فلتجب وإن لم تكن تريد الإجابة فيتوجب عليك الضغط على الزرين (ctrl) و (D) أي أن هذه الأسئلة هي أسئلة إختيارية ويوجد في بعض هذه الأسئلة بعض أسئلة لابد من الأجابة عليها وتستطيع أن تفرق بينهما في أن السؤال الذي يتوجب عليك الإجابة عنه ينتهي بعلامة إستفهامية  (?) أما الأسئلة الإختيارية تعطيك شكل موجه (<) . لاحظ في الشكل التالي أن كل ماهو مكتوب بالأحمر هو من مدخلاتي ولاحظ أن (.D) تعني أني لم أجيب على الأسئلة.

 

Enter your address?

Terminate your entry with '^D' or "." on a separate line.

>.D

 

Enter your telephone number: (area)excg-number? 9665588844

 

What other e-mail addresses can you be reached at (if any)?

Terminate your entry with '^D' or "." on a separate line.

>.D

 

What is your occupation?

Terminate your entry with '^D' or "." on a separate line.

>.D

 

What kinds of computer equipment do you use?

Terminate your entry with '^D' or "." on a separate line.

>.D

 

The next two pieces of information are your birthdate and sex.  Feel free

to enter them or not as your feelings dictate.

 

When were you born? 1988

 

What sex are you? m

 

What other interests do you have?

Terminate your entry with '^D' or "." on a separate line.

>.D

 

How'd you find out about us?

Terminate your entry with '^D' or "." on a separate line.

>.D

Do you want this information to be hidden from other users? y


 

 

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

11. بعذ ذلك سوف يوجهك برنامج التس&