اذهب إلى المحتوى

البحث في الموقع

المحتوى عن 'مدخل إلى لينكس'.

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المحتوى


التصنيفات

  • الإدارة والقيادة
  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • السلوك التنظيمي في المؤسسات
  • عالم الأعمال
  • التجارة والتجارة الإلكترونية
  • نصائح وإرشادات
  • مقالات ريادة أعمال عامة

التصنيفات

  • مقالات برمجة عامة
  • مقالات برمجة متقدمة
  • PHP
    • Laravel
    • ووردبريس
  • جافاسكربت
    • لغة TypeScript
    • Node.js
    • React
    • Vue.js
    • Angular
    • jQuery
    • Cordova
  • HTML
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • لغة C#‎
    • ‎.NET
    • منصة Xamarin
  • لغة C++‎
  • لغة C
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • لغة Rust
  • برمجة أندرويد
  • لغة R
  • الذكاء الاصطناعي
  • صناعة الألعاب
  • سير العمل
    • Git
  • الأنظمة والأنظمة المدمجة

التصنيفات

  • تصميم تجربة المستخدم UX
  • تصميم واجهة المستخدم UI
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب GIMP
    • كريتا Krita
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • مقالات DevOps عامة
  • خوادم
    • الويب HTTP
    • البريد الإلكتروني
    • قواعد البيانات
    • DNS
    • Samba
  • الحوسبة السحابية
    • Docker
  • إدارة الإعدادات والنشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
    • ريدهات (Red Hat)
  • خواديم ويندوز
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • شبكات
    • سيسكو (Cisco)

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح
  • مبادئ علم التسويق

التصنيفات

  • مقالات عمل حر عامة
  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • العمل الحر المهني
    • العمل بالترجمة
    • العمل كمساعد افتراضي
    • العمل بكتابة المحتوى

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

  • الأقسام
    • أسئلة البرمجة
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات

التصنيفات

  • كتب ريادة الأعمال
  • كتب العمل الحر
  • كتب تسويق ومبيعات
  • كتب برمجة
  • كتب تصميم
  • كتب DevOps

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

تم العثور على 3 نتائج

  1. مقّدمة إذا كنتَ لا تمتلك خبرةً كبيرة في التعامل مع أنظمة لينكس، فربّما تكون مندهشًا من فكرة التحكّم بنظام التشغيل عبر سطر الأوامر. هنا، سنحاول شرح أساسيات فعلِ ذلك. لن يغطّي هذا الدّرس كل شيءٍ تحتاج معرفته للتعامل بفعالية مع نظام لينكس. ولكنّ من المفترض أن يعطيك أساسًا جيدًا للارتكاز عليه لكي تتمكن من استكشاف بقية الأمور بنفسك. سيُعطيك هذا الدّرس الأساسيات التي تحتاج أن تعرفها فقط قبل الانتقال إلى دليلٍ آخر. المتُطلّبات والأهداف من أجل المتابعة مع هذا الدّرس، ستحتاج إلى امتلاك الوصول إلى خادوم لينكس. إذا كنتَ تحتاج معلوماتٍ حول كيفية الاتصال بخادومك للمرّة الأولى، فيمكنك اتّباع هذا الدّرس حول كيفية الاتّصال بخادوم لينكس باستخدام SSH. قد تودُّ أيضًا امتلاك أساسيات فهم كيفية عمل الطرفيّة وكيف تبدو الأوامر في نظام لينكس. درسنا السابق هذا يغطّي أساسيات الطرفيّة، لذا فيجب عليك التحقق منه إذا كنتَ جديدًا على استخدام الطرفيّات. جميع المهام الموجودة في هذا الدّرس يُمكن إنجازها باستخدام حساب مستخدم عادي غير جذر (non-root) لا يمتلك صلاحياتٍ إدارية (حيث أننا لن نحتاجها). عندما تصبحُ جاهزًا للبدء، اتّصل بخادومك عبر SSH وتابع القراءة. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن التنقّل والاستكشاف أهمّ المهارات الأساسية التي يجب عليك احترافها هي التنقّل في نظام الملفّات (filesystem) والحصول على فكرة عن الأشياء حولك. سنناقش الأدوات التي تسمح لك بفعل ذلك في هذا القسم. معرفة مكانك باستخدام الأمر pwd عندما تقوم بتسجيل الدخول إلى خادومك، فإنّه سيتم إرسالك عادةً إلى مجلّد المنزل (home directory) الخاص بحساب المستخدم الذي تستعمله. مجلّد المنزل هو عبارة عن مسارٍ مُعَدّ لمستخدمك لتخزين الملفات والمجلّدات. إنّه الموقع الذي تمتلك كامل السيطرة عليه في نظام الملفات. لمعرفة موقع مجلّد المنزل الخاص بك بالنسبة إلى بقيّة نظام الملفّات، يمكنك استخدام الأمر pwd. يقوم هذا الأمر بعرض المسار الذي نتواجدُ فيه حاليًا: pwd يجبُ أن تحصل على بعض المعلومات التي تبدو هكذا: /home/demo يتم تسمية مجلّد المنزل باسم المستخدم الذي يتبعُه، لذا ففي المثال السابق تلاحظ ما ستكون قيمة اسم مجلّد المنزل عندما تقوم بتسجيل الدخول إلى الخادوم باستخدام حسابٍ يُدعى demo . هذا المسار موجود داخل مجلد يُدعى /home ، والذي هو بدوره ضمن مسارٍ أعلى يدعى "الجذر (root)” ولكن يتم تمثيله بإشارة / واحدة. معرفة محتوى المجلّدات باستخدام ls الآن صرتَ تعرف كيفية عرض المسار الذي تتواجدُ فيه حاليًا، يمكننا الآن أن نعلّمك كيفية عرض محتويات مسارٍ معيّن. حاليًا، لا يمتلك مجلّد المنزل الخاص بك الذي رأيناه بالأعلى الكثير من الأمور بداخله لرؤيتها، لذلك سننتقل إلى مسارٍ أكثر امتلاءً بالملفّات لنستكشفه. قمّ بكتابة الأمر التالي في طرفيّتك للانتقال إلى هذا المسار (سنشرح تفاصيل الانتقال إلى مساراتٍ أخرى في القسم التالي). بعدها، سنستخدم الأمر pwd للتأكّد مما إذا كنّا قد انتقلنا بنجاح: cd /usr/share pwd /usr/share الآن أصبحنا في المسار الجديد، فلنلقي نظرةً على ما يوجد بداخله. لفعل هذا، يُمكننا استخدام الأمر ls: ls adduser groff pam-configs applications grub perl apport grub-gfxpayload-lists perl5 apps hal pixmaps apt i18n pkgconfig aptitude icons polkit-1 apt-xapian-index info popularity-contest . . . كما ترى، هناك العديد من العناصر بداخل هذا المسار. يمكننا إضافة بعض الأعلام الإضافية (flags) للأمر السابق للتعديل على سلوكه الافتراضي. كمثال، لسرد جميع المحتويات بشكلٍ أكثر تفصيلًا، سنستخدم العَلَم -l (اختصار لـlong output): ls -l total 440 drwxr-xr-x 2 root root 4096 Apr 17 2014 adduser drwxr-xr-x 2 root root 4096 Sep 24 19:11 applications drwxr-xr-x 6 root root 4096 Oct 9 18:16 apport drwxr-xr-x 3 root root 4096 Apr 17 2014 apps drwxr-xr-x 2 root root 4096 Oct 9 18:15 apt drwxr-xr-x 2 root root 4096 Apr 17 2014 aptitude drwxr-xr-x 4 root root 4096 Apr 17 2014 apt-xapian-index drwxr-xr-x 2 root root 4096 Apr 17 2014 awk . . . هذه الرؤيا تعطينا الكثير من المعلومات التي لم نعتد غالبًا على رؤيتها. تصف الكتلة الأولى (block) نوع الملفّ (إذا كان العمود الأول هو حرف "d” فحينها فالعنصر هو مجلّد، وإذا كان إشارة "-” فحينها يكون العنصر ملفًا عاديًا) والأذونات. يصفُ كلُّ عمودٍ منفصل مفصولٍ بمساحةٍ بيضاء عن غيره عددًا من المعلومات المختلفة مثل مالك الملفّ، المجموعة، حجم العنصر، تاريخ آخر تعديل واسم العنصر. سنقوم بتفصيل بعضٍ من هذه الأمور لاحقًا، ولكن الآن، يكفي أن تعرف أنّه بإمكانك عرض هذه المعلومات باستخدام عَلَم -l مع الأمر ls. لسرد جميع الملفّات بما في ذلك الملفّات المخفيّة، فسيجب عليك إضافة العَلَم -a . بما أنّه لا يوجد هناك ملفّات مخفية حقًا في المسار /usr/share ، فسيجب علينا الرجوع إلى مجلّد المنزل الخاص بنا لتجربة ذلك الأمر. يمكنك الرجوع إلى مجلّد المنزل عبر كتابة الأمر cd دون أي مُعطيات: cd ls -a . .. .bash_logout .bashrc .profile كما يمكنك أن ترى، هناك العديد من الملفّات المخفية في هذا المكان بالإضافة إلى كلٍ من . و .. واللذان يعتبران حرفين من نوعٍ خاص في نظام لينكس. ستجد غالبًا أنّه يتم تخزين ملفات الإعداد كملفات مخفيّة، كما في حالتنا هنا. بالنسبة إلى إشارة النقطة والنقطتين، فهما ليسا مجلّدين بالضبط، بل هما عبارة عن طريقة داخلية (method) للإشارة إلى مساراتٍ أخرى مرتبطة بالمسار الحالي. النقطة الواحدة تُشير إلى المسار الحالي، والنقطتان تشير إلى المسار الأبّ (parent directory) للمسار الحالي. سنشرح هذا الأمر في القسم التالي. التنقّل في نظام الملفّات باستخدام cd لقد قمنا بالانتقال بالفعل عبر مسارين مختلفين لتوضيح بعض خصائص ls في القسم السابق. فلنلقي جولةً أفضل على ذلك الأمر هنا. ابدأ عبر الرجوع إلى المسار /usr/share عبر كتابة التالي: cd /usr/share هذا مثالٌ لتغيير المسار الحالي عبر استخدام ما يعرف بالمسار المُطلق (absolute path). في لينكس، جميع الملفّات المجلّدات تقع تحت المسار الأكثر علوًا (top-most directory)، والذي ندعوه بمجلّد الجذر (root directory)، ولكن يُشار إليه بإشارة / واحدة. يقوم المسار المُطلق بتحديد موقع مجلّدٍ معيّن بالنسبة إلى هذا المسار الأكثر علوًا (مجلّد الجذر /). يسمحُ لنا هذا بالإشارة بطريقةٍ غير معقّدة إلى أيّ مكانٍ في نظام الملفّات. أيُّ مسارٍ مُطلق يجب أن يبدأ بإشارة / . الخيار البديل هو استخدام ما يُعرف بالمسارات المُرتبطة (relative paths). تقوم المسارات المُرتبطة بالإشارة إلى المسارات الموجودة على نظام الملفّات بالنسبة إلى المسار الحالي. هذه الطريقة عادةً تكون أسهل وأقصر بالنسبة إلى المسارات القريبة من المسار الحالي في شجرة الملفّات. يُمكن الإشارة إلى أيّ مسارٍ موجود ضمن المسار الحالي عبر تسميته دون الحاجة لإشارة / . يُمكننا الانتقال إلى المجلّد locale الموجود ضمن /usr/share (والذي هو مسارنا الحالي) عبر كتابة: cd locale يُمكننا أيضًا القفز خطوتين بدل خطوةٍ واحدة والانتقال إلى مسارٍ داخل مسارٍ آخر عبر توفير الجزء الثاني (الذي هو اسم المجلّد الثاني الذي سننتقل إليه) ووضعه بعد المسار الأول. كمثال، يُمكننا الوصول إلى المجلّد LC_MESSAGES الموجود داخل المجلّد en عبر كتابة الأمر التالي: cd en/LC_MESSAGES للرجوع إلى أعلى، وللانتقال إلى المسار الأب للمسار الحالي، يُمكننا استخدام حرف النقطتين الخاص .. الذي تحدّثنا عنه من قبل. كمثال، نحن الآن في المسار /usr/share/locale/en/LC_MESSAGES . للانتقال إلى أعلى بدرجةٍ واحدة، يمكننا أن نكتب: cd .. سيأخذنا هذا الأمر إلى المسار /usr/share/locale/en . من الاختصارات التي رأيتها بالسابق هو استخدام الأمر cd للرجوع إلى مجلّد المنزل الخاص بك بسرعة دون الحاجة لتوفير مساره المعيّن: cd pwd /home/demo لتعلّم المزيد حول كيفية استخدام هذه الأوامر الثلاثة، يمكنك مراجعة هذا الدّرس حول استكشاف نظام الملفّات في نظام لينكس. عرض الملفّات في القسم الأخير، تعلّمنا القليل حول كيفية التنقّل في نظام الملفّات. على الأرجح فإنّكَ رأيت بعض الملفّات أثناء استخدام أمر ls في المسارات السابقة. في هذا القسم، سنناقش طرقًا مختلفة يمكنك استخدامها لعرض الملفّات. على عكس الأنظمة الأخرى فإنّ نظام لينكس والأنظمة الأخرى الشبيهة بيونكس (Unix-like) تعتمدُ على استخدام الملفّات الصرفة (plain text files) في معظم أجزاء النظام. الطريقة الرئيسية التي نقوم من خلالها بعرض الملفّات هي عبر استخدام الأمر less. والذي ندعوه بـ"منشئ الصفحات (pager)”، لأنّه يسمح لنا بالتنقّل عبر صفحات ملفٍ معيّن، less هو عبارة عن تطبيقٍ سيستولي على شاشة الطرفيّة بأكملها أثناء عمله وسيبقى عاملًا إلى حين أن تقرر أنت إغلاقه. سنقوم بفتح الملفّ /etc/services ، والذي هو عبارة عن ملف إعداداتٍ يحتوي على معلومات الخدمات التي يعرفها النظام: less /etc/services سيتم فتح الملفّ في less ، مما يسمح لك بعرض جزءٍ من المستند بحيث يتوافق مع مساحة نافذة الطرفيّة: #Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, officially ports have two entries # even if the protocol doesn't support UDP operations. # # Updated from http://www.iana.org/assignments/port-numbers and other # sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services . # New ports will be added on request if they have been officially assigned # by IANA and used in the real-world or are needed by a debian package. # If you need a huge list of used numbers please install the nmap package. tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp . . . للتمرير بين الصفحات، يُمكنك استخدام مفتاحيّ الأعلى والأسفل على لوحة مفاتيحك. للانتقال بصفحةٍ كاملة إلى الأسفل، يُمكنك إمّا أن تستخدم space bar أو زرّ "Page Down” على لوحة مفاتيحك، أو الاختصار CTRL + F. للرجوع إلى الأعلى، يمكنك إمّا أن تستخدم زرّ "Page Up” أو الاختصار CTRL + B. للبحث عن نصٍ معين في المستند، يمكنك كتابة إشارة / متبوعةً بالنصّ الذي تبحث عنه. كمثال، للبحث عن كلمة "mail”، سيجب علينا كتابة: /mail سيقوم الأمر السابق بالبحث عبر المستند عن كلمة "mail” ويتوقف عند أول نتيجةٍ متوفرة. للانتقال إلى نتيجةٍ أخرى، يمكنك استخدام مفتاح n الصغير (دون Caps Lock): n للرجوع إلى النتيجة السابقة، استخدام حرف N الكبير (مع Caps Lock): N عندما تريد الخروج من برنامج less، يمكنك ببساطة الضغط على حرف q: q صحيحٌ أننا قمنا بالتركيز على أداة less في هذا القسم، إلّا أنه يوجد العديد من الطرق الأخرى لعرض محتويات ملفٍّ ما. يقوم الأمر cat مثلًا بعرض محتويات الملفّ ويقوم بإرجاعك إلى موجّه الأوامر تلقائيًا. يقوم الأمر head افتراضيًا بعرض أول 10 سطورٍ من ملفٍ ما. أيضًا يقوم الأمر tail بعرض السطور الـ10 الأخيرة من ملفٍ ما. تقوم هذه الأوامر بعرض محتويات الملفّات بطريقة تجعلها مناسبة للاستخدام لنقلها عبر الأنابيب (piping) لبرامج أخرى. سنناقش هذا المفهوم في دليلٍ مستقبلي. جرّب الآن استخدام الأوامر السابقة لعرض محتويات الملفّ /etc/services . التّعامل مع الملفّات والمجلّدات تعلّمنا في القسم الأخير كيفية عرض الملفّات، في هذا القسم، سنقوم بتوضيح آلية التّعامل مع الملفّات والمجلّدات وإنشائها. إنشاء ملفّ باستخدام touch يمكن للعديد من الأوامر والبرامج أن تقوم بإنشاء الملفّات. الطريقة الأساسية لإنشاء الملفّات هي عبر الأمر touch. هذا الأمر سيقوم بإنشاء ملفٍ فارغ باستخدام اسم الملفّ المطلوب وموقعه المحدد. أولًا، يجب علينا التأكّد مما إذا كنّا في مجلّد المنزل الخاصّ بنا، بما أنّه المجلّد الذي نمتلكُ فيه صلاحيات حفظ الملفّات. فحينها يمكننا إنشاء ملفٍ يدعى file1 عبر كتابة: cd touch file1 الآن، إذا قمنا بعرض الملفّات الموجودة في مجلّد المنزل الخاصّ بنا، سنرى ملفّنا الجديد: ls file1 إذا استخدمنا هذا الأمر على ملفٍ موجود مسبقًا، فإنّه ببساطة سيتم تحديث وقت آخر تعديل على الملفّ الذي حاولنا إنشاءه (ولكن لن يتم الكتابة فوقه أو حذفه). هذا لن يفيدنا كثيرًا في مرحلتنا هذه. يمكننا أيضًا إنشاء أكثر من ملف في نفس الوقت. يمكننا أيضًا استخدام المسارات المُطلقة. كمثال، إذا كان اسم المستخدم الخاصّ بنا يدعى demo ، فحينها يمكننا كتابة: touch /home/demo/file2 /home/demo/file3 ls file1 file2 file3 إنشاء المسارات باستخدام mkdir هذا الأمر شبيهٌ بالأمر touch، يسمحُ لنا الأمر mkdir بإنشاء مساراتٍ (مجلّدات) جديدة فارغة. كمثال، لإنشاء مجلّد جديد ضمن مجلّد المنزل الخاص بنا ولندعوه test ، يمكننا ببساطة كتابة: cd mkdir test يمكننا أيضًا إنشاء مجلّدٍ داخل مجلّد test ولندعوه example مثلًا عبر كتابة: mkdir test/example لكي يعمل الأمر السابق، يجب على المسار test أن يكون موجودًا بالفعل. لإخبار mkdir بأنّه يجب عليه إنشاء أيّ مساراتٍ ضرورية في طريقه إلى إنشاء مسارٍ مطلوب، يمكنك استخدام الخيار -p معه. يسمحُ لك هذا بإنشاء مساراتٍ ومجلّدات متداخلة في خطوةٍ واحدة. يمكننا إنشاء هيكلة مجلّدات تبدو مثل some/other/directories عبر كتابة: mkdir -p some/other/directories سيقوم الأمر السابق بإنشاء مجلّد some أولًا، ثمّ other ثانيًا بداخله، وأخيرًا مجلّد directories بداخل هذين المجلّدين. نقل وإعادة تسمية الملفّات والمجلّدات باستخدام mv يمكننا تحريكُ ملفٍ ما إلى مسارٍ جديد عبر استخدام الأمر mv. كمثال، يمكننا نقل الملف file1 إلى داخل المجلّد test عبر كتابة: mv file1 test لاستخدام هذا الأمر، سيجبُ علينا إعطاءه جميع العناصر التي نرغبُ بنقلها بالإضافة إلى المواقع التي نريدُ نقلها إليها في النهاية. يمكننا نقلُ ملفٍ ما إلى مجلّد المنزل الخاص بنا عبر استخدام حرف النقطة الخاص . الذي يشير إلى مسارنا الحالي (حرف النقطة يشير للمسار الحالي، ونحن الآن في مجلّد المنزل)، يجب علينا أن نتأكّد مما إذا كنّا في مجلّد المنزل بالفعل، ومن ثمّ ننفذ الأمر: cd mv test/file1 . قد يبدو هذا الأمر مبهمًا قليلًا، ولكن يمكننا استخدام الأمر mv أيضًا لإعادة تسمية الملفّات والمجلّدات. في الواقع، نقل وإعادة تسمية الملفّات ليسا سوى مجرّد عمليتين تضبطان الموقع والاسم لعنصرٍ موجودٍ حالي. لذا، لإعادة تسمية الملفّ test إلى testing ، يمكننا كتابة: mv test testing ملاحظة: من المهمّ أن تُدركَ أنّ نظام لينكس لن يمنعك من القيام بإجراءاتٍ تدميرية له. إذا قمتَ بمحاولة إعادة تسمية ملفٍ ما واخترت اسمًا يوجد بالفعل لملفٍ آخر بنفس المسار، فحينها فإنّه سيتم الكتابة فوق الملفّ القديم والإبقاء على الملفّ الجديد الذي تقوم بنقله. لا يوجد هناك أيّ طريقة لاسترجاع الملفّ القديم في حال قمتَ بالكتابة فوقه. نسخ الملفّات والمجلّدات باستخدام cp مع الأمر mv، يمكننا نقل أو إعادة تسمية ملفٍّ ما أو مجلّد، ولكن لا يمكننا استنساخه. يُمكن للأمر cp أن يقوم بعملِ نسخةٍ جديدة من عنصرٍ موجودٍ حاليًا. كمثال، يمكننا نسخ الملف file3 إلى ملفٍ جديد يُدعى file4: cp file3 file4 على عكس العملية التي يقوم بها mv والتي بعدها لن يبقى ملفّ file3 موجودًا، فإنّنا الآن نمتلكُ كلًّا من الملفّين file3 و file4. ملاحظة: كما هو الحال مع الأمر mv، فإنّه يُمكن أيضًا أن يتم الكتابة فوق ملفٍ ما إذا لم تكن حذرًا حول اسم الملفّ الذي ستستخدمه كهدفٍ للعمليّة. كمثال، إذا كان الملفّ file4 موجودًا بالفعل بالمثال أعلاه، فإنّه سيتم استبدال محتوياته بشكلٍ كامل بمحتويات الملفّ file3. بهدفِ نسخ المجلّدات والمسارات، يجب أن تستخدم الخيار -r مع الأمر cp. هذا الخيار هو اختصار لكلمة "recursive”، حيثُ أنّه يقوم بنسخ المجلّد بالإضافة إلى جميع محتوياته الداخلية. من الضروري استخدام هذا الخيار عند نسخ المجلّدات، بغضّ النظر عمّا إذا كان المجلّد فارغًا أم لا. كمثال، انسخ المجلّد some إلى مجلّدٍ جديد يدعى again ، عن طريق الأمر: cp -r some again على عكس الملفّات، والتي يُمكن الكتابة فوقها في حال كانت موجودة بالفعل، فإنّه في حال كان المجلّد الهدف موجودًا بالفعل، فإنّه سيتم نسخ المجلّد أو الملفّ إلى داخل المجلّد الموجود حاليًا: cp file1 again هذا الأمر سيقوم بإنشاء نسخةٍ جديدة من ملفّ file1 ويضعها داخل مجلّد again. حذف الملفّات والمجلّدات باستخدام rm و rmdir يمكنك استخدام الأمر rm لحذف ملفٍ معيّن. ملاحظة: كنّ حذرًا بشدّة عند استخدام أوامر تدميرية مثل rm . لأنّه لا يوجد هناك أمرٌ استرجاعي لهذه الأفعال في حال حصلت، لذلك فمن الممكن أن تقومَ بتدميرِ ملفاتٍ مهمّة بالخطأ للأبد. لحذف ملفٍ عادي، طبّق: cd rm file4 بالمثلِ أيضًا، لحذف المجلّدات الفارغة، يمكننا استخدام الأمر rmdir. سينجحُ هذا الأمر فقط في حال كان المجلّد فارغًا. كمثال، لحذف مجلّد example الموجود بداخل مجلّد testing، يمكننا أن نكتب: rmdir testing/example إذا كنتَ ترغبُ في حذف مجلّد غير فارغ، فسيجبُ عليك استخدام الخيار -r مع الأمر rmdir، والذي سيقوم بحذف جميع محتويات مسارٍ معيّن مباشرةً، بالإضافة إلى المجلّد نفسه. كمثال، لحذف مجلّد again وكل شيءٍ بداخله، يمكننا أن نكتب: rm -r again مُجدّدًا، تجدرُ الإشارة إلى أن هذه العمليات دائمة. كنّ متأكدًا دائمًا أنّ الأمر الذي كتبته هو أمرٌ ترغبُ في تنفيذه حقًا. تحرير الملفّات حاليًا، صرنا نعرف كيفية التّعامل مع الملفّات ككائنات، ولكننا لم نتعلّم بعد كيفية تحريرها بشكلٍ فعلي وكيفية إضافة المحتوى إليها. الأمر nano هو واحدٌ من أبسط محررات النصوص المُستعملة عبر سطر الأوامر في نظام لينكس، وهو نقطة بدايةٍ عظيمة للمبتدئين. يقوم nano بتنفيذ الأوامر بشكلٍ شبيه ببرنامج less الذي تحدّثنا عنه من قبل، ولكنّه يحتلّ شاشة الطرفيّة بأكملها طوال فترة استخدامه. يُمكن للمحرر nano أن يقوم بفتح ملفاتٍ موجودة أو إنشاء أخرى. إذا قررتَ إنشاء ملفٍ جديد، يمكنك تمرير اسمه للمحرر nano الآن أو لاحقًا عندما تودُّ حفظ المحتوى الذي تريده. يمكننا فتح الملفّ file1 للتحرير عبر كتابة: cd nano file1 سيقوم برنامج nano بفتح الملفّ (والذي هو فارغٌ حاليًا). ستبدو الواجهة شيئًا كالتالي: GNU nano 2.2.6 File: file1 [ Read 0 lines ] ^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell بالأعلى، لدينا اسم التطبيق واسم الملفّ الذي نقوم حاليًا بتحريره. في المنتصف، محتوى الملفّ الفارغ حاليًا. في الأسفل، يظهرُ عددٌا من المفاتيح التي يُمكن أن يتم ضغطها مع بعضها البعض لتنفيذ مهامٍ معيّنة للتحكم في المحرّر. لكلّ واحدٍ من هؤلاء، يعني الحرف ^ مفتاحَ CTRL. للحصول على المساعدة من المحرّر، اضغط على مفاتحي: Ctrl + G عندما تنتهي من تصفّح المساعدة، اضغط على Ctrl + X للرجوع إلى مستندك. قم بكتابة / تعديل أيِّ نصٍ تريده. في هذا المثال، سنكتبُ العبارتين التاليتين فقط: Hello there. Here Is some text. لحفظ ما كتبناه، يمكننا أن نضغط: Ctrl + O هذا هو الحرف O وليس الرقم صفر. سيسألك البرنامج عن تأكيد اسم الملفّ الذي تودّ حفظه: File Name to Write: file1 ^G Get Help M-D DOS Format M-A Append M-B Backup File ^C Cancel M-M Mac Format M-P Prepend كما ترى، تغيّرت الخيارات التي بالأسفل أيضًا. تعتمد هذه الخيارات على السياق، بمعنى أنّها ستتغير طبقًا لِمَا تحاولُ أن تفعله. إذا كان الملفّ file1 لا يزالُ ملفًا ترغبُ بالكتابة إليه، اضغط على مفتاح "Enter”. إذا قمنا بعمل بعض التغييرات الإضافية ورغبنا في حفظ الملفّ والخروج من البرنامج، فسنتمكّن من رؤية موجّه أوامرٍ مشابه. قم بإضافة سطرٍ جديد، ثمَّ حاول الخروج من البرنامج عبر كتابة: Ctrl + X إذا لم تقم بحفظ المحتويات قبل الخروج بعد عمل تغييراتك، فسيتم سؤالك عمّا إذا كنتَ تريد حفظها أم لا: Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? Y Yes N No ^C Cancel يمكنك كتابة "Y” لحفظ التغييرات، "N” لرفضها والخروج، أو "Ctrl + C” لإلغاء عمليّة الخروج من البرنامج والعودة إليه. إذا اخترتَ الحفظ، فستحصلُ على نفسِ موجّه أوامر الملفّ الذي حصلتَ عليه من قبل، لتأكيد ما إذا كنتَ تريد حفظ التغييرات إلى نفس الملفّ. اضغط زرّ Enter لحفظ الملفّ والخروج من المحرّر. يمكنك رؤية محتويات الملفّ الذي أنشأته إمّا عبر برنامج cat لعرض محتوياته، أو برنامج less لعرضِه للقراءة. بعد عرضِ البرنامج باستخدام less ، تذكّر أنّه يجب عليك الضغط على زرّ q للرجوع للطرفيّة. less file1 Hello there. Here is some text. Another line. محرّرٌ آخر يمكنُ أن يتم توجيهكَ إليّه في شروحاتٍ مستقبلية هو vim أو vi . هذا المحرّر أكثر تطورًا وأكثر قوةً ، ولكنّ يتطلب الكثير لتعلّمه. إذا أخبركَ أحدهم باستخدام vim أو vi، فاستخدم nano عوضًا عن ذلك. إذا كنتَ ترغبُ بتعلّم المزيد حول كيفية استخدام vim ، فاقرأ هذا الدّرس حول كيفية البدء مع vim. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن الخاتمة الآن، يجب أن تكونَ قد امتلكتَ أساسيات فهم كيفية التنقّل في خادومك العامل بنظام لينكس وكيفية عرض الملفّات والمسارات المتوّفرة. يجبُ أن تكون قادرًا أيضًا على معرفة أساسيات أوامر التعامل مع الملفّات والتي ستسمح لك بعرض، نسخ، نقل أو حذف الملفّات. أخيرًا، يجب أن تكون مرتاحًا مع بعض أساسيات تحرير الملفّات باستخدام محرّر nano. مع هذه المهارات القليلة، يجب أن يكون قادرًا على متابعة مشوارك في شروحاتٍ أخرى وتعلّم كيفية استخراج أكبر إمكانية متوفّرة من خادومك. في الدّرس التالي، سنناقش كيفية عرض وفهم الأذونات في لينكس. ترجمة -وبتصرّف- للمقال: Basic Linux Navigation and File Management.
  2. سنغطّي في هذا الدّرس أساسيات التعامل مع الطرفيّة (Terminal) في لينكس أو بالأحرى سطر الأوامر في لينكس بالإضافة إلى العديد من الأوامر المشوّقة. إذا كنتَ جديدًا على نظام لينكس فقد تودّ أن تتعرّف على الطرفيّة قليلًا كونها الطريقة الأساسية للتعامل مع الخواديم العاملة بنظام لينكس. ربما يبدو استخدام سطر الأوامر كمهمّةٍ شاقّة للوهلة الأولى ولكنه في الواقع سهلٌ للغاية إذا بدأت بتعلّم الأساسيات أولًا وبناء مهاراتك من هناك. إذا كنتَ تريد أن تستفيد إلى أقصى الحدود من هذا الدليل، فستحتاج خادوم لينكس لتتصل به وتستعمله. تم إعداد هذا الدليل ليتوافق مع خادومٍ يعمل بنظام Ubuntu 14.04 ولكن المعلومات العامّة تنطبق أيضًا على التوزيعات الأخرى. فلنبدأ بتعريف ماهيّة محاكي الطرفيّة. مُحاكي الطرفيّة محاكي الطرفيّة (terminal emulator) هو عبارة عن برنامجٍ يسمح باستخدام الطرفيّة في بيئةٍ رسومية. كما أنّ معظم الناس يستخدمون نظام التشغيل بواسطة واجهةٍ رسومية (GUI) لأداء مهامّهم اليومية، فإنّه من الضروري استخدام محاكي الطرفيّة من قبل معظم مستخدمي خواديم لينكس لأداء مهامّهم. إليك بعض محاكيات الطرفيّة المجانية والشهيرة بناءً على نظام التشغيل: Mac OS X: الطرفية (الافتراضيّة)، iTerm 2. Windows: برنامج Putty. Linux: الطرفيّة، KDE Konsole, Xterm. يمتلكُ كلُّ محاكي طرفية مجموعته الخاصّة من المميزات، ولكنّ كلَّ واحدٍ من القائمة السابقة يعمل جيدًا ومن السهل استخدامه. الصدفة في نظام لينكس، الصدفة (shell) هي عبارة عن واجهة سطر أوامر تتفاعل مع أوامر المستخدم وملفّات السكربتات (scripts) وتقوم بإخبار نظام تشغيل الخادوم عن كيفية التعامل معها. هناك عدّة صدفات شهيرة، مثل صدفة Bourne (اختصارها sh) وصدفة C (اختصارها csh). تمتلك كلُّ صدفة مميزاتها الخاصّة بها والتي تختلف بها عن الأخرى، مثل كيفية معالجة وتفسير الأوامر التي تصلها، ولكنّها جميعًا تمتلك المزايا الأساسية مثل إعادة توجيه الإدخال والإخراج، المتغيّرات، اختبار الشروط وأمور أخرى. تمّ كتابة هذا الدليل ليتعامل مع صدفة Bourne-Again، والتي عادةً يتم الإشارة إليها باسم bash. والتي هي أيضًا الصدفة الافتراضيّة لمعظم توزيعات لينكس، مثل Ubuntu, CentOS و RedHat. موجّه الأوامر عندما تقوم بتسجيل الدخول لأول مرة إلى خادوم، فإنّه عادةً سيتم ترحيبك بواسطة "رسالة اليوم – Message of the day” (اختصارها MOTD)، والتي هي عادةً ما تكون رسالةً تحتوي على معلوماتٍ عدّة مثل إصدار توزيعة لينكس التي يستخدمها الخادوم. بعد رسالة MOTD، سيتم توجيهك إلى موجّه الأوامر (command prompt)، أو موجّه الصدفة، والذي هو المكان الذي يمكنك من خلاله إصدار الأوامر إلى الخادوم. المعلومات التي يتم تقديمها في موجّه الأوامر يُمكن أن يتم تخصيصها من طرف المستخدم، هذا مثال على موجّه الأوامر الافتراضي لتوزيعة أوبونتو 14.04: sammy@webapp:~$ فلنجزّء مكونات الأمر السابق: sammy: اسم المستخدم الحالي. webapp: اسم المضيف الحالي (hostname). ~: المسار الحالي. في bash، والتي هي غالبًا ما تكون الصدفة الافتراضيّة، فإنّ إشارة ~ أو ما تُعرف بإشارة المدّ، هي عبارةً عن محرف خاص يُشيرُ تلقائيًا إلى مسار مجلّد المنزل للمستخدم العادي; في هذه الحالة، هو يمثّل المسار /home/sammy . $: رمز موجّه الأوامر. هذا الرمز يُعَلّم نهاية موجّه الأوامر، والذي بعده سيظهر ما يُدخله المستخدم إلى الطرفيّة. إليك مثالًا لِمَا سيبدو عليه موجّه الأوامر إذا تمّ تسجيل الدخول باسم المستخدم root في المسار /var/log : root@webapp:/var/log# لاحظ أنّ موجّه الأوامر ينتهي برمز # ، والذي يُعتبر رمز موجّه الأوامر الخاص بالمستخدم root. في نظام لينكس، مستخدم root هو المستخدم الفائق والذي هو بإمكانه تطبيق تغييراتٍ على امتداد النظام بأكمله بالإضافة لوظائف الإدارة والإعداد، إنّه مستخدم غير مقيّد بأيّ نوعٍ من القيود وبإمكانه تنفيذ أيّ مهمة على الخادوم. تنفيذ الأوامر يُمكن إصدار الأوامر في موجّه الأوامر عبر تحديد اسم ملفٍّ تنفيذي، والذي يمكن أن يكون برنامجًا تنفيذيًا أو سكربتًا. هناك العديد من أوامر لينكس المعيارية والأدوات التي تأتي مُثبتةً مع نظام التشغيل، والتي تسمح لك بتصفّح نظام الملفّات، تثبيت وإزالة البرامج والحزم بالإضافة إلى إعداد النظام والتطبيقات. مهمّة تشغيل أمرٍ ما تُعرف باسم "عملية". عندما يتم تنفيذ أمرٍ ما من طرف المستخدم (والتي هي الطريقة الافتراضيّة لتنفيذ المهام)، فإنّه يجب على المستخدم أن ينتظر إلى حين انتهاء العملية قبل أن يتم إرجاعه من جديد إلى موجّه الأوامر، حينها يمكنه إصدار المزيد من الأوامر ليتم تنفيذها. من المهم التنويه أيضًا إلى أنّ كلّ الأشياء في نظام لينكس حساسة لحالة الحروف، بما في ذلك أسماء الملفّات والمسارات، الأوامر، المُعطيات والخيارات. إذا كان شيءٌ ما لا يعمل كالمتوقّع، فقم بالتحقق من تهجئة وحالة حروف الأوامر الخاصّة بك. سنقوم بالتطرّق إلى بضع أمثلة تغطّي أساسيات تنفيذ الأوامر. ملاحظة: إذا لم تكن متّصلًا بالفعل بخادوم لينكس، فالآن هو الوقت المناسب لفعل ذلك. إذا كنتَ تمتلك خادوم لينكس ولكنك تواجه مشاكل بالاتّصال، فاتّبع هذا الرابط: كيفية الاتصال بخادوم عبر SSH. دون مُعطيات وخيارات لتنفيذ أمرٍ دون معطياتٍ (arguments) أو خيارات، بكل بساطة قم بكتابة الأمر واضغط على زرّ Enter. إذا قمتَ بتشغيل أمرٍ بهذه الطريقة، فسيقوم باستخدام سلوكه الافتراضي، والذي يختلف من أمرٍ إلى آخر. مثلًا، إذا قمتَ بتشغيل الأمر cd دون أيّ مُعطيات، فسيتم إرجاع إلى مسار مجلّد المنزل الخاص باسم المستخدم الذي تستعمله حاليًا. سيقوم الأمر ls بطباعة محتويات المسار الحالي من ملفّاتٍ ومجلّدات. وبدون أيّ مُعطيات فسيقوم الأمر ip بطباعة رسالةٍ تبيّن لك كيفية استخدام الأمر ip. جرّب تشغيل الأمر ls بدون أي مُعطيات لسرد الملفّات والمجلّدات الحالية في مسارك الحالي (ربما لا يكون هناك أيٌّ منها بالمناسبة): ls مع المُعطيات تتوقع العديد من الأوامر استقبال مُعطيات أو مُعامِلات (parameters)، والتي من شأنها أن تقوم بتغيير سلوك عملية تنفيذ الأمر. مثلًا، الطريقة الأكثر شيوعًا لاستخدام cd هي عبر تمرير مُعطىٍ وحيد إليه يُحدد المسار الذي يجب الانتقال إليه. كمثال، للانتقال إلى المسار /usr/bin حيث يتم تثبيت العديد من الأوامر العادية، فسيتوجّب عليك تطبيق الأمر التالي: cd /usr/bin الجزء "cd” من الأمر السابق هو الأمر، والمُعطى الأول "/usr/bin” يتبُع الأمر. لاحظ كيف تمّ تحديث مسار موجّه الأوامر الحالي تلقائيًا بعد تنفيذ الأمر. إذا كنتَ تحبّ، جرّب تشغيل الأمر ls لرؤية الملفّات الموجودة حاليًا في مسارك الحالي. ls مع الخيارات تقبل معظم الأوامر الخيارات، والتي تُعرف أيضًا باسم الأعلام (flags) أو المحوّلات (switches)، والتي تقوم بالتّعديل على سلوكٍ أمرٍ ما وعمله. وبما أنها عبارة عن مُعطياتٍ من نوعٍ خاص، فإنّ الخيارات تتبعُ الأوامر أيضًا، ويُمكن التعرّف على الخيارات عبر مِحرَف ( - ) متبوعًا بخيارٍ واحدٍ أو أكثر، والتي يتم تمثيلها بحروفٍ كبيرة أو صغيرة. بالإضافة إلى ذلك، تبدأ بعض الخيارات بـ (--) متبوعةً بخيارٍ وحيد يتكون من أكثر من مِحرَف (عادةً يكون كلمةً أو كلمتين تصفان الخيار). كمثالٍ بسيط حول كيفية عمل الخيارات، فلنلقي نظرةً على الأمر ls. إليكَ بعض الخيارات الشائعة التي يتم استخدامها عادةً عند التعامل مع الأمر ls: -l : طباعة "السرد الطويل"، والذي يتضمّن تفاصيل إضافية مثل أذونات الملفّات، الملكيّة، الحجم والتوقيت. -a : سرد جميع محتويات مسارٍ معين، بما في ذلك الملفّّات المخفيّة (والتي تبدأ بإشارة . ). لاستخدام خيار -l مع الأمر ls، استعمل هذا الأمر: ls -l لاحظ أنّ عملية السرد تتضمن نفس الملفّات التي تمّ سردُها مسبقًا، ولكن بمعلوماتٍ إضافية حول كلِّ ملفّّ. كما ذكرنا مسبقًا، يُمكن تجميع الخيارات مع بعضها البعض. إذا كنتَ تريد استخدام الخيارين -a و -l مع بعضهما البعض، فيمكنك تطبيق ls -l -a أو جمعهما هكذا: ls -la لاحظ أنّ عملية السرد تتضمن الملفّّات والمسارات المخفيّة بسبب الخيار -a. مع الخيارات والمُعطيات يُمكن غالبًا جمعُ المُعطيات والخيارات مع بعضهما البعض عند تشغيل الأوامر. كمثال، يُمكنك التحقق من محتويات المسار /home ، بغضّ النظر عن مسارك الحالي عن طريق استخدام أمر ls هذا: ls -la /home ls هو الأمر، -la هو الخيار و/home هو المُعطى الذي يحدد الملفّ أو المسار الذي يجب سردُه. يجب أن يطبع هذا الأمر محتويات المسار /home ،والذي يجب بدوره أن يحتوي جميع مجلّدات المنزل الخاصّة بالمستخدمين العاديين على الخادوم. مُتغيّرات البيئة مُتغيّرات البيئة (environment variables) هي عبارة عن قِيَم (values) تقوم بتغيير طريقة تنفيذ الأوامر والعمليات. عندَ تسجيل الدخول لأولّ مرة إلى الخادوم، فإنّه سيتم ضبط العديد من مُتغيّرات البيئة وفقًا لعدّة ملفّات إعداد افتراضيًا. عرض جميع مُتغيّرات البيئة لعرض جميع مُتغيّرات البيئة التي تم ضبطُها لجلسة طرفية معيّنة، قم بتشغيل الأمر env: env سيكون هناك ناتجٌ كثير للأمر السابق، ولكن حاول العثور على مُدخلة PATH: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games مُتغيّر البيئة PATH هو عبارة عن قائمةٍ مفصولٌ عناصرها بنقطتين فوق بعضهما، تتكون من قائمةٍ بالمسارات التي ستقوم الصَدَفَة بالبحث عن البرامج أو السكربتات التنفيذيّة عند تنفيذ أمرٍ معيّن. مثلًا، يوجد الأمر env بالمسار /usr/bin ، ويُمكننا تنفيذ الأمر دون الحاجة إلى تحديد موقعه بالضبط، لأنّ مساره موجود في متغيّر البيئة PATH. عرض قيمة مُتغيّر يُمكن جلب قيمة مُتغيّر بيئة عن طريق وضع إشارة $ قبل اسم المتغيّر. حيثُ أنّ القيام بذلك سيقوم باستبدال اسم المتغيّر بقيمته. مثلًا، لطباعة قيمة المتغيّر PATH، يمكنك استخدام الأمر echo: echo $PATH يُمكنك استخدام المتغيّر HOME أيضًا، والذي هو عبارة عن مسار مجلّد المنزل الخاص بمستخدمك الحالي الافتراضي، للانتقال إلى مجلّد المنزل الخاص بك، طبّق: cd $HOME إذا كنتَ تحاول الوصول إلى مُتغيّر بيئةٍ لم يتم ضبطه بعد، فإنّه لن يتم طباعة قيمة ذاك المتغيّر، حيث أنه سيكون مُتغيّرا فارغًا. ضبط مُتغيّرات البيئة الآن، تعلّمتَ كيفية عرض مُتغيّرات البيئة الخاصّة بك، يجب عليك الآن تعلّم كيفية ضبطها. لضبط أو تعيين مُتغيّر بيئة، فكلُّ ما ستحتاج القيام به هو البدء بكتابة اسم المتغيّر متبوعًا بإشارة = ، متبوعةً مباشرةً بقيمته، كمثال: VAR=value لاحظ أنّه في حال قمتَ بمحاولة تعيين قيمةٍ لمُتغيّرٍ موجودٍ بالفعل، فإنّه سيتم الكتابة فوق القيمة الافتراضيّة. وإذا لم يكن المتغيّر موجودًا أساسًا فإنّه سيتم إنشاؤه. صدفة Bash تمتلكُ أمرًا يُدعى export والذي يقوم بتصدير مُتغيّرٍ ليُتَمَكَّنَ من استدعائه بواسطة العمليات الفرعية (child processes). بعبارةً أبسط، يَسمحُ لك هذا الأمر باستخدام سكربتاتٍ تستدعي مُتغيّرات بيئة تمّ تصديرها من جلستكَ الحاليّة. إذا كنتَ لم تستوعب بعدُ ما يعني هذا، فلا تقلق الآن. يُمكنك الإشارة إلى متغيراتٍ حالية عند تعيين مُتغيّراتٍ جديدة. مثلًا، إذا قمتَ بتثبيت تطبيقٍ ما إلى المسار /opt/app/bin ، فيُمكنك إضافة ذاك المسار إلى نهاية مُتغيّر البيئة PATH الخاصّ بك عبر هذا الأمر: export PATH=$PATH:/opt/app/bin الآن، تأكّد مما إذا تمّ إضافة /opt/app/bin إلى نهاية مُتغيّر PATH باستخدام الأمر echo: echo $PATH لا تنس أنّ القيام بتعيين مُتغيّرات البيئة بهذه الطريقة يقوم بتعيينها فقط لجلستك الحالية. هذا يعني أنّه في حال قمتَ بتسجيل الخروج من جلستك الحالية أو التبديل لجلسةٍ أخرى، فإنّه لن يتم حفظ أيٍّ من التغييرات التي قمتَ بها على مُتغيّرات البيئة. هناك دومًا طريقة للإبقاء على هذه التغييرات، ولكننا لن نغطّي هذا الأمر في هذا الدليل حاليًا. الخاتمة هكذا الآن تعلّمتَ أساسيات طرفيّة لينكس (وبضع أوامرَ أخرى)، يجب أن تمتلك الآن قدرةً جيّدة على توسيع معرفتك بأوامر نظام لينكس. ترجمة -وبتصرّف- للمقال: An Introduction to the Linux Terminal.
  3. قدرات إعادة التوجيه (redirection) في لينكس توفّر لك العديد من الأدوات القوية التي يُمكن استخدامها لجعل جميع أنواع المهام أسهل للتنفيذ. سواءٌ كنتَ تكتبُ برمجياتٍ معقّدة أو كنتَ تقوم بإدارة الملفّات عبر سطر الأوامر، فإنّ معرفة كيفية التلاعب بتدفّقات (streams) الإدخال/الإخراج (input/output) على بيئتك الشخصية سيزيدُ من إنتاجيّتك بشكلٍ ملحوظ. التدفقات يتم توزيع الإدخال والإخراج في بيئة لينكس عبر ثلاث تدفّقات (streams) أساسية: إدخال معياري (stdin). إخراج معياري (stdout). خطأ معياري (stderr). هذه التدفّقات أيضًا مرقّمة وفق التالي: (stdin (0. (stdout (1. (stderr (2. أثناء التفاعلات المعيارية (standard interactions) بين المستخدم والطرفيّة (terminal)، فإنّه يتم نقل الإدخال المعياري عبر لوحة مفاتيح المستخدم. يتم عرض الإدخال المعياري و الخطأ المعياري على طرفية المستخدم كنصّ. بشكلٍ عام، جميع هذه التدفّقات الثلاثة يتم الإشارة إليها بـ"التدفّقات المعيارية". الإدخال المعياري تدفّق الإدخال المعياري عادةً ما يحمل البيانات من المستخدم إلى البرنامج. البرامج التي تتوقع إدخالًا معيّنًا من المستخدم تستقبل الإدخال عادةً من جهازٍ ما، مثل لوحة المفاتيح، الإدخال المعياري ينتهي عند وصوله نهاية الملف (EOF – End Of File). كما يتم وصفه بواسطة اسمه، فإنّ نهاية الملف أو "EOF" تُعلِم الحاسوب أنه لا يوجد هناك المزيد من البيانات ليتم قراءتُها. لرؤية الإدخال المعياري بصورةٍ حيّةَ، شغّل برنامج cat. كلمة Cat ترمز لـ"concatenate” أو "سَلسَلة الأشياء"، والتي تعني ربط الأشياء مع بعضها البعض على شكل سلسلة. يتم استخدام Cat بشكلٍ شائع لدمج محتويات ملفّّين. عندما يتم تشغيله لوحده فإنّ cat يقوم بفتح طرفيّته الخاصّة. cat بعد فتح cat، قم بإدخال مجموعة من الأرقام كالتالي: 1 2 3 ثم اضغط Ctrl+D. عندما تقوم بكتابة رقم والضغط على زرّ Enter، فإنّك تقوم بإرسال إدخال معياري (standard input) إلى برنامج cat الذي يعمل حاليًا، والذي هو بدوره يتوقّع وصول الإدخال إليه. يقوم برنامج cat بإرسال الإدخال الذي تُدخله إليه مرةً أخرى إلى الطرفية حيث يتم عرضه كإخراج معياري (standard output). إشارة EOF (أو نهاية مدّة حياة العملية الحالية – End of File) يُمكن أن يتم إرسالها إلى البرنامج بواسطة المستخدم عبر الضغط على مفاتحيّ Ctrl+D. بعد أن يتسلّم برنامج cat إشارة EOF فإنّ البرنامج يتوقف. الإخراج المعياري يقوم الإخراج المعياري (standard output) بكتابة البيانات التي يتم إنشاءها بواسطة البرامج. عندما لا يتم إعادة توجيه تدفّق الإخراج المعياري، فإنّه سيتم إخراج النصّ إلى الطرفية. جرّب المثال التالي: echo Sent to the terminal through standard output الخطأ المعياري يقوم الخطأ المعياري (standard error) بكتابة الأخطاء التي يتم إنشاؤها بواسطة البرامج التي فشلت في أن يتم تنفيذها في مرحلةٍ ما. تمامًا مثل الإدخال المعياري فإنّ الوجهة الافتراضية لهذا التدفّق هي شاشة الطرفيّة. عندما يتم إرسال تدفّقِ خَطَأٍ معياريٍ لبرنامجٍ إلى برنامجٍ آخر، فإنّ البيانات المُرسلة (المتكوّنة من أخطاء البرنامج) يتم إرسالها بشكلٍ موازي إلى الطرفية كذلك. فلنرى مثالًا بسيطًا عن الخطأ المعياري باستخدام ls. يقوم الأمر ls بسرد محتويات المجلّدات أو المسارات. عندما يتم تنفيذه بدون أيّ معطيات، فإنَّ أمر ls يقوم بسرد محتويات المسار الحالي. إذا تمّ تشغيله مع مسارٍ معيّن كمُعطَى، فإنّه سيقوم بسرد محتويات المسار المطلوب. ls % بما أنّ % ليس مسارًا موجودًا، فإنّه سيتم إرسال النصّ التالي كخطأٍ معياري: ls: cannot access %: No such file or directory إعادة توجيه التدفق يمتلك نظام لينكس أوامرًا مُضمّنة لإعادة توجيه كلّ تدفّق. تقوم هذه الأوامر بطباعة إخراجٍ معياري إلى ملفٍّ ما. إذا تم استهداف ملفٍّ غير موجود، فإنّه سيتم إنشاء ملفٍّ جديد باسم ذاك الملفّ ليتم الكتابة عليه. الأوامر التي يأتي معها قوسٌ واحد (إشارة >) تقوم بالكتابة فوق ملفّ الوجهة الموجود. بالأسفل تجد بعض الإشارات الشائع استخدامها مع الأوامر عند التعامل معها بالطرفية لإعادة توجيه التدفّقات: 1. الكتابة فوق الملفات > إخراج معياري. < إدخال معياري. 2> خطأ معياري. 2. الإضافة إلى الملفات الأوامر التي يتم استخدامها مع قوسين اثنين لا تقوم بالكتابة فوق الملفّّات، بل تقوم بالكتابة إلى نهاية الملفّّات: >> إخراج معياري. << إدخال معياري. 2>> خطأ معياري. فلنأخذ المثال التالي: $ cat > write_to_me.txt a b c > ctrl-d يتم استخدام cat هنا لتتم عملية الكتابة إلى أحد الملفّّات، والذي يتم إنشاؤه تلقائيًا بسبب عدم وجوده ولأن الأمر الأول يحتاجه. لطباعة محتويات الملفّ write_to_me.txt باستخدام cat: $ cat write_to_me.txt يجب أن ترى أنّ الملفّ يحتوي على التالي: a b c الآن قم بإعادة توجيه cat إلى write_to_me.txt مجددًا وقم بإدخال الأرقام التالية: $ cat > write_to_me.txt 1 2 3 > ctrl-d عندما تستعمل cat لعرض محتويات write_to_me.txt، يجب أن ترى التالي: 1 2 3 أخيرًا، قم بعمل إعادة توجيه أخرى لـ cat ولكن هذه المرّة باستخدام قوسين عوضًا عن قوسٍ واحد: cat >> write_to_me.txt a b c ctrl-d وافتح ملفّ write_to_me.txt مجددًا، وسترى التالي: 1 2 3 a b c يحتوي الملفّّ الآن على النصّ من المرّة الأخيرة لاستخدام الأمر cat والتي قبلها، لأنّ الثانية لم تقم بالكتابة فوق الأولى. الأنابيب يتم استخدام الأنابيب (Pipes) لإعادة توجيه تدفّقٍ من برنامجٍ إلى آخر. عندما يتم إرسال الإخراج المعياري الخاص بأحد البرامج إلى برنامجٍ آخر عبر أنبوب (pipe) فإنّ بيانات البرنامج الأول والتي تمّ تلقّيها من طرف البرنامج الثاني سوف لن تظهر في الطرفية. فقط البيانات المُرشّحة عبر البرنامج الثاني سوف يتم عرضها. الأنبوب في نظام لينكس يتم تمثيله بإشارة شريطٍ عمودي: *|* وكمثالٍ على أمرٍ يستخدم أنبوبًا: ls | less هذا الأمر يقوم بأخذ ناتج الأمر ls (والذي يقوم بعرض محتويات المسار الحالي الذي أنت فيه) ويقوم بتمريره عبر أنبوبٍ إلى برنامج less. يقوم less بعرض البيانات المُرسلة إليه سطرًا سطرًا بدلًا من عرضها كاملة. بشكلٍ عام، يقوم ls بعرض محتويات المسار المطلوب عبر عرض الخرج بأكمله دفعةً واحدة. عندما تقوم بتشغيل ls عبر less فإنّ كلّ مُدخَلة يتم عرضها في سطرٍ واحد فقط خاصٍ بها ولا يتم عرض الخرج كله دفعةً واحدة، بل واحدة واحدة. على الرغم من أنّ وظيفة الأنابيب قد تبدو مشابهةً لإشارات الأقوس < و << (إعادة توجيه الإخراج المعياري)، فإنّ الفرق هو أنّ الأنابيب تقوم بتوجيه الخرج من أمرٍ إلى آخر، بينما تقوم إشارات الأقواس مثل < و << بتوجيه الخرج حصرًا إلى الملفّات فقط. المرشحات المرشّحات (filters) هي عبارة عن أوامر تعدّل على أنابيب إعادة التوجيه والإخراج. لاحظ أيضًا أنّه يمكن استخدام أوامر المرشّحات وأوامر لينكس العادية دون الحاجة لاستخدام الأنابيب. find: يقوم برنامج find بعرض الملفّات التي يتطابق اسمها مع المعطيات المُمررة له. grep: يقوم برنامج grep بعرض النصّ الذي يتطابق مع النصّ المُمرر إليه. tee: مهمّة برنامج tee هي إعادة توجيه الإدخال المعياري إلى كلٍ من الإخراج المعياري وملفٍّ واحد أو أكثر. tr: يقوم برنامج tr بالبحث عن سلسلة (string) واستبدالها بواحدة أخرى. wc: عدّاد للمحارف، السطور والكلمات. أمثلة قد تعرّفت الآن على إعادة التوجيه، استخدام الأنابيب والمرشّحات الأساسية، فلنلقي نظرةً على بعض أنماط إعادة التوجيه الأساسية والأمثلة. الأمر > الملف يقوم هذا النمط بإعادة توجيه ناتج أمرٍ معين إلى ملفّ، مثال: ls ~ > root_dir_contents.txt سيقوم الأمر السابق بتمرير محتويات مجلد الجذر (root directory) وكتابتها إلى ملفٍّ يدعى root_dir_contents.txt. سيقوم أيضًا بالكتابة فوق أيّ بيانات موجودة في ذاك الملفّ كوننا نستخدم قوسًا واحدًا فقط (>). الأمر > dev/null/ dev/null/ هو ملفٌّ خاص يتم استعماله لحذف أيّ بياناتٍ يتم توجيهها له. يتم استخدامه للتخلص من الخرج الذي لا نحتاجه والذي يُمكن أن يتعارض أحيانًا مع وظيفة أمرٍ آخر أو سكربت (script). يتم إهمال أي خرجٍ يتم إرساله إلى dev/null/. في المستقبل، ربّما تقوم باستخدام إعادة توجيه الخرج الناتج عن الأوامر والأخطاء إلى dev/null/ عند كتابة سكربتات الشلّ (shell scripts). ls > /dev/null سيقوم الأمر السابق بإهمال تدفّق الإخراج المعياري (standard output stream) العائد من الأمر ls عبر تمريره إلى الملفّ dev/null/ الذي سيتخلص منه. الأمر 2> الملف يقوم هذا النمط بتوجيه تدفّق الخطأ المعياري لأمرٍ ما إلى ملفّ، حيث يقوم بالكتابة فوق محتوياته الموجودة. كمثال: mkdir '' 2> mkdir_log.txt هذا الأمر سيوجّه رسالة الخطأ الصادرة عن "اسم المسار الخاطئ" ويكتبها إلى ملفّ mkdir_log.txt. لاحظ أنّه سوف يتم إرسال رسالة الخطأ أيضًا إلى الطرفية ليتمّ عرضها كنص. الأمر >> الملف يقوم هذا النمط بتوجيه ناتج أمرٍ ما إلى ملفّ دون الكتابة فوق محتويات الملفّ الحالية. مثال: echo Written to a new file > data.txt echo Appended to an existing file's contents >> data.txt هذان الأمران سيقومان أولًا بالكتابة فوق محتويات data.txt، ومن ثمّ سيتم الكتابة أسفل المحتويات الحالية لملفّ data.txt بواسطة الأمر الثاني، محتويات الملفّ يجب أن تبدو هكذا: Written to a new file Appended to an existing file's contents الأمر 2>> الملف يقوم النمط السابق بتوجيه تدفّق خطأٍ معياري لأمرٍ ما إلى ملفّ دون الكتابة فوق محتوياته الحالية. هذا النمط مفيد لإنشاء ملفّّات السجل (log files) لبرنامجٍ أو خدمة، حيث أنّه لن يتم محو محتويات الملفّ السابقة في كلِّ مرةٍ يتم الكتابة فيها إلى الملفّ. find '' 2> stderr_log.txt wc '' 2>> stderr_log.txt يوجّه الأمر أعلاه رسالة الخطأ الصادرة عن معطىٍ خاطئ للأمر find إلى ملفٍّ يُدعى stderr_log.txt. ومن ثمّ يقوم بتوجيه رسالة الخطأ الصادرة عن استخدامٍ خاطئ للأمر wc إلى نفس الملفّ. الأمر | الأمر يقوم بتوجيه خَرْجِ الأمر الأول إلى دَخْلِ الأمر الثاني. find /var lib | grep deb هذا الأمر يبحث عبر مجلّد var/ ومجلّداته الفرعية عن الملفّات والامتدادات المُطابقة للسلسلة "deb"، ويُرجِع مسارات تلك الملفّات مع تمييز الجزء المطابق من أسماء تلك بالملفّات بالسلسلة المبحوث عنها. الأمر | tee الملف هذا النمط (والذي يتضمّن أمر tee) يقوم بتوجيه ناتج أمرٍ معيّن إلى ملفّ والكتابة فوق محتوياته ومن ثمّ يقوم بعرض الناتج المُوجّه بالطرفية. حيثُ ينشئ ملفًّّا جديدًا في حال كان الملفّ غير موجود. في سياق هذا النمط، يتم استخدام الأمر tee عادةً لعرض ناتج أمرٍ معين بينما يتمّ أيضًا حفظه إلى ملفّ. كمثال: wc /etc/magic | tee magic_count.txt هذا الأمر يقوم باستخدام الأنابيب لنقل عدد المحارف، السطور والكلمات في ملفّ etc/magic/ (الذي يتم استخدامه بواسطة صدفة لينكس لتحديد نوع الملفّّات) إلى الأمر tee، والذي بدوره يقوم بفصل ناتج الأمر wc إلى اتّجاهين، ويقوم بإرساله إلى شاشة الطرفية وملفّ magic_counts.txt. بالحديث عن الأمر tee، فتخيّل الحرف T، نهاية هذا الحرف هي البيانات الكاملة، وقمّة هذا الحرف هو البيانات عندما يتم فصلها إلى اتّجاهين (الإخراج المعياري لملفٍّ ما وشاشة الطرفية). أمر | أمر | أمر >> ملف يقوم هذا النمط بتوجيه ناتج الأمر الأوّل وترشيحه عبر الأمرين الثانيين. ومن ثمَّ يقوم بطباعة الناتج إلى ملفّ. مثال: ls ~ | grep *tar | tr e E >> ls_log.txt الخاتمة تعلّم كيفية استخدام قدرات إعادة التوجيه في لينكس عند التعامل مع الأوامر قد يكون شاقًا قليلًا، ولكنك في طريقك بالفعل لاحتراف هذه المهارات بعد إكمالك لهذا الدليل. الآن وبعد أن شاهدت أساسيات كيفية عمل إعادة التوجيه والأنابيب، فستكون قادرًا على بدء رحلتك إلى عالم برمجة سكربتات الشلّ، والذي يستخدم بشكلٍ شائع غالب البرامج والأنماط المُغطّاة في هذا الدليل. إذا كنتَ تحبّ الغوص أكثر في الأوامر التي قدّمناها في هذا الدليل، فيُمكنك ذلك باستخدام الأمر man command | less. كمثال: man tee | less هذا الأمر سيُريك قائمةً كاملة بالأوامر المتوفّرة لبرنامج tee. يمكنك استخدام هذا النمط لعرض المعلومات وخيارات الاستخدام لأيّ أمرٍ أو برنامج في نظام لينكس. ترجمة -وبتصرّف- للمقال: An Introduction to Linux I/O Redirection لصاحبه David Collazo.
×
×
  • أضف...