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://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` . |