مواد الطلاب الخاصة بسطر الأوامر

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

الخلاصات الرئيسية

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

ما هو سطر الأوامر؟

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

سطر الأوامر هو طريقة عرض بديلة للكمبيوتر. يُشار إلى سطر الأوامر أحيانًا باسم "الصدفة" أو "نافذة Terminal" أو "باش" أو "واجهة نصية"، وهو:

  • إحدى وسائل التفاعل مع برنامج الكمبيوتر حيث يكتب المستخدم الأوامر، مثل:
open README.txt
  • طريقة للتنقّل في الكمبيوتر وتشغيله بدون استخدام الماوس
  • طريقة غير رسومية لإنشاء ملفاتك وأدلتك وقراءتها وتعديلها والتعامل معها وحذفها، مثل:
mv README.txt readme.txt

تتضمّن واجهة المستخدم الرسومية وسطر الأوامر المعلومات نفسها. وهي طرق مختلفة للتفاعل مع الكمبيوتر.

متى نستخدم سطر الأوامر؟

يفضّل المطوّرون غالبًا استخدام واجهات سطر الأوامر للأسباب التالية:

  • وهي توفّر وسيلة أكثر اختصارًا للتحكّم في برنامج أو نظام تشغيل. لماذا؟ لأنّ كل شيء يحدث في النافذة نفسها، ومع الممارسة، يصبح الأمر أسهل من العثور على العناصر ومعالجتها باستخدام الماوس.
  • وهي تعرض بسهولة خيارات للتحكّم في أمر معيّن. لماذا؟ توفّر القوائم في واجهات المستخدم الرسومية عددًا قليلاً جدًا من الخيارات. في سطر الأوامر، هناك المئات من الأوامر، ويمكن أن تؤدي إضافة بضعة أحرف إلى أحد الأوامر إلى تنفيذ العديد من الإجراءات المختلفة، مثل:
  • ls ملفات القوائم الأساسية
  • ls -a إدراج جميع الملفات، بما في ذلك الملفات المخفية عادةً
  • ls -l قائمة طويلة تعرض معلومات عن كل ملف
  • ls -R تكراري، يعرض محتوى الأدلة
  • ls -la إدراج جميع الملفات في قائمة طويلة
  • تسهّل هذه الأدوات تنفيذ إجراءات على الكثير من الملفات في آنٍ واحد بطرق معقّدة.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • وهي توفّر وسيلة لبرمجة نظام التشغيل (برامج shell)، مثلاً المثال أعلاه هو برنامج shell بسيط جدًا مصمّم لتعديل الصور التي تنتهي أسماء ملفاتها بـ .png.

استخدام سطر الأوامر

أجزاء أمر سطر الأوامر

تتألف جميع الأوامر من ثلاثة أجزاء:

  • يأتي الأمر (أو الأداة) دائمًا في المقدّمة.
  • تكون العلامات اختيارية، وذلك حسب الأداة التي تستخدمها. تبدأ العلامات دائمًا بعلامة - (ناقص).
  • الوسيطات هي العناصر التي يجب أن يعمل عليها الأمر أو المعلومات الضرورية. غالبًا ما تكون أسماء الملفات.

ضبط الإطار

السياق والغرض

سطر الأوامر هو طريقة للتحكّم في جهاز كمبيوتر بدون ماوس أو واجهة مستخدم تصويرية (GUI). قبل أن تبدأ شركة Apple Computer في تصنيع أجهزة مزوّدة برموز ومجلدات يمكن النقر عليها، كانت الطريقة الوحيدة للتفاعل مع الكمبيوتر هي من خلال سطر الأوامر.

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

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

في هذا الدرس، سنتعلّم الأوامر الأساسية للتفاعل مع الكمبيوتر من خلال: إنشاء الملفات والأدلة، ونقل المجلدات، وتغيير الأدلة، وإدراج محتويات مجلد.

أهداف التعلُّم

سيتمكّن الطلاب من

  • استخدام "الوحدة الطرفية" للتنقّل بين الملفات والمجلدات
  • عرض قائمة بمحتوى مجلد
  • إنشاء ملفات ومجلدات على سطر الأوامر
  • نقل الملفات والمجلدات
  • نسخ الملفات والمجلدات
  • حذف الملفات والمجلدات

البدء

الوصول إلى Terminal

إعداد الإطارات والأغراض للأقسام

توفّر "الوحدة الطرفية" واجهة سطر أوامر (CLI) لنظام التشغيل. يمكنك من خلالها تقديم تعليمات مباشرة مستندة إلى النصوص إلى جهاز الكمبيوتر.

لإجراء ذلك، علينا تشغيل نافذة الأوامر استنادًا إلى النظام الذي تستخدمه.

عند تشغيل نافذة الوحدة الطرفية، ستبدأ في دليل الصفحة الرئيسية لجهاز الكمبيوتر (أيًا كان الاسم الذي اخترته لجهاز الكمبيوتر). يُشار إلى دليل المنزل باستخدام علامة المد ~.

عند مناقشة عالمنا داخل "الوحدة الطرفية"، تكون الأدلة هي نفسها المجلدات (قد نسميها أدلة في بعض الأحيان).

تغيير الأدلة

إعداد الإطارات والأغراض للأقسام

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

عند التنقّل في الوحدة الطرفية، من المهم معرفة مكانك (ينطبق ذلك أيضًا على الحياة الواقعية - إذا أردت الوصول إلى مكان ما، عليك أولاً معرفة موقعك الحالي).

# See your current location - abbreviation for 'print working directory'
pwd

عرض قائمة بالملفات والأدلة المتاحة

من المحتمل أن يكون هناك العديد من الملفات التي يمكنك الوصول إليها داخل دليل العمل. عادةً، نعتمد على الإشارات المرئية، مثل الرموز، لمعرفة المحتوى المتاح، ولكن سيكون من الصعب التنقّل على الكمبيوتر إذا كنا نخمّن فقط مكان وجود الملفات والمجلدات. في سطر الأوامر، سنستخدم أمرًا محدّدًا لإدراج ما يمكننا الوصول إليه من أي دليل عمل أو أي موقع جغرافي.

لمعرفة الملفات أو المجلدات الموجودة في الدليل الحالي، استخدِم الأمر ls (اختصار للقائمة) للاطّلاع على عرض قائمة بالمحتوى.

# See files and folders in current location - abbreviation for 'list'
ls

تغيير دليل العمل

إذا كنت بحاجة إلى الوصول إلى ملف أو دليل غير متوفّر في القائمة، يمكنك تغيير دليل العمل لتسهيل الوصول إليه.

بناء الجملة الذي يطلب من سطر الأوامر نقلك إلى دليل جديد (يُعرف أيضًا باسم مجلد) هو cd متبوعًا (في السطر نفسه) بمسار المجلد الجديد.

إذا انتقلت إلى دليل داخل الدليل الذي تستخدمه حاليًا (أي مجلد فرعي من دليل العمل)، استخدِم الأمر cd متبوعًا باسم المجلد.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

يمكنك أيضًا التنقّل بدءًا من دليل المنزل ~.

# Add a `~/` to begin from the home directory.
cd ~/Downloads

إذا غيّرت الأدلة ولكن عليك الرجوع إلى الدليل الرئيسي، يمكنك إجراء ذلك إما من خلال الرجوع مباشرةً إلى الدليل الرئيسي باستخدام ~، أو باستخدام .. للانتقال إلى مستوى أعلى.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

يُرجى العِلم أنّ cd .. لا يرتفع (يعود) إلا بمستوى واحد، لذا إذا غيّرت الأدلة ثلاث مرات حتى الآن (نزلت ثلاثة مستويات)، عليك استخدام cd .. ثلاث مرات للعودة إلى الصفحة الرئيسية، ولكن لن تحتاج إلى استخدام cd ~ إلا مرة واحدة.

تحديات صغيرة

  • استخدِم ls للاطّلاع على محتوى الدليل الحالي.
  • ارجع إلى دليل منزلك واستخدِم ls للاطّلاع على محتوى مجلدك المنزلي.
  • اختَر اسم أحد المجلدات الموجودة داخل دليل المنزل وانتقِل إلى هذا المجلد الجديد.
  • استخدِم أمر القائمة للاطّلاع على المحتوى.

نصيحة احترافية: الإكمال التلقائي باستخدام tab

عند تغيير الأدلة باستخدام الأمر cd، سيؤدي خطأ إملائي واحد إلى منع تنفيذ الأمر بشكل صحيح. ومع ذلك، سيؤدي استخدام المفتاح tab إلى إكمال الاسم تلقائيًا باستخدام اسم أي أدلة متاحة داخل دليلك الحالي. لذلك، بدلاً من كتابة cd Documents، اكتب cd Do فقط ثم اضغط على المفتاح tab وسيكمل الطرفية الأمر cd Documents/ تلقائيًا (/ في النهاية اختياري ولكنّه يتيح لك معرفة أنّ الوجهة هي دليل).

لا توفّر هذه الميزة الوقت فحسب عندما تعمل، بل تقدّم أيضًا معلومات قيّمة عندما لا تعمل. إذا لم يكتمل الإدخال تلقائيًا عند الضغط على زر علامة التبويب، من المحتمل أنّك واجهت إحدى المشاكل الشائعة الثلاث التالية:

  1. لا يمكن الوصول إلى الدليل الذي تريد الانتقال إليه من دليل العمل الحالي.
  2. هناك دليلان يبدآن باسمَين متشابهَين (مثل Documents وDownloads)، ولم تقدّم معلومات كافية لكي تعرف ميزة الإكمال التلقائي الدليل المطلوب. اضغط على tab مرة أخرى للاطّلاع على قائمة بالأدلة التي قد تتطابق مع ما كتبته. بعد ذلك، اكتب المزيد من الأحرف (بما يكفي ليكون هناك تطابق واحد فقط) واضغط على tab مرة أخرى.
  3. لقد سبق أن أدرجت خطأً إملائيًا في النصف الأول من الكلمة.

كلّما أسرعت في الاعتياد على استخدام المفتاح Tab لإكمال الأوامر تلقائيًا، زادت احتمالية التعامل مع المواقف المحبطة التي يبدو فيها أنّ الأوامر لا تعمل.

الأدلة الرئيسية والأدلة الفرعية

يمكن أن يكون للأدلة والملفات علاقات فرعية ورئيسية مع بعضها البعض. إذا كان directory_b داخل directory_a، يُشار إلى directory_b باسم العنصر التابع لـ directory_a. يُعرف directory_a بعد ذلك باسم الوالد لحساب directory_b. إذا كان العنصر الثالث، my_file، داخل directory_b، يُعتبر عنصرًا ثانويًا لـ directory_b وحفيدًا لـ directory_a.

غالبًا ما يتم توضيح هذه العلاقات في المنتديات باستخدام مخطط نصي، مثل ما يلي:

directory_a/
  directory_b/
    my_file

لاحظ أنّ أسماء الأدلة تنتهي بالرمز /، بينما لا تنتهي أسماء الملفات بهذا الرمز. يُشار إلى هذا التنظيم الهرمي بشكل عام باسم بنية الشجرة لنظام الملفات.

الأشقاء

إذا كانت هناك ملفات أو مجلدات متعددة في المستوى نفسه، تُعرف باسم عناصر متجاورة. مثال: إذا كان العنصران file_b وfile_c يقعان داخل العنصر directory_a، يكونان عنصرَين شقيقَين.

سيبدو مخطط النص على النحو التالي:

directory_a/
  file_b
  file_c

يُرجى العِلم أنّه بما أنّ file_b وfile_c هما عنصران شقيقان، يتم تطبيق المسافة البادئة نفسها عليهما.

مسارات الملفات

في ما يلي رسم بياني نصي أكثر تعقيدًا يتضمّن علاقات بين العناصر الرئيسية والعناصر الثانوية وعلاقات بين العناصر المتجاورة.

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

في هذا المثال، new_york_city/ هو اسم دليل، ولكن يتضمّن أيضًا مسارًا يوضّح كيفية الوصول إليه: ~/north_america/united_states/new_york/new_york_city/.

لتغيير الدليل إلى new_york_city/,، يمكنك الانتقال في خطوات باستخدام الأسماء، أو يمكنك الانتقال إلى هناك دفعة واحدة باستخدام المسار.

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

ملخّص أوامر التنقّل

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

تحديات صغيرة

  • استخدِم pwd لمعرفة المجلد الحالي الذي تتواجد فيه.
  • غيِّر إلى دليل مختلف وأكِّد موقعك الجديد.
  • يُرجى إعادة المحاولة والانتقال إلى مجلد مختلف. استخدِم الأوامر الجديدة للاطّلاع على موقعك الجغرافي والملفات داخل هذا الدليل.

إنشاء الملفات والمجلدات

إعداد الإطارات والأغراض للأقسام

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

يجب الانتباه إلى موقعك الجغرافي في الجهاز قبل إنشاء الملفات والمجلدات.

# See your current location.
pwd

لإنشاء ملف، استخدِم الأمر touch متبوعًا باسم الملف.

# `touch` creates a new file.
touch style.css

عند إنشاء الملفات، أضِف امتداد ملف لتحديد النوع. أمثلة على أنواع الملفات:

  • .js إنشاء ملف JavaScript
  • .html إنشاء ملف HTML
  • .css تنشئ ملف CSS
  • .md ينشئ ملف markdown

يجب ألا تتضمّن أسماء الملفات مسافات.

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

إنشاء ملفات متعددة

يمكنك إنشاء ملفات متعددة في آنٍ واحد من خلال تضمين مسافات بين كل اسم من الأسماء.

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

إنشاء أدلّة

لإنشاء دليل أو مجلد، استخدِم الأمر mkdir ، وهو اختصار لعبارة "إنشاء دليل"، متبوعًا باسم المجلد.

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

إنشاء أدلة متعددة

يمكنك إنشاء مجلدات متعددة في وقت واحد من خلال تضمين مسافات بين كل اسم من الأسماء.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

تحديات صغيرة

  • أنشئ ملفًا جديدًا.
  • إنشاء عدة ملفات في أمر واحد
  • أنشئ دليلاً جديدًا.
  • أنشئوا بعض الأدلة الجديدة الأخرى. حاوِل استخدام أمر واحد فقط لتنفيذ ذلك.
  • باستخدام معلوماتك حول التنقّل في الدلائل وإنشاء الملفات والمجلدات، أنشئ "شجرة عائلة" على سطح المكتب باستخدام الملفات والمجلدات.

نقل الملفات ونسخها

نقل الملفات والمجلدات

إعداد الإطارات والأغراض للأقسام

يمكننا نقل ملف أو مجلد في سطر الأوامر، ولكن علينا دائمًا تحديد ثلاثة أشياء:

  1. نستخدم الأمر mv، وهو اختصار move.
  2. أضِف اسم الملف أو المجلد الذي تريد نقله بعد أمر النقل.
  3. أضِف إلى اسم الملف الوجهة التي تريد نقله إليها.

على سبيل المثال، إذا كانت لديك بنية ملفات على النحو التالي:

my_child_folder/
my_parent_folder/

يمكنك ملاحظة أنّها غير منظَّمة كما يجب أن تكون، فهي عبارة عن عناصر متجاورة بينما يجب أن تكون عناصر رئيسية وفرعية. استخدِم الأمر التالي:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

ستبدو البنية الناتجة على النحو التالي.

my_parent_folder/
  my_child_folder/

في ما يلي بعض الصيغ الأخرى للأمر mv:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

تحذير: mv هو أيضًا الأمر المستخدَم لإعادة تسمية ملف باستخدام الصيغة mv old_name new_name. وهذا يعني أنّه في حال نقل ملف إلى دليل غير متوفّر، أو إذا أخطأت في كتابة الوجهة، سيتم تغيير اسم الملف بدلاً من نقله.

تحديات صغيرة

  1. أنشئ 5 ملفات نصية (‎.txt).
  2. أنشئ دليلاً جديدًا.
  3. انقل الملفات الخمسة التي أنشأتها إلى المجلد.
  4. أنشئ مجلدًا جديدًا وانقله إلى داخل مجلد آخر.

نسخ الملفات والدلائل

إعداد الإطارات والأغراض للأقسام

أثناء إنشاء تطبيقات الويب، قد نحتاج إلى تكرار ملف (إذا كنا ننشئ صفحتَي ويب متشابهتَين، قد لا نريد البدء من جديد)، وبنية الأمر cp (نسخ) تشبه إلى حد كبير بنية الأمر mv.

نسخ ملف

يتضمّن أمر النسخ ثلاثة أجزاء:

  1. الأمر cp هو اختصار للنسخ
  2. اسم الملف المطلوب نسخه
  3. اسم النسخة (في حال البقاء في المجلد نفسه) أو الموقع والاسم (في حال النقل إلى مجلد مختلف)
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

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

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

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

نسخ دليل

تكون عملية نسخ مجلد أو دليل أكثر تعقيدًا بعض الشيء، لأنّك على الأرجح تريد نسخ المجلد وكل ما بداخله.

  1. الأمر cp -R، وهو اختصار copy recursive، ويُستخدم مع المجلدات الفارغة وغير الفارغة
  2. اسم المصدر (المجلد أو الملف الذي نريد نقله)
  3. اسم النسخة (في حال البقاء في المجلد نفسه) أو الموقع والاسم (في حال النقل إلى مجلد مختلف)

تحذير: عند تحديد اسم للنسخة، إذا لم يتم إنشاء الملف أو المجلد من قبل، سيتم إنشاؤه عند إنشاء النسخة. إذا تم إنشاء الملف قبل تنفيذ أمر النسخ، سيتم استبدال أي محتوى كان في الملف سابقًا، لذا يجب توخّي الحذر.

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

ملاحظة: يُطلق على المكوّن -R من cp -R اسم علامة. تبدأ العلامات دائمًا بشرطة، ويتم استخدامها مع الأوامر لتقديم تعليمات أكثر تحديدًا حول كيفية تنفيذ هذا الأمر.

تحديات صغيرة

  1. أنشئ ملفًا باسم my_original.txt
  2. أنشئ نسخة من my_original.txt باسم جديد في المجلد نفسه.
  3. أنشئ دليلاً جديدًا.
  4. أنشئ نسخة من هذا الدليل، ولكن سمِّها اسمًا مختلفًا.
  5. أنشئ نسخة من الملف الذي نسخته (من الخطوة 2)، ولكن ضَعها في الدليل الذي نسخته (من الخطوة 4).

إزالة الملفات والمجلدات

إعداد الإطارات والأغراض للأقسام

يمكننا حذف الملفات والمجلدات من سطر الأوامر، ولكنّ هذا الإجراء نهائي.

إزالة ملف

لإزالة ملف، يمكننا استخدام الأمر rm (اختصار إزالة) متبوعًا باسم الملف.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

إزالة دليل فارغ

لإزالة دليل فارغ، يمكننا استخدام الأمر rmdir، وهو اختصار remove directory، متبوعًا باسم المجلد.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

إزالة دليل غير فارغ

لإزالة مجلد غير فارغ، علينا وضع العلامة -R، وهي اختصار لكلمة تكراري، بعد الأمر rm الذي يطلب من الكمبيوتر حذف المحتوى داخل المجلد. كاختصار، يستخدم بعض المطوّرين العلامة -Rf التي تزيل كل شيء بقوة (وإلا قد تتلقّى طلبات بشأن حذف بعض الملفات أو المجلدات الفرعية).

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

تحذير: لا يشبه استخدام الأمر rm سلة المحذوفات أو قسم "المحذوف" في بريدك الإلكتروني، إذ لا يمكن استرداد هذه الملفات بسهولة. يجب توخّي الحذر الشديد عند حذف الملفات بهذه الطريقة.

تحديات صغيرة

  1. أنشئ 4 ملفات.
  2. احذف ملفَين.
  3. أنشئ مجلدًا.
  4. أنشئ مجلدًا آخر وأنشئ ملفًا داخله.
  5. احذف كلا الدليلين.

يمكنك العثور على الرمز البرمجي لهذا المختبر في المجلد التالي داخل مستودع الطلاب الذي نزّلته من GitHub: command-line/labs/around-the-world

الخلفية

اقترب موعد سفرك إلى الخارج لقضاء فصل دراسي، وحان الوقت لبدء التخطيط لرحلاتك في أوروبا...

مع التخطيط لثلاثة أشهر من الاستمتاع في المستقبل القريب، عليك التأكّد من الاستفادة الكاملة من كل رحلة في عطلة نهاية الأسبوع.

لحسن الحظ، لن تبدأ من الصفر، فقد قدّم لك أصدقاؤك بعض الأنشطة المفضّلة لديهم من فترة دراستهم في الخارج. للأسف، تم الخلط بين بعض الملفات...

لا تقلق، فباستخدام سحر سطر الأوامر، ستتمكّن من حلّها في وقت قصير.

المهمة

تأكَّد من أنّ كل مدينة تقع في البلد الصحيح وأنّ كل مجلد مدينة يحتوي على المعالم الأثرية المناسبة. يجب الانتباه جيدًا وإلا قد ينتهي بك الأمر في أمستردام بحثًا عن برج إيفل.

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

بعد التأكّد من أنّ كل شيء في مكانه الصحيح، حان دورك للسيطرة على الأشهر القليلة المقبلة. تبادَل الأفكار حول المدن والبلدان والمعالم الجديدة التي يجب زيارتها وأضِفها إلى شجرة الملفات.

تهانينا! لقد تعلّمت رسميًا كيفية التحدّث بلغة الكمبيوتر. هل أنت مستعد للانتقال إلى المستوى التالي؟ لنتحدّث عن الإضافات...

الإضافات

  1. اخلط كل ملفاتك مرة أخرى، ثم انتقِل إلى مدينة من اختيارك. أعِد تنظيم الملفات مرة أخرى، مع البقاء في تلك المدينة.
  2. جرِّب إحدى ألعاب سطر الأوامر الممتعة المرتبطة أدناه
    Terminus Game
    Advanced Game (استعدّ للبحث على Google)
  3. هل أنت من المعجبين بسلسلة Star Wars؟ جرِّب تشغيل telnet towel.blinkenlights.nl في سطر الأوامر واضغط على مفتاح Enter.... (يُرجى العِلم أنّه في الإصدارات الحديثة من نظام التشغيل MacOS، لم يعُد يتم تثبيت الأمر telnet تلقائيًا. وفي هذه الحالة، يمكن استخدام الأمر nc towel.blinkenlights.nl 23 بدلاً منه).

يمكنك العثور على الرمز البرمجي لهذا المختبر في المجلد التالي داخل مستودع الطلاب الذي نزّلته من GitHub: command-line/labs/bashing-away-repetition

هل أنت مستعد للتخلص من التكرار في استخدامك اليومي لسطر الأوامر؟ رائع، وأنا كذلك!

الخلفية

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

أولاً، ما هو نص bash البرمجي؟

سؤال رائع. لحسن الحظ، يقدّم لنا صديقنا "ريان تشادويك"، من هذا الموقع الرائع للعثور على دروس تعليمية حول سطر الأوامر، إجابة عن هذا السؤال.

يتيح لنا نص Bash البرمجي تحديد سلسلة من الإجراءات التي سينفّذها الكمبيوتر بدون الحاجة إلى إدخال الأوامر بأنفسنا. إذا كانت مهمة معيّنة يتم تنفيذها بشكل متكرّر، أو كانت متكرّرة، يمكن أن يكون النص البرمجي أداة مفيدة.

عدم التكرار؟ هذا ما أقصده.

برنامج تعليمي

أولاً، لكي تتمكّن من تشغيل البرنامج النصي، عليك منح جهاز الكمبيوتر الإذن. يمكنك إجراء ذلك من خلال تنفيذ الأمر أدناه.

chmod 755 myScript.sh

حسنًا، حان الوقت لكتابة برنامجك الأول. انتقِل إلى myScript.sh (تحقَّق مما إذا كان بإمكانك فتح الملف من سطر الأوامر). في نهاية الملف، أضِف ما يلي:

echo "Hello World"

الآن، نفِّذ ما يلي:

./myScript.sh

في نافذة Terminal ** TA DA ** من المفترض أن يظهر لك النص "Hello World" في الوحدة الطرفية.

احتفال

سيتم تنفيذ كل ما تكتبه في نص bash البرمجي كما لو كنت قد كتبته في نافذة الأوامر. لنستعرض مثالاً آخر قبل الانتقال إلى الإضافات. أولاً، أنشئ ملفًا للنص البرمجي، ويمكنك تسميته بأي اسم تريده ولكن يجب أن يكون بامتداد .sh . التالي تأكَّد من منح النص البرمجي إذن التشغيل من خلال كتابة chmod 755 ثم اسم النص البرمجي في نافذة الأوامر والضغط على Enter. في كل مرة تبدأ فيها نص bash برمجيًا جديدًا، عليك التأكّد من إكمال هاتين الخطوتين.

تحدّي المقدمة

لنحاول الآن كتابة نص برمجي ينشئ مجلدًا جديدًا. ما هو الأمر الذي نعرف أنّه ينشئ مجلدًا جديدًا؟ إذا كنت تفكّر في كلمة تبدأ بـ m وتنتهي بـ kdir، فأنت على المسار الصحيح. اكتب الأمر الذي سينشئ مجلدك الجديد وسمِّه اسمًا رائعًا في ملف .sh الجديد، ثم شغِّله في الوحدة الطرفية.

إذا نجحت، انتقِل إلى التحديات الأخرى المدرَجة أدناه. إذا كنت لا تزال تشعر ببعض الارتباك، حاوِل الرجوع إلى مختبر "حول العالم" والتفكير في كيفية إنشاء مجلدات جديدة للبلدان والمدن.

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

المهام الرئيسية

  1. أضِف أمرًا إلى الملف الذي أنشأته أعلاه للانتقال إلى المجلد الذي تريد إنشاءه. (ما هو الأمر الذي نستخدمه لتغيير الأدلة؟)
  • أضِف طابعًا زمنيًا إلى اسم المجلد الجديد. على سبيل المثال، يجب أن ينشئ برنامجك مجلدًا باسم "2017-12-07my_super_cool_folder".
  1. يطبع "دليلي الحالي هو: " متبوعًا بدليل العمل، و "إليك قائمة بكل ما في هذا الدليل! " متبوعًا بمحتوى الدليل الحالي.
  2. معرفة كيفية تقديم إدخال إلى نص برمجي bash وإنشاء ملف استنادًا إلى سلسلة الإدخال هذه يتضمّن البرنامج التعليمي المرتبط سابقًا في المعمل بعض الأمثلة الرائعة في قسم المتغيّرات التي يمكنك الاطّلاع عليها.
  3. اطلب من المستخدم إدخال اسمه، ثم اطبع "مرحبًا، يسعدني التعرّف إليك أدخل اسمه هنا"
  • جرِّب أن تطلب من المستخدم المزيد من المعلومات وتنشئ له رسالة مخصّصة.

السياق

يتيح سطر الأوامر (أو Terminal) التفاعل مباشرةً مع نظام تشغيل الكمبيوتر، أي كل ما تفعله واجهة المستخدم التصويرية، ولكن من خلال أوامر نصية، بدءًا من التنقّل إلى إنشاء ملفات جديدة إلى تنفيذ البرامج النصية. سيتم استخدام سطر الأوامر لفتح الملفات وبدء بيئة التطوير عند استخدام Google App Engine.

استخدام سطر الأوامر

الوصول إلى Terminal

اختصار نظام التشغيل Mac:

  • افتح Spotlight باستخدام Command + مفتاح المسافة.
  • اكتب Terminal في بحث Spotlight.
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

إنشاء الملفات والمجلدات

إنشاء الملفات

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

إنشاء المجلدات

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

نقل الملفات والمجلدات

نقل الملفات

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

نقل المجلدات

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

النقل هو إعادة التسمية

يُرجى العِلم أنّ mv هو أيضًا الأمر نفسه المستخدَم لإعادة تسمية الملفات أو المجلدات.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

نسخ الملفات والمجلدات

نسخ الملفات

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

نسخ المجلدات

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

حذف الملفات والمجلدات

حذف الملفات

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

حذف المجلدات

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

نصائح

  • تدَّرب على استخدام سطر الأوامر، حتى عندما لا تعتقد أنّك بحاجة إليه. ومع الوقت، ستتحسّن في ذلك.
  • سيكمل المفتاح tab اسم الملف أو المجلد تلقائيًا (يمكن أن يكون حساسًا لحالة الأحرف).
  • إذا كان هناك ملف أو مجلد واحد فقط مطابق ومتبقٍ، سيتم إكمال البحث تلقائيًا.
  • إذا كانت هناك ملفات أو مجلدات متعددة مطابقة، اضغط على المفتاح Tab مرتين للاطّلاع على قائمة بالنتائج المطابقة المتبقية.
  • سيؤدي الضغط على السهم المتّجه للأعلى أو للأسفل إلى تصفّح سجلّ الطلبات، ما يغنيك عن إعادة كتابة الطلبات.
  • استخدِم الأمر clear لمحو نافذة "الوحدة الطرفية". يؤدي ذلك إلى الاحتفاظ بجميع أعمالك السابقة، ويمكنك الانتقال للأعلى للاطّلاع عليها.
  • استخدِم reset لإعادة تشغيل الوحدة الطرفية. لن يؤدي ذلك إلى إبقاء عملك السابق على الشاشة، ولكن يمكن أن يحلّ عدة مشاكل إذا بدأت "الوحدة الطرفية" في التصرف بطرق غير متوقعة.
  • اضغط على option + arrow لتحريك المؤشر بمقدار كلمة واحدة

ملخّص أفضل الممارسات

  • تنقَّل في "محطة الدفع" باستخدام cd أو cd .. أو cd <folder name>.
  • عرض محتويات المجلدات باستخدام ls
  • أنشئ ملفات باستخدام touch، وأنشئ مجلدات باستخدام mkdir.
  • نقل الملفات والمجلدات باستخدام mv <item to move> <destination>
  • نسخ الملفات والمجلدات باستخدام cp <item to copy> <destination>
  • حذف الملفات والمجلدات باستخدام rm <item to remove>

السؤال 1

ما هي الأداة التي تستخدمها لتحديد دليل العمل الحالي؟

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

السؤال 2

كيف يمكنك الانتقال إلى مستويَين أعلى من دليل العمل الحالي؟

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

السؤال 3

ما الأمر الذي ستستخدمه لإعادة تسمية ملف؟

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

السؤال 4

لماذا قد يعرض الأمر mv script.py رسالة خطأ؟

  1. لأنّ "script.py" اسم ملف غير صالح.
  2. لأنّه لا يمكن إضافة أي معلومات أخرى بعد الأمر mv.
  3. هذا سؤال مخادع، فلن يؤدي إلى حدوث خطأ.
  4. لأنّ نقل ملف يتطلّب وسيطتَين على الأقل، وهما الهدف والوجهة

السؤال 5

ما هو الإجراء الذي سيتّخذه الأمر cd ~؟

  1. غيِّر دليل العمل إلى دليل المنزل.
  2. تكرار الأمر السابق
  3. استخدام خوارزمية لتحديد الأمر الأكثر فائدة في هذا الوقت
  4. إظهار خطأ

السؤال 6

أيّ مما يلي ليس سببًا لاستخدام المفتاح Tab للإكمال التلقائي لأسماء الملفات؟

  1. لأنّها توفّر الوقت.
  2. لأنّها تساعد في التخلّص من الأخطاء الإملائية.
  3. لأنّها تتطلّب قدرة معالجة أقل.

السؤال 7

إذا حاول مطوّر جديد إنشاء ملف باسم "my script.py"، لماذا لن يعمل الأمر touch my script.py؟

  1. لأنّ touch لا يمكنه إنشاء ملفات جديدة.
  2. لأنّ .py ليس امتداد ملف صالحًا.
  3. لأنّه سينشئ ملفَين، أحدهما باسم "my" والآخر باسم "script.py" بدلاً من ملف واحد فقط.
  4. لأنّه من المستحيل إنشاء ملفات جديدة من سطر الأوامر.

السؤال 1

ما هي الأداة التي تستخدمها لتحديد دليل العمل الحالي؟

pwd

السؤال 2

كيف يمكنك الانتقال إلى مستويَين أعلى من دليل العمل الحالي؟

باستخدام cd ../..، يمكنك الانتقال إلى مستويَين أعلى (يمثّل كل .. مستوى واحدًا أعلى).

السؤال 3

ما الأمر الذي ستستخدمه لإعادة تسمية ملف؟

يُستخدَم الأمر mv لنقل ملف من مكان إلى آخر، ويمكن استخدامه أيضًا لتغيير اسم الملف.

السؤال 4

لماذا قد يعرض الأمر mv script.py رسالة خطأ؟

يتطلّب الأمر mv وسيطتَين، وهما ملف مصدر وملف وجهة.

السؤال 5

ما هو الإجراء الذي سيتّخذه الأمر cd ~؟

سيؤدي ذلك إلى تغيير دليل العمل إلى دليل المنزل. يُستخدَم الرمز الخاص ~ لتحديد الدليل الرئيسي للمستخدم الحالي. يمكن أيضًا استخدامها مع اسم مستخدم مختلف: ~user2 للإشارة إلى المجلد الرئيسي.

السؤال 6

أيّ مما يلي ليس سببًا لاستخدام المفتاح Tab للإكمال التلقائي لأسماء الملفات؟

لأنّه يتطلّب قدرة معالجة أقل هي إجابة غير صحيحة. تتطلّب tab قدرًا (ضئيلاً في أغلب الأحيان) من قوة المعالجة لفحص المجلدات بحثًا عن اسم الملف لإكماله تلقائيًا، ولكنها توفّر الوقت وتتجنّب الأخطاء الإملائية في هذه العملية.

السؤال 7

إذا حاول مطوّر جديد إنشاء ملف باسم "my script.py"، لماذا لن يعمل الأمر touch my script.py؟

سيتم إنشاء ملفَين بدلاً من ملف واحد. سينشئ الأمر touch ملفات جديدة. في مساحات الوحدة الطرفية، تكون الفواصل هي الفواصل، وليس الأحرف التي سيتم تضمينها في اسم الملف. من الأفضل تجنُّبها تمامًا، ولكن إذا كان عليك استخدامها، يجب وضع اسم الملف بين علامتَي اقتباس مزدوجتَين:

touch "my script.py"

السؤال 1

أمر تغيير الأدلة في سطر الأوامر هو:

  1. move
  2. mkdir
  3. pwd
  4. cd

السؤال 2

ما هو الأمر الذي ستنفّذه إذا أردت الانتقال إلى المجلد الأصلي لدليل العمل الحالي؟

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

السؤال 3

ما هو الأمر المستخدَم لإنشاء الملفات؟

  1. touch
  2. mkdir
  3. create
  4. pwd

السؤال 4

أيّ من الأوامر التالية سينشئ ملفَين باسم index.html وstyle.css؟

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

السؤال 5

ما الأمر الذي تستخدمه لإعادة تسمية ملف أو مجلد؟

  1. rename
  2. move
  3. mv
  4. rm

السؤال 6

ما هي العلامة التي يجب استخدامها مع الأمرَين rm وcp للعمل على المجلدات؟

  1. -f
  2. -r
  3. -x
  4. -d

السؤال 7

لنقل projects إلى ~/Documents وإعادة تسميته إلى Projects، ما هو الأمر الذي يجب إدخاله في الفراغ؟

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

السؤال 8

ما هو الإجراء الذي سيتّخذه الأمر التالي؟

rm -r projects

  1. حذف ملف باسم projects
  2. حذف مجلد باسم projects
  3. إعادة تسمية ملف باسم projects
  4. البحث في محتوى الدليل الحالي عن projects

السؤال 1

أمر تغيير الأدلة في سطر الأوامر هو:

أمر الوحدة الطرفية لتغيير الأدلة هو cd. الأمر نفسه هو اختصار لعبارة "تغيير الدليل".

السؤال 2

ما هو الأمر الذي ستنفّذه إذا أردت الانتقال إلى المجلد الأصلي لدليل العمل الحالي؟

الأمر المستخدَم للانتقال إلى المجلد الرئيسي هو cd ..

السؤال 3

ما هو الأمر المستخدَم لإنشاء الملفات؟

الأمر المستخدَم لإنشاء الملفات هو touch

السؤال 4

أيّ من الأوامر التالية سينشئ ملفَين باسم index.html وstyle.css؟

سيؤدي الأمر touch index.html style.css إلى إنشاء الملفَين. ليست هناك حاجة إلى استخدام الفاصلة، ويمكن إنشاء أي عدد من الملفات بهذه الطريقة، مع الفصل بينها بمسافات.

السؤال 5

ما الأمر الذي تستخدمه لإعادة تسمية ملف أو مجلد؟

على الرغم من أنّ mv تعني "نقل" ويمكن استخدامها لنقل الملفات أو المجلدات، يمكن استخدامها أيضًا لإعادة تسمية الملفات والمجلدات.

السؤال 6

ما هي العلامة التي يجب استخدامها مع الأمرَين rm وcp للعمل على المجلدات؟

يتطلّب الأمران rm وcp استخدام العلامة -r للعمل على المجلدات، لأنّ العلامة -r تعني "تكراري" وتعيد تنفيذ الأمر لأي ملفات ومجلدات مضمّنة.

السؤال 7

لنقل projects إلى ~/Documents وإعادة تسميته إلى Projects، ما هو الأمر الذي يجب إدخاله في الفراغ؟

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

بما أنّنا نبدأ في الدليل الرئيسي، علينا تشغيل cd ~/Documents من أجل تنفيذ الأمر النهائي في الدليل الصحيح.

السؤال 8

ما هو الإجراء الذي سيتّخذه الأمر التالي؟

rm -r projects

سيحذف الأمر إما ملفًا أو مجلدًا باسم projects لأنّه يتم استدعاؤه باستخدام العلامة -r أو العلامة المتكررة. بدون هذا الخيار، لن يعمل هذا الأمر إلا لحذف ملف بهذا الاسم.