50 أسئلة وأجوبة لمقابلة البرمجة النصية لـ Shell (2026)

فيما يلي أسئلة وإجابات مقابلة Shell Scripting للمرشحين الجدد وذوي الخبرة للحصول على وظيفة أحلامهم.

 

أسئلة وأجوبة مقابلة البرمجة النصية لـ Linux Shell

1) ما هي القشرة؟

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

👉 تنزيل مجاني بصيغة PDF: أسئلة وأجوبة لمقابلة البرمجة النصية لـ Shell


2) ما هي البرمجة النصية لـ Shell؟

برمجة شل هو برنامج كمبيوتر مفتوح المصدر مصمم ليتم تشغيله بواسطة Linux/Unix Shell. Shell Scripting هو برنامج لكتابة سلسلة من الأوامر لتنفيذها. يمكنه الجمع بين تسلسلات طويلة ومتكررة من الأوامر في برنامج نصي واحد وبسيط يمكن تخزينه وتنفيذه في أي وقت مما يقلل من جهود البرمجة.

أسئلة مقابلة برمجة شل


3) ما هي الأنواع المختلفة للأصداف شائعة الاستخدام في نظام Linux النموذجي؟

CSH، KSH، باش، بورن . الصدفة الأكثر استخدامًا وتقدمًا اليوم هي "Bash".


4) ما هو ما يعادل اختصار الملف الذي لدينا نافذة على نظام لينكس؟

يتم إنشاء الاختصارات باستخدام "الروابط" على Linux. هناك نوعان من الروابط التي يمكن استخدامها وهما "الارتباط الناعم" و"الارتباط الثابت".


5) ما الفرق بين الروابط الناعمة والصلبة؟

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


6) كيف يمكنك تمرير الوسائط والوصول إليها لبرنامج نصي في Linux؟

يمكن تمرير الوسائط على النحو التالي:

اسم البرنامج النصي “Arg1” “Arg2″….”Argn” ويمكن الوصول إليه داخل البرنامج النصي كـ $1 , $2 .. $n


7) ما الفرق بين $* و$@؟

يتعامل $@ مع كل الوسائط المقتبسة كوسيطات منفصلة، ​​لكن $* سيعتبر المجموعة الكاملة من المعلمات الموضعية كسلسلة واحدة.


8) استخدم الأمر sed لاستبدال محتوى الملف (محاكاة أمر tac)

على سبيل المثال:

if cat fille
ABCD
EFGH

ثم يجب أن يكون O/p

ه و ز ح
ا ب ت ث

sed '1! G; h;$!d' file1

هنا يُلحق أمر G بمساحة النمط،

أمر h ينسخ نمط المخزن المؤقت إلى المخزن المؤقت المؤقت

ويحذف الأمر d مساحة النمط الحالية.


9) في حالة وجود ملف، استبدل كل تكرارات الكلمة "ABC" بكلمة "DEF" بدءًا من الرقم 5th سطر حتى نهايته في تلك الأسطر التي تحتوي على كلمة "MNO" فقط

sed –n '5,$p' file1|sed '/MNO/s/ABC/DEF/'

10) في حالة وجود ملف، اكتب تسلسل أوامر للعثور على عدد كل كلمة.

tr –s  "(backslash)040" <file1|tr –s  "(backslash)011"|tr "(backslash)040 (backslash)011" "(backslash)012" |uniq –c
where "(backslash)040" is octal equivalent of "space"

"(الشرطة المائلة العكسية)011" هي المكافئ الثماني لـ "حرف علامة التبويب" و

"(الشرطة المائلة العكسية)012" هي المكافئ الثماني لحرف السطر الجديد.


11) كيف ستجد الـ 99th سطر من الملف باستخدام أمر الذيل والرأس فقط؟

الذيل +99 ملف1|الرأس -1


12) طباعة 10th سطر دون استخدام أمر الذيل والرأس.

sed –n '10p' file1

13) في bash Shell، أريد أن يكون الموجه الخاص بي بالتنسيق '$"دليل العمل الحالي":"اسم المضيف"> وتحميل ملف يحتوي على قائمة بالوظائف المعرفة من قبل المستخدم بمجرد تسجيل الدخول، كيف يمكنك أتمتة هذا ؟

في غلاف bash، يمكننا إنشاء ملف ".profile" والذي يتم استدعاؤه تلقائيًا بمجرد تسجيل الدخول وكتابة الصيغة التالية فيه.

export PS1='$ `pwd`:`hostname`>' .File1

هنا File1 هو الملف الذي يحتوي على الوظائف المعرفة من قبل المستخدم و"." يستدعي هذا الملف في الصدفة الحالية.


14) اشرح عن بت الإذن "s" في الملف؟

تسمى البتة "s" بتة "تعيين معرف المستخدم" (SUID).

تؤدي البتة "s" الموجودة في الملف إلى حصول العملية على امتيازات مالك الملف أثناء مثيل البرنامج.

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


15) أريد إنشاء دليل بحيث يمكن لأي شخص في المجموعة إنشاء ملف والوصول إلى ملف أي شخص فيه ولكن لا ينبغي أن يتمكن أي شخص من حذف ملف آخر غير الملف الذي أنشأه بنفسه.

يمكننا إنشاء الدليل الذي يعطي للقراءة وتنفيذ الوصول إلى كل فرد في المجموعة وتعيين البت الثابت "t" على النحو التالي:

mkdir direc1
 
chmod g+wx direc1
 
chmod +t direc1

16) كيف يمكنك معرفة مدة تشغيل النظام؟

يمكننا العثور على ذلك باستخدام الأمر "uptime".


17) كيف يمكن لأي مستخدم معرفة كافة المعلومات المتعلقة بمستخدم معين مثل غلافه الافتراضي، واسمه الحقيقي، والدليل الافتراضي، ومتى وكم من الوقت كان يستخدم النظام؟

إصبع "اسم الدخول" ... حيث اسم الدخول هو اسم تسجيل الدخول لـ

المستخدم الذي من المتوقع الحصول على معلوماته.


18) ما الفرق بين $$ و$!؟

$$ يعطي معرف العملية للعملية المنفذة حاليًا بينما $! يعرض معرف العملية للعملية التي دخلت الخلفية مؤخرًا.


19) ما هي عمليات الزومبي؟

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


20) كيف يمكنك نسخ ملف من جهاز إلى آخر؟

يمكننا استخدام أدوات مساعدة مثل "ftp" أو "scp" أو "rsync" لنسخ ملف من جهاز إلى آخر.

على سبيل المثال، باستخدام بروتوكول نقل الملفات:

اسم مضيف FTP

> ضع الملف 1

> وداعا

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


أسئلة وأجوبة مقابلة البرمجة النصية لـ Shell للخبرة

21) أرغب في مراقبة ملف سجل يتم تحديثه باستمرار، ما هو الأمر الذي يمكن استخدامه لتحقيق ذلك بكفاءة أكبر؟

يمكننا استخدام tail –f filename. سيؤدي هذا إلى عرض آخر 10 أسطر افتراضية فقط على std o/p الذي يعرض باستمرار الجزء الذي يتم تحديثه من الملف.


22) أريد الاتصال بخادم بعيد وتنفيذ بعض الأوامر، كيف يمكنني تحقيق ذلك؟

يمكننا استخدام ssh للقيام بذلك:

ssh username@serverIP -p sshport

مثال

سش الجذر@122.52.251.171 -ص 22

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


23) لدي ملفان وأريد طباعة السجلات المشتركة بينهما.

يمكننا استخدام الأمر "comm" على النحو التالي:

comm -12 file1 file2 … 12 سيمنع المحتوى الموجود

فريدة من نوعها 1st و 2nd الملف على التوالي.


24) كتابة نص لطباعة العناصر العشرة الأولى من سلسلة فيبوناتشي.

  
#!/bin/sh
a=1
b=1
echo $a
echo $b
for I in 1 2 3 4 5 6 7 8
do
c=a
b=$a
b=$(($a+$c))
echo $b
done

25) كيف يمكنك الاتصال بخادم قاعدة بيانات من Linux؟

يمكننا استخدام الأداة المساعدة isql التي تأتي مع برنامج تشغيل العميل المفتوح على النحو التالي:

isql –S اسم الخادم –U اسم المستخدم –P كلمة المرور


26) ما هي التدفقات الثلاثة القياسية في نظام Linux؟

0 – الإدخال القياسي 1 – الإخراج القياسي 2 – خطأ قياسي


27) أريد قراءة كل المدخلات إلى الأمر من file1 وتوجيه جميع المخرجات إلى file2 والخطأ إلى الملف 3، كيف يمكنني تحقيق ذلك؟

يأمر ملف1 1>ملف2


28) ماذا سيحدث لعمليتي الحالية عندما أقوم بتنفيذ أمر باستخدام exec؟

"exec" يتراكب العملية المتشعبة حديثًا على العملية الحالية؛ لذلك عندما أقوم بتنفيذ الأمر باستخدام exec، يتم تنفيذ الأمر على الصدفة الحالية دون إنشاء أي عمليات جديدة.

على سبيل المثال، التنفيذ "exec ls" في موجه الأوامر سيتم تنفيذ ls وبمجرد خروج ls، سيتم إيقاف العملية


29) كيف يمكنك محاكاة wc –l باستخدام awk؟

awk 'END {print NR} fileName'


30) في حالة وجود ملف، ابحث عن عدد الأسطر التي تحتوي على كلمة "ABC".

grep -c ملف "ABC"1


31) ما الفرق بين grep و egrep؟

egrep هو grep ممتد يدعم ميزات grep المضافة مثل "+" (تكرار واحد أو أكثر للحرف السابق)؟"(1 أو 0 تكرار للحرف السابق) و"|" (مطابقة بديلة)


32) كيفية تعيين مجموعة في لينكس؟

بناء الجملة في ksh:

Set –A arrayname= (element1 element2 ….. element)
In bash
A=(element1 element2 element3 …. elementn)

33) اكتب صيغة الحلقة "for".

بناء الجملة:

for  iterator in (elements)
do
execute commands
done

34) كيف يمكنك العثور على إجمالي مساحة القرص المستخدمة من قبل مستخدم معين؟

du -s /home/user1 ….حيث user1 هو المستخدم الذي يجب العثور على إجمالي مساحة القرص له.


35) اكتب صيغة الشرطية "if" في نظام Linux؟

بناء الجملة

If  condition is successful
then
execute commands
else
execute commands
fi

36) ما هي أهمية $؟

الأمر $؟ يعطي حالة الخروج للأمر الأخير الذي تم تنفيذه.


37) كيف يمكننا حذف جميع الأسطر الفارغة في الملف؟

sed  '^ [(backslash)011(backslash)040]*$/d' file1

حيث (الشرطة المائلة العكسية) 011 هي المكافئ الثماني للمسافة و

(الشرطة المائلة العكسية) 040 هي المكافئ الثماني لعلامة التبويب


38) كيف أقوم بإدخال سطر "ABCDEF" عند كل 100th سطر من الملف؟

ملف '100i\ABCDEF' 1


39) اكتب تسلسل أوامر للعثور على جميع الملفات التي تم تعديلها في أقل من يومين وطباعة عدد السجلات لكل منها.

يجد . –mtime -2 –exec wc –l {} \;


40) كيف يمكنني تعيين إذن rwx الافتراضي لجميع المستخدمين في كل ملف يتم إنشاؤه في الصدفة الحالية؟

يمكننا ان نستخدم:

umask 777

سيؤدي هذا إلى تعيين إذن rwx الافتراضي لكل ملف يتم إنشاؤه لكل مستخدم.


41) كيف يمكننا العثور على اسم العملية من معرف العملية الخاص بها؟

يمكننا استخدام "ps –p ProcessId"


42) ما هي المكونات الأربعة الأساسية لكل نظام ملفات على نظام Linux؟

تم العثور على Bootblock وsuper block وinode block وDatablock مكونات أساسية لكل نظام ملفات على Linux.


43) ما هي كتلة التمهيد؟

تحتوي هذه الكتلة على برنامج صغير يسمى "سجل التمهيد الرئيسي" (MBR) الذي يقوم بتحميل النواة أثناء تمهيد النظام.


44) ما هي الكتلة الفائقة؟

يحتوي Super block على جميع المعلومات حول نظام الملفات مثل حجم نظام الملفات وحجم الكتلة المستخدمة من خلال عدد كتل البيانات المجانية وقائمة inodes وكتل البيانات المجانية.


45) ما هي كتلة inode؟

تحتوي هذه الكتلة على inode لكل ملف من ملفات نظام الملفات بالإضافة إلى جميع سمات الملف باستثناء اسمه.


46) كيف يمكنني إرسال بريد مع ملف مضغوط كمرفق؟

ملف zip 1.zip file1|mailx –s “subject” معرف البريد الإلكتروني للمستلمين

محتوى البريد الإلكتروني

EOF


47) كيف يمكننا إنشاء الأسماء المستعارة للأوامر في الصدفة؟

الاسم المستعار الاسم المستعار = "الأمر الذي سيتم إنشاء الاسم المستعار له".


48) ما هي حقول الأذونات "c" و"b" للملف؟

"ج" و"ب" حقول الأذونات ترتبط بشكل عام بملف الجهاز. فهو يحدد ما إذا كان الملف عبارة عن ملف ذو أحرف خاصة أو ملف كتلة خاص.


49) ما فائدة خط الشيبانج؟

يحدد سطر Shebang الموجود أعلى كل برنامج نصي موقع المحرك الذي سيتم استخدامه لتنفيذ البرنامج النصي.

ستساعد أسئلة المقابلة هذه أيضًا في حياتك (شفهي)

تلخيص هذه التدوينة بـ: