freeCodeCamp/guide/arabic/linux/the-command-prompt/index.md

263 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: The Command Prompt
localeTitle: موجه الأوامر
---
## موجه الأوامر
كواحدة من أقدم واجهات المستخدم (UI) ، تم تنفيذ _موجه الأوامر_ (aka _shell_ ، _terminal_ ، _console_ ، _tty_ ) بعدة طرق.
وقد أدى هذا إلى استخدام بعض الكلمات بشكل متبادل في المحادثة الحديثة التي لها في الواقع معان مختلفة قليلاً.
* * *
> جدول المحتويات
* [تاريخ قصير جدا](#a-very-very-short-history)
* [اليوم](#today)
* [شل](#the-shell)
* [سحق](#bash)
* [الحصول على مساعدة](#getting-help)
* [الموجه](#the-prompt)
* [الحصول على الجذر](#getting-root)
* [تسجيل الدخول](#login)
* [سودو](#sudo)
* [سو](#su)
* [المسارات النسبية والمطلقة](#relative-and-absolute-paths)
* [نسبيا](#relative)
* [مطلق](#absolute)
* [خيارات القيادة](#command-options)
* [تسلسل الأوامر](#chaining-commands)
* [وظائف الخلفية](#background-jobs)
* * *
### تاريخ قصير جدا
في القرن التاسع عشر كان [التلغراف](https://en.wikipedia.org/wiki/Electrical_telegraph) . هذا سمح شخصين لتبادل الرسائل المشفرة عبر مسافات طويلة. أدت التطورات التكنولوجية اللاحقة إلى استخدام [آلة](https://en.wikipedia.org/wiki/Teleprinter) تيلبايب (tty) ، حيث تم استبدال الشخص المطلوب لاستلام الرسالة بنوع من الطابعات.
في نفس الوقت ، تم برمجة أجهزة الكمبيوتر المبكرة مثل ENIAC ، مع نوع من الأجهزة ، مثل المفاتيح ، والمفاتيح ، أو كبلات التصحيح. ومع تقدم الحواسيب ، كانت هناك حاجة إلى إدخال / إخراج أفضل (IO) ، وبالتالي تم تحويل آلات التليبيرات المتاحة للاستخدام.
لأن tty's كانت قطع أثاث كبيرة بمفردها ، وحصلت على **وحدة تحكم** الاسم لأوجه الشبه بينها إلى أثاث آخر قائم بذاته مثل أجهزة التلفزيون الخاصة بالكونسول. كنقطة نهاية إلكترونية لكابل مركزي ، كانت تسمى هذه الأجهزة أيضًا **بالمطاريف** .
في نهاية المطاف تم استبدال طابعات TTY بشاشات أنبوب أشعة الكاثود (CRT) ، والتي كانت تستخدم أيضًا في أجهزة التلفزيون قبل توفر LCD والبلازما. ومن المثير للاهتمام أن أجهزة الكمبيوتر الحديثة من نظام لينكس لا يزال من الممكن التحكم فيها باستخدام آلة tty!
> انقر على الصورة أدناه للانتقال إلى فيديو قصير على Youtube.
[![](https://i.ytimg.com/vi/-Ul-f3hPJQM/hqdefault.jpg)](https://youtu.be/-Ul-f3hPJQM)
* * *
### اليوم
واليوم ، لا يزال مستخدمو Linux و Unix يستخدمون نفس المصطلحات ، ولكن مع وجود اختلافات طفيفة. تتوفر المحطات الحقيقية والافتراضية ، ويمكن الوصول إلى المطاريف الافتراضية باستخدام Alt + Ctrl + \[F1-F12\] .
في بيئات المستخدم الرسومية (GUI) ، يمكن للمستخدمين الوصول إلى موجه الأوامر باستخدام **محاكي طرفية** ، والذي يوفر ميزات tty ، ولكن داخل إطار. هناك العديد من المحاكيات الطرفية المتاحة لمستخدمي Linux ، مثل **xterm** و **kterm** و **rxvt** .
ستعتمد تلك المتاحة على توزيع لينكس (توزيعة ، قصير) الذي تستخدمه ، والافتراضات الافتراضية. تحقق من مدير الحزم الخاص بك لتثبيت الآخرين. يمكن لمستخدمي Windows استخدام **PuTTY** أو أدوات مساعدة أخرى للاتصال بنظام Linux.
### شل
_Shell_ s هي برامج تقوم بتفسير الأوامر.
هناك عدد منهم ، مثل [**B** ourne **A** gain **SH** ell](https://www.gnu.org/software/bash/) (BASH)، [C Shell](https://docs.freebsd.org/44doc/usd/04.csh/paper.html) (csh / tcsh)، و [Z SHell](http://zsh.sourceforge.net/) (zsh).
#### سحق
إن أكثر القوالب الافتراضية شيوعًا في Linux هي BASH ، ولكن يمكن لكل مستخدم التبديل مؤقتًا أو بشكل دائم إلى أي قشرة أخرى متوفرة. الغلاف قابل للنصوص بالكامل ، مما يعني أنه يمكن دمج مفاهيم البرمجة مع الأدوات المساعدة للنظام والأداة من أجل إنشاء وظائف أكثر تعقيدًا.
قد يتم تضمين الأوامر التي تم إدخالها في موجه الأوامر إلى shell ، مثل **cd** أو **exit** أو **export** .
كما يمكن أن تأتي من البرامج الخارجية ، وفي حالة معظم توزيعات Linux ، يتم توفيرها بواسطة [أدوات Gnu](https://www.gnu.org/software/coreutils/coreutils.html) .
انظر أدناه للحصول على الأوامر الأكثر شيوعًا.
| القيادة | الاستخدام | | -------- | ----------------------------------------- | | `cd` | تغيير الدليل الحالي | | `ls` | قائمة الملفات في الدليل الحالي | | `mv` نقل الملفات والدلائل | `man` وثائق القيادة مفتوحة | | `mkdir` | جعل دليل | | `rmdir` | حذف مدير | `touch` | إنشاء ملف فارغ | `rm` إزالة الملفات | | `ln` | إنشاء روابط للملفات والدلائل | `chown` | تغيير ملكية الملفات والدلائل | `chmod` | تغيير الأذونات | | `find` | تحديد موقع الملفات | | `cat` | يكتب الملفات إلى الإخراج القياسي | | `less` | يسمح التمرير من المدخلات القياسية | `grep` | البحث عن تطابقات بالنص العادي | `diff` | اظهار الفروق بين الملفات | | `passwd` | تغيير كلمة المرور الخاصة بك
#### الحصول على مساعدة
المساعدة الفورية متاحة للأوامر في مكان واحد أو أكثر.
إضافة `--help` بعد الأمر.
هذا يطبع معلومات الاستخدام للأمر.
إخراجها مشابه للأمر `man` ، ولكن يتم استخدام `man` قبل الأمر الذي تريده يدويًا.
يعد أمر `info` هو خيار المساعدة الثالث ، ويتم استخدامه تمامًا مثل `man` .
`ls --help
man ls
info ls
`
### الموجه
يمكن أن يتغير الموجه ، وهو جزء النص الموجود في الغلاف إلى يسار المؤشر ، ليعرض حالتك الحالية ، مثل أي دليل موجود حاليًا ، والمستخدم الذي قمت بتسجيل الدخول به ، واسم جهاز الكمبيوتر الخاص بك ، _وما امتيازات لديك_ .
هذا الأخير المهم هو الاعتراف. عادة ما يكون آخر حرف في الموجه ، سترى `$` ، مما يشير إلى امتيازات المستخدم العادية.
إذا كانت لديك امتيازات **الجذر** ، والتي تنتمي إلى مسؤول النظام ، فستشاهد عادةً `#` كحرف أخير. عند استعراض المنتديات والحصول على المساعدة عبر الإنترنت ، غالبًا ما يتم عرض الأوامر التي يجب عليك كتابتها باستخدام هذا الحرف.
**ليس عليك كتابته!**
فمثلا:
`$ ls -l
`
يعني كتابة `ls -l` في موجه عادي.
`# apt-get install node
`
يعني أنك تكتب `apt-get install node` باستخدام امتيازات المشرف. تعتمد كيفية رفع الامتيازات على توزيع Linux الخاص بك.
### الحصول على الجذر
#### تسجيل الدخول
تسجيل الدخول كجذر _فكرة سيئة للغاية_ . هذا هو السبب في أن بعض إصدارات Linux تعمل على تعطيل قدرة المستخدمين على تسجيل هذه الطريقة. يتم تشجيع هؤلاء المستخدمين على استخدام الطريقة التالية ، `sudo` من داخل حساب المستخدم الخاص بهم.
إذا كان عليك استخدام وحدة التحكم الجذر ، فكن على دراية بقوة الجهاز. لن يتم تحذيرك أو مطالبتك بتأكيد معظم المهام ، حتى إذا كان الخطأ المطبعي البسيط يعني حذف شيء مهم.
#### سودو
إضافة "sudo" قبل أمر من أجل التحول إلى **S** uper **U** ser و **DO** (SUDO). هكذا يتم تكوين Ubuntu ومشتقاته للسماح بالوصول إلى المسؤول ، ويتم إعطاؤه على أساس كل أمر.
لم يتم منحك shell root ، ولن يكون للأمر التالي الذي تكتبه امتيازات مرتفعة ، ما لم تستخدم `sudo` مرة أخرى.
`sudo apt-get update
`
باستثناء أول مستخدم تم إنشاؤه في بعض المواقع ، يجب إضافة المستخدمين إلى قائمة خاصة (موجودة في `/etc/sudoers` ) من أجل استخدام sudo.
يتم ذلك مع الأمر `visudo` .
يجب ألا تقوم مطلقًا بتحرير ملف `sudoers` باستخدام محرر نص عادي!
سوف `visudo` تأكد من أنك لا قفل نفسك من النظام الخاص بك.
#### سو
`su` ، مثل `sudo` ، يسمح لك بالتغيير إلى مستخدم آخر ، باستثناء أنه بشكل افتراضي ، ستحصل على مطالبة أخرى مثل المستخدم الذي قمت بالتبديل إليه.
من تلقاء نفسه ، `su` إلى موجه جذر ، ولكن مع متغيرات بيئة المستخدم الحالية ، مثل `$HOME` للمجلد الرئيسي ، و `$PATH` لمسار النظام.
يمكن أن يؤدي ذلك إلى نتائج غير متوقعة ، وإذا كنت تريد استخدام `su` للتبديل إلى مستخدم آخر ، فأضِف واصلة بعد الأمر:
`su -
`
هذا سوف يحولك بشكل كامل إلى موجه الجذر.
يمكن إضافة اسم مستخدم إلى الأمر للتبديل إلى ذلك المستخدم ، ولكنه يتطلب كلمة مرور المستخدم.
يمكن استخدام `sudo` في تركيبة مع `su` للسماح للمدير بالتبديل إلى أي مستخدم.
`myUser@linux $ su - otherUsername
Password: (typed my password)
su: Authentication failure
myUser@linux $ sudo su - otherUsername
Password: (typed my password)
otherUsername@Linux $
`
### المسارات النسبية والمطلقة
عند استخدام أمر في ملف ، مثل النسخ أو الحذف ، يمكنك الرجوع إلى الملف بإحدى طريقتين.
#### نسبيا
موقع الملف بالنسبة إلى الدليل الحالي.
هناك عاملان مسار نسبي في شل ، `.` و `..`
الأول ، `.` يعني الدليل الحالي ، لذا فإن `cat file.txt` `cat ./file.txt` و `cat ./file.txt` هما نفس الشيء إذا كان `cat ./file.txt` في الدليل الحالي.
الآخر هو `..` ، ويعني دليل واحد في الشجرة.
إذا كنت في `/home/user/projects/project-a` وقمت بإصدار الأمر `cd ..` إلى `/home/user/projects` .
إذا كان دليل المشاريع يحتوي على أدلة فرعية باسم `project-a` و `project-b` و `project-c` وكنت في دليل `project-a` ، فيمكنك التبديل إلى `project-b` باستخدام `cd ../project-b` .
يوجد أيضاً `environment variable` في shell يسمى `$HOME` والذي يشير إلى الدليل الرئيسي الخاص بك.
يمكنك استخدام هذا في BASH باستخدام حرف التلدة `~` .
تحل الصدفة محل التلدة عندما تضغط على enter ، فعلى سبيل المثال ، يمكنك التغيير إلى مجلد منزلك باستخدام `cd ~` .
#### مطلق
مواقع الملفات هي المسار الكامل من جذر نظام الملفات ، ولديك دائمًا شرطة مائلة.
على سبيل المثال ، سيذهب `cd /home/quincy/Desktop` إلى دليل سطح المكتب في Quincy ، بغض النظر عن المسار الحالي أو المستخدم.
### خيارات القيادة
تتبع معظم أوامر shell نفس بناء الجملة ، وهي **ملفات خيارات الأوامر** .
`ls -l *.txt
`
أين
* `ls` يعطي قائمة من الملفات والدلائل ،
* `-l` يغير ناتج `ls` إلى قائمة طويلة ،
* و `*.txt` بتقييد القائمة بالملفات التي تنتهي بـ `.txt` .
لكل أمر خيارات مختلفة ، ويمكن إدراج خيارات متعددة معًا ، كما في tar `tar -cvf` في القسم التالي.
يمكن توصيل الأوامر الفردية معًا في سلسلة ، حيث يصبح إخراج أمر واحد هو الإدخال إلى أمر آخر.
يتم ذلك مع `|` الحرف ، وغالبا ما تسمى **الأنابيب** أو **شريط** . هذا ليس رأس مال i أو حرف L صغير ، ولا هو الرقم 1 . على لوحات المفاتيح الأمريكية ، تم العثور على أحد المفاتيح بالقرب من Enter .
في المثال التالي ، سأستخدم أمرين.
أول ، `cat` ، قصيرة لسلسلة ، ويمكن استخدامها لوضع محتويات ملف واحد في نهاية آخر (سَلسَلة!). عند استخدامه مع ملف واحد فقط ، فإنه يكتب المحتويات إلى المحطة.
الأمر الثاني ، `grep` هو برنامج يخرج النص الموجود بناءً على بعض المدخلات ، ونمط بحث. يمكن أن يكون نمط البحث عبارة عن نص بسيط ، أو تعبير عادي (تعبير عادي) لعمليات بحث أكثر تقدمًا.
`cat index.html | grep img
`
هناك العديد من الطرق للقيام بذلك ، ولكن هذا سيخرج كل سطر في index.html يحتوي على `img` إلى المحطة الطرفية. يستخدم هذا المثال واحد فقط `|` ، لكنك لا تقتصر على ذلك.
### تسلسل الأوامر
في حين أن عامل العطف الوحيد `&` هو عامل التحكم في الوظيفة في BASH (المقطع التالي) ، فإن علامة الضم المزدوجة لها معنى آخر. ومن المنطقي **AND** ، واستخدامه بين أمرين بحيث يتم تشغيل الأمر الثاني فقط إذا تم الخروج الأول بنجاح (بدون خطأ).
المثال التالي هو عدد مستخدمي دبيان وأوبونتو الذين يقومون بتحديث قائمة البرامج الخاصة بهم ، ثم قم بتشغيل ترقية النظام.
`sudo apt-get update && sudo apt-get dist-upgrade
`
خيار آخر هو أنبوب مزدوج `||` مما يعني منطقية **OR** . يمكنك استخدامه عندما تريد تشغيل أمر فقط عندما يخرج الأول بخطأ.
سوف يقوم ما يلي بإنشاء أرشيف يسمى `project.tar` على سطح مكتب المستخدم من الملفات الموجودة في دليل مشروع ، وإذا فشل ذلك ، صدى رسالة.
`tar -cvf /home/user/Desktop/project.tar /home/user/project/* || echo "archive failed"
`
### وظائف الخلفية
عندما تقوم بتشغيل أمر في مطراف ، تكون المحطة مشغولة حتى يتم الانتهاء من الأمر ، ولا يمكن تشغيل أوامر أخرى. هناك نظام للتحكم في الوظائف في لينكس يسمح لك بتعليق أوامر التشغيل واستئناف الأوامر المعلقة في الخلفية واستئناف الأوامر الموقوفة في المقدمة.
هذا مفيد للنصوص النصية التي تعمل منذ فترة طويلة ، أو عندما تحتاج إلى إدخال شيء ما في الخلفية حتى يمكن استخدام الجهاز لأشياء أخرى.
o تعليق برنامج قيد التشغيل في المحطة الطرفية استخدم تركيبة المفاتيح Ctrl + Z.
ستعود إلى المطالبة العادية ، ويبدو أن الأمر قد انتهى. لم يحدث ذلك ، ولكن تم تعليقه فقط. ما زال مرئيًا في قائمة `jobs` باستخدام أمر `jobs` لإدراج جميع الوظائف المتعقبة حاليًا. فعلت `man ls` للحصول على صفحة دليل ، ومن ثم علقت.
عندما أكتب `jobs` أحصل على الناتج التالي:
`$ jobs
[1] + suspended man ls
`
من هنا ، يمكنني السماح باستئنافها في الخلفية بكتابة `bg %1` حيث `1` هو رقم المهمة الموجود بين الأقواس المربعة.
يمكنني إعادته إلى المقدمة بكتابة `fg %1` .