263 lines
18 KiB
Markdown
263 lines
18 KiB
Markdown
---
|
||
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` . |