دليل أوامر لينكس الشامل: تعلم أساسيات Bash للمبتدئين
مرحبًا بك في دليل أوامر لينكس الشامل للمبتدئين! يهدف هذا الدليل، الذي أعده فلافيا كوبس، إلى تزويدك بالمعرفة الأساسية لـ 60 أمرًا من أوامر Bash الجوهرية التي لا غنى عنها لأي مطور. يتضمن كل أمر شروحات وافية، أمثلة عملية، ونصائح قيمة حول متى وكيف تستخدمه بفعالية.
نتبع في هذا الدليل “قاعدة 80/20″، حيث نركز على تعليمك 80% من المعلومات الأساسية التي ستحتاجها في 20% فقط من الوقت الذي تستغرقه في التعلم. يضمن هذا النهج حصولك على فهم شامل ومركز، دون الإغراق في التفاصيل غير الضرورية.
لا يهدف هذا الدليل إلى تغطية كل ما يتعلق بلينكس وأوامره. بل يركز على مجموعة صغيرة من الأوامر الأساسية التي ستستخدمها في 80% إلى 90% من وقتك، مع تبسيط استخدام الأوامر الأكثر تعقيدًا.
جميع الأوامر المذكورة هنا تعمل بسلاسة على أنظمة Linux و macOS و WSL (نظام ويندوز الفرعي للينكس)، وأي بيئة UNIX أخرى. نأمل أن يساعدك هذا الدليل في تحقيق هدفك: أن تصبح مرتاحًا ومتمكنًا في استخدام لينكس. يمكنك حفظ هذه الصفحة في متصفحك للرجوع إليها مستقبلاً، كما يمكنك تحميل هذا الدليل بصيغة PDF أو ePUB أو Mobi مجانًا. استمتع بالتعلم!
مقدمة إلى لينكس وواجهات الأوامر (Shells)
ما هو لينكس؟
لينكس هو نظام تشغيل، شأنه شأن macOS أو Windows. إنه أيضًا نظام التشغيل مفتوح المصدر الأكثر شعبية، ويوفر لك قدرًا كبيرًا من الحرية. يشغل لينكس الغالبية العظمى من الخوادم التي تشكل شبكة الإنترنت، وهو الأساس الذي بُني عليه كل شيء تقريبًا. ليس هذا فحسب، بل إن نظام Android مبني على نسخة معدلة من لينكس.
وُلد “نواة” لينكس (المعروفة باسم kernel) في عام 1991 في فنلندا، وقد قطع شوطًا طويلاً منذ بداياته المتواضعة. ثم أصبح نواة نظام التشغيل GNU، ليشكّل الثنائي GNU/Linux.
هناك شيء واحد يميز لينكس لا تستطيع شركات مثل Microsoft و Apple و Google تقديمه أبدًا: حرية فعل ما تريد بجهاز الكمبيوتر الخاص بك. بل إن هذه الشركات تتجه في الاتجاه المعاكس، حيث تبني “حدائق مغلقة”، خاصة على جانب الأجهزة المحمولة. لينكس هو قمة الحرية.
يتم تطوير لينكس بواسطة متطوعين، بعضهم يتقاضى أجورًا من شركات تعتمد عليه، وبعضهم يعمل بشكل مستقل. ولكن لا توجد شركة تجارية واحدة يمكنها أن تملي ما يجب أن يتضمنه لينكس، أو تحدد أولويات المشروع.
يمكنك أيضًا استخدام لينكس كجهاز كمبيوتر يومي. أستخدم macOS لأنني أستمتع حقًا بالتطبيقات والتصميم (وكنت في السابق مطورًا لتطبيقات iOS و Mac). ولكن قبل استخدام macOS، كنت أستخدم لينكس كنظام تشغيل رئيسي لجهازي. لا أحد يستطيع أن يملي عليك التطبيقات التي يمكنك تشغيلها، أو “الاتصال بالمنزل” بتطبيقات تتتبعك وموقعك والمزيد.
لينكس مميز أيضًا لأنه ليس هناك “لينكس واحد” فقط، كما هو الحال مع Windows أو macOS. بدلاً من ذلك، لدينا distributions (توزيعات). يتم إنشاء “توزيعة” بواسطة شركة أو منظمة وتقوم بتجميع نواة لينكس مع برامج وأدوات إضافية. على سبيل المثال، لديك Debian و Red Hat و Ubuntu، وهي على الأرجح التوزيعات الأكثر شعبية. ولكن هناك الكثير والكثير غيرها. يمكنك أيضًا إنشاء توزيعتك الخاصة. ولكن على الأرجح ستستخدم واحدة شعبية لديها الكثير من المستخدمين ومجتمع من الأشخاص حولها. يتيح لك هذا القيام بما تحتاج إليه دون إضاعة الكثير من الوقت في إعادة اختراع العجلة وإيجاد حلول للمشكلات الشائعة.
تأتي بعض أجهزة الكمبيوتر المكتبية والمحمولة مثبتة مسبقًا بنظام لينكس. أو يمكنك تثبيته على جهاز الكمبيوتر الذي يعمل بنظام Windows، أو على جهاز Mac. ولكن لا تحتاج إلى تعطيل جهاز الكمبيوتر الحالي الخاص بك لمجرد الحصول على فكرة عن كيفية عمل لينكس. أنا لا أمتلك جهاز كمبيوتر يعمل بنظام لينكس. إذا كنت تستخدم جهاز Mac، فكل ما عليك معرفته هو أن macOS هو نظام تشغيل UNIX تحت الغطاء. وهو يتشارك الكثير من الأفكار والبرامج نفسها التي يستخدمها نظام GNU/Linux، لأن GNU/Linux هو بديل مجاني لـ UNIX.
UNIX هو مصطلح شامل يجمع العديد من أنظمة التشغيل المستخدمة في الشركات والمؤسسات الكبيرة، بدءًا من السبعينيات. تمنحك محطة macOS الطرفية إمكانية الوصول إلى نفس الأوامر تمامًا التي سأصفها في بقية هذا الدليل.
لدى Microsoft نظام Windows Subsystem for Linux (نظام ويندوز الفرعي للينكس) الرسمي الذي يمكنك (ويجب عليك!) تثبيته على Windows. سيعطيك هذا القدرة على تشغيل لينكس بطريقة سهلة جدًا على جهاز الكمبيوتر الخاص بك. ولكن في الغالبية العظمى من الأحيان، ستقوم بتشغيل جهاز كمبيوتر يعمل بنظام لينكس في السحابة عبر خادم افتراضي خاص VPS (Virtual Private Server) مثل DigitalOcean.
ما هي واجهة أوامر لينكس (Linux Shell)؟
واجهة الأوامر shell هي مترجم أوامر يوفر واجهة للمستخدم للتعامل مع نظام التشغيل الأساسي. تتيح لك تنفيذ العمليات باستخدام النصوص والأوامر، وتوفر للمستخدمين ميزات متقدمة مثل القدرة على إنشاء السكريبتات.
هذا أمر مهم: تتيح لك واجهات الأوامر أداء المهام بطريقة أكثر تحسينًا مما يمكن أن تتيحه واجهة المستخدم الرسومية GUI (Graphical User Interface) على الإطلاق. يمكن لأدوات سطر الأوامر أن تقدم العديد من خيارات التكوين المختلفة دون أن تكون معقدة للغاية في الاستخدام.
هناك أنواع مختلفة عديدة من واجهات الأوامر. يركز هذا المقال على واجهات أوامر Unix، وهي تلك التي ستجدها عادةً على أجهزة لينكس و macOS. تم إنشاء العديد من أنواع واجهات الأوامر المختلفة لهذه الأنظمة بمرور الوقت، وتهيمن بعضها على الساحة: Bash و Csh و Zsh و Fish وغيرها الكثير!
جميع واجهات الأوامر تنبع من Bourne Shell، والتي تسمى sh. “Bourne” لأن مبتكرها كان ستيف بورن. Bash تعني Bourne-again shell. كان sh ملكيًا وغير مفتوح المصدر، وتم إنشاء Bash في عام 1989 لإنشاء بديل مجاني لمشروع GNU ومؤسسة البرمجيات الحرة. نظرًا لأن المشاريع كانت تدفع لاستخدام Bourne shell، أصبح Bash شائعًا جدًا.
إذا كنت تستخدم جهاز Mac، حاول فتح محطة Mac الطرفية الخاصة بك. بشكل افتراضي، يقوم بتشغيل ZSH (أو، قبل Catalina، Bash). يمكنك إعداد نظامك لتشغيل أي نوع من واجهات الأوامر – على سبيل المثال، أستخدم Fish shell.
كل واجهة أوامر لها ميزاتها الفريدة واستخداماتها المتقدمة، ولكنها جميعًا تتشارك وظيفة مشتركة: يمكنها السماح لك بتنفيذ البرامج، ويمكن برمجتها. في بقية هذا الدليل، سنرى بالتفصيل الأوامر الأكثر شيوعًا التي ستستخدمها.
أمر Linux man: دليلك الشامل للأوامر
يُعد أمر man (اختصارًا لكلمة manual، أي دليل) نقطة البداية المثالية لفهم جميع أوامر لينكس الأخرى. في كل مرة تحتاج فيها إلى معرفة كيفية استخدام أمر معين، يمكنك ببساطة كتابة man <command> للحصول على دليله التفصيلي:
man <command>

صفحات man هي أداة أساسية لأي مطور، فهي تحتوي على كمية هائلة من المعلومات قد تبدو أحيانًا مفرطة. على سبيل المثال، لقطة الشاشة أعلاه هي جزء واحد فقط من 14 شاشة شرح لأمر ls.
في كثير من الأحيان، عندما أحتاج إلى فهم أمر بسرعة، أستخدم موقع tldr pages. وهو أمر يمكنك تثبيته وتشغيله بالشكل التالي: tldr <command>. يوفر هذا الأمر نظرة عامة سريعة جدًا على الأمر، مع أمثلة عملية لسيناريوهات الاستخدام الشائعة:
tldr <command>

هذه الأداة ليست بديلاً لـ man، بل هي وسيلة مساعدة لتجنب الضياع في الكم الهائل من المعلومات الموجودة في صفحة man. بعد الحصول على نظرة عامة سريعة، يمكنك العودة إلى صفحة man لاستكشاف جميع الخيارات والمعاملات المختلفة التي يمكنك استخدامها مع الأمر.
أمر Linux ls: عرض محتويات الدلائل
داخل أي مجلد، يمكنك سرد جميع الملفات التي يحتويها باستخدام أمر ls:
ls
إذا أضفت اسم مجلد أو مسار، فسيعرض محتويات ذلك المجلد:
ls /bin

يقبل أمر ls العديد من الخيارات. إحدى مجموعاتي المفضلة هي -al. جربها:
ls -al /bin

مقارنة بأمر ls العادي، يعرض هذا الأمر معلومات أكثر بكثير. لديك، من اليسار إلى اليمين:
- أذونات الملف (وإذا كان نظامك يدعم
ACLs، فستحصل أيضًا على علامةACL) - عدد الروابط إلى ذلك الملف
- مالك الملف
- مجموعة الملف
- حجم الملف بالبايت
- تاريخ ووقت آخر تعديل للملف
- اسم الملف
يتم إنشاء هذه المجموعة من البيانات بواسطة الخيار l. أما الخيار a فيعرض أيضًا الملفات المخفية. الملفات المخفية هي الملفات التي تبدأ بنقطة (.).
أمر Linux cd: التنقل بين الدلائل
بمجرد أن يكون لديك مجلد، يمكنك الانتقال إليه باستخدام أمر cd. cd تعني change directory (تغيير الدليل). يمكنك استدعاؤه بتحديد مجلد للانتقال إليه. يمكنك تحديد اسم مجلد، أو مسار كامل. مثال:
mkdir fruits
cd fruits
الآن أنت في مجلد fruits. يمكنك استخدام المسار الخاص .. للإشارة إلى المجلد الأصل:
cd .. #العودة إلى المجلد الرئيسي
يشير الحرف # إلى بداية التعليق، الذي يستمر لبقية السطر بعد العثور عليه. يمكنك استخدامه لتكوين مسار:
mkdir fruits
mkdir cars
cd fruits
cd ../cars
هناك مؤشر مسار خاص آخر وهو .، ويشير إلى المجلد الحالي. يمكنك أيضًا استخدام المسارات المطلقة، التي تبدأ من المجلد الجذر /:
cd /etc
أمر Linux pwd: معرفة موقعك الحالي
كلما شعرت بالضياع في نظام الملفات، استخدم أمر pwd لمعرفة مكانك:
pwd
سيعرض مسار المجلد الحالي.
أمر Linux mkdir: إنشاء مجلدات جديدة
يمكنك إنشاء مجلدات باستخدام أمر mkdir:
mkdir fruits
يمكنك إنشاء مجلدات متعددة بأمر واحد:
mkdir dogs cars
يمكنك أيضًا إنشاء مجلدات متداخلة متعددة بإضافة الخيار -p:
mkdir -p fruits/apples
تتخذ الخيارات في أوامر UNIX عادة هذا الشكل. تضيفها مباشرة بعد اسم الأمر، وتغير كيفية سلوك الأمر. يمكنك غالبًا دمج خيارات متعددة أيضًا. يمكنك معرفة الخيارات التي يدعمها الأمر بكتابة man <commandname>. جرب الآن مع man mkdir على سبيل المثال (اضغط على المفتاح q للخروج من صفحة man). صفحات man هي المساعدة المدمجة الرائعة لـ UNIX.
أمر Linux rmdir: حذف مجلدات فارغة
كما يمكنك إنشاء مجلد باستخدام mkdir، يمكنك حذف مجلد باستخدام rmdir:
mkdir fruits
rmdir fruits
يمكنك أيضًا حذف مجلدات متعددة دفعة واحدة:
mkdir fruits cars
rmdir fruits cars
يجب أن يكون المجلد الذي تحذفه فارغًا. لحذف المجلدات التي تحتوي على ملفات، سنستخدم الأمر الأكثر عمومية rm الذي يحذف الملفات والمجلدات، باستخدام الخيار -rf:
rm -rf fruits cars
تحذير: كن حذرًا للغاية عند استخدام هذا الأمر، فهو لا يطلب تأكيدًا وسيقوم بإزالة أي شيء تطلبه فورًا دون نقله إلى سلة المهملات. استعادة الملفات المحذوفة بهذه الطريقة قد يكون صعبًا للغاية.
أمر Linux mv: نقل وإعادة تسمية الملفات
بمجرد أن يكون لديك ملف، يمكنك نقله باستخدام أمر mv. تحدد المسار الحالي للملف، ومساره الجديد:
touch test
mv pear new_pear
تم نقل ملف pear الآن إلى new_pear. هذه هي الطريقة التي تعيد بها تسمية الملفات والمجلدات. إذا كانت المعلمة الأخيرة هي مجلد، فسيتم نقل الملف الموجود في مسار المعلمة الأولى إلى ذلك المجلد. في هذه الحالة، يمكنك تحديد قائمة بالملفات وسيتم نقلها جميعًا إلى مسار المجلد المحدد بالمعلمة الأخيرة:
touch pear
touch apple
mkdir fruits
mv pear apple fruits #تم نقل pear و apple إلى مجلد fruits
أمر Linux cp: نسخ الملفات والدلائل
يمكنك نسخ ملف باستخدام أمر cp:
touch test
cp apple another_apple
لنسخ المجلدات، تحتاج إلى إضافة الخيار -r لنسخ محتويات المجلد بالكامل بشكل متكرر:
mkdir fruits
cp -r fruits cars
أمر Linux open: فتح الملفات والتطبيقات
يتيح لك أمر open فتح ملف باستخدام هذا التركيب:
open <filename>
يمكنك أيضًا فتح دليل، والذي يقوم في نظام macOS بفتح تطبيق Finder مع الدليل الحالي:
open <directory name>
أستخدمه طوال الوقت لفتح الدليل الحالي:
open .
يرمز الرمز الخاص . إلى الدليل الحالي، بينما يرمز .. إلى الدليل الأصل. يمكن استخدام نفس الأمر أيضًا لتشغيل تطبيق:
open <application name>
أمر Linux touch: إنشاء ملفات فارغة وتحديث الطوابع الزمنية
يمكنك إنشاء ملف فارغ باستخدام أمر touch:
touch apple
إذا كان الملف موجودًا بالفعل، فإنه يفتح الملف في وضع الكتابة، ويتم تحديث الطابع الزمني للملف.
أمر Linux find: البحث عن الملفات والدلائل
يمكن استخدام أمر find للبحث عن ملفات أو مجلدات تتطابق مع نمط بحث معين. يبحث بشكل متكرر. دعنا نتعلم كيفية استخدامه بالأمثلة.
ابحث عن جميع الملفات تحت الشجرة الحالية التي لها امتداد .js واطبع المسار النسبي لكل ملف يتطابق:
find . -name '*.js'
من المهم استخدام علامات الاقتباس حول الأحرف الخاصة مثل * لتجنب تفسير الواجهة لها.
ابحث عن الدلائل تحت الشجرة الحالية التي تتطابق مع الاسم “src“:
find . -type d -name src
استخدم -type f للبحث عن الملفات فقط، أو -type l للبحث عن الروابط الرمزية فقط. -name حساس لحالة الأحرف. استخدم -iname لإجراء بحث غير حساس لحالة الأحرف.
يمكنك البحث تحت أشجار جذر متعددة:
find folder1 folder2 -name filename.txt
ابحث عن الدلائل تحت الشجرة الحالية التي تتطابق مع الاسم “node_modules” أو “public“:
find . -type d -name node_modules -or -name public
يمكنك أيضًا استبعاد مسار باستخدام -not -path:
find . -type d -name '*.md' -not -path 'node_modules/*'
يمكنك البحث عن الملفات التي تحتوي على أكثر من 100 حرف (بايت) فيها:
find . -type f -size +100c
ابحث عن الملفات الأكبر من 100 كيلوبايت ولكن الأصغر من 1 ميغابايت:
find . -type f -size +100k -size -1M
ابحث عن الملفات التي تم تعديلها قبل أكثر من 3 أيام:
find . -type f -mtime +3
ابحث عن الملفات التي تم تعديلها في آخر 24 ساعة:
find . -type f -mtime -1
يمكنك حذف جميع الملفات التي تتطابق مع بحث بإضافة الخيار -delete. هذا يحذف جميع الملفات التي تم تعديلها في آخر 24 ساعة:
find . -type f -mtime -1 -delete
يمكنك تنفيذ أمر على كل نتيجة من نتائج البحث. في هذا المثال، نقوم بتشغيل cat لطباعة محتوى الملف:
find . -type f -exec cat {} \;
لاحظ الرمز \; الذي ينهي الأمر. يتم ملء {} باسم الملف وقت التنفيذ.
أمر Linux ln: إنشاء الروابط (Links)
أمر ln هو جزء من أوامر نظام ملفات لينكس. يستخدم لإنشاء الروابط. ما هو الرابط؟ إنه يشبه مؤشرًا لملف آخر، أو ملفًا يشير إلى ملف آخر. قد تكون على دراية باختصارات Windows. إنها متشابهة.
لدينا نوعان من الروابط: الروابط الصلبة (hard links) والروابط الرمزية (soft links).
الروابط الصلبة (Hard links)
نادرًا ما تستخدم الروابط الصلبة. لديها بعض القيود: لا يمكنك الربط بالدلائل، ولا يمكنك الربط بأنظمة ملفات خارجية (أقراص). يتم إنشاء الرابط الصلب باستخدام التركيب التالي:
ln <original> <link>
على سبيل المثال، لنفترض أن لديك ملفًا يسمى recipes.txt. يمكنك إنشاء رابط صلب له باستخدام:
ln recipes.txt newrecipes.txt
الرابط الصلب الجديد الذي أنشأته لا يمكن تمييزه عن الملف العادي:

الآن في أي وقت تقوم فيه بتحرير أي من هذه الملفات، سيتم تحديث المحتوى لكلاهما. إذا حذفت الملف الأصلي، فسيظل الرابط يحتوي على محتوى الملف الأصلي، حيث لا يتم إزالته حتى لا يبقى أي رابط صلب يشير إليه.

الروابط الرمزية (Soft links)
تختلف الروابط الرمزية. إنها أكثر قوة حيث يمكنك الربط بأنظمة ملفات أخرى وبالدلائل. ولكن تذكر أنه عند إزالة الملف الأصلي، سينكسر الرابط. يمكنك إنشاء الروابط الرمزية باستخدام الخيار -s من أمر ln:
ln -s <original> <link>
على سبيل المثال، لنفترض أن لديك ملفًا يسمى recipes.txt. يمكنك إنشاء رابط رمزي له باستخدام:
ln -s recipes.txt newrecipes.txt
في هذه الحالة، يمكنك رؤية وجود علامة l خاصة عند سرد الملف باستخدام ls -al. ينتهي اسم الملف بعلامة @، ويتم تلوينه أيضًا بشكل مختلف إذا كانت لديك الألوان ممكّنة:

الآن إذا حذفت الملف الأصلي، فستنكسر الروابط، وستخبرك الواجهة “No such file or directory” إذا حاولت الوصول إليه:

أمر Linux gzip: ضغط الملفات
يمكنك ضغط ملف باستخدام بروتوكول الضغط gzip المسمى LZ77 باستخدام أمر gzip. إليك أبسط استخدام:
gzip filename
سيؤدي هذا إلى ضغط الملف، وإضافة امتداد .gz إليه. يتم حذف الملف الأصلي. لمنع ذلك، يمكنك استخدام الخيار -c واستخدام إعادة توجيه الإخراج لكتابة الإخراج إلى ملف filename.gz:
gzip -c filename > filename.gz
يحدد الخيار -c أن الإخراج سيذهب إلى تيار الإخراج القياسي، مع ترك الملف الأصلي سليمًا. أو يمكنك استخدام الخيار -k:
gzip -k filename
هناك مستويات مختلفة من الضغط. كلما زاد الضغط، كلما استغرق وقتًا أطول للضغط (وفك الضغط). تتراوح المستويات من 1 (الأسرع، أسوأ ضغط) إلى 9 (الأبطأ، أفضل ضغط)، والقيمة الافتراضية هي 6. يمكنك اختيار مستوى معين باستخدام الخيار -<NUMBER>:
gzip -1 filename
يمكنك ضغط ملفات متعددة عن طريق إدراجها:
gzip filename1 filename2
يمكنك ضغط جميع الملفات في دليل، بشكل متكرر، باستخدام الخيار -r:
gzip -r a_folder
يعرض الخيار -v معلومات نسبة الضغط. إليك مثال على استخدامه مع الخيار -k (للحفاظ على الملف الأصلي):

يمكن أيضًا استخدام gzip لفك ضغط ملف، باستخدام الخيار -d:
gzip -d filename.gz
أمر Linux gunzip: فك ضغط الملفات
أمر gunzip مكافئ بشكل أساسي لأمر gzip، باستثناء أن الخيار -d ممكّن دائمًا بشكل افتراضي. يمكن استدعاء الأمر بهذه الطريقة:
gunzip filename.gz
سيؤدي هذا إلى فك ضغط الملف وإزالة امتداد .gz، ووضع النتيجة في ملف filename. إذا كان هذا الملف موجودًا، فسوف يقوم بالكتابة فوقه. يمكنك الاستخراج إلى اسم ملف مختلف باستخدام إعادة توجيه الإخراج باستخدام الخيار -c:
gunzip -c filename.gz > anotherfilename
أمر Linux tar: إنشاء واستخراج الأرشيفات
يستخدم أمر tar لإنشاء أرشيف، يجمع ملفات متعددة في ملف واحد. يأتي اسمه من الماضي ويعني tape archive (أرشيف الشريط، عندما كانت الأرشيفات تخزن على الأشرطة). ينشئ هذا الأمر أرشيفًا باسم archive.tar بمحتوى file1 و file2:
tar -cf archive.tar file1 file2
يرمز الخيار c إلى create (إنشاء). يستخدم الخيار f للكتابة إلى ملف الأرشيف. لاستخراج الملفات من أرشيف في المجلد الحالي، استخدم:
tar -xf archive.tar
يرمز الخيار x إلى extract (استخراج). ولاستخراجها إلى دليل معين، استخدم:
tar -xf archive.tar -C directory
يمكنك أيضًا فقط سرد الملفات الموجودة في أرشيف:

يستخدم tar غالبًا لإنشاء أرشيف مضغوط، وذلك بضغط الأرشيف باستخدام gzip. يتم ذلك باستخدام الخيار z:
tar -czf archive.tar.gz file1 file2
هذا يشبه تمامًا إنشاء أرشيف tar، ثم تشغيل gzip عليه. لفك ضغط أرشيف مضغوط بـ gzip، يمكنك استخدام gunzip، أو gzip -d، ثم فك أرشفته. ولكن tar -xf سيتعرف على أنه أرشيف مضغوط بـ gzip، وسيقوم بذلك نيابة عنك:
tar -xf archive.tar.gz
أمر Linux alias: إنشاء اختصارات للأوامر
من الشائع دائمًا تشغيل برنامج بمجموعة من الخيارات التي تفضلها. على سبيل المثال، خذ أمر ls. بشكل افتراضي، يعرض معلومات قليلة جدًا:

ولكن إذا استخدمت الخيار -al، فسيعرض شيئًا أكثر فائدة، بما في ذلك تاريخ تعديل الملف، وحجمه، ومالكه، وأذوناته. سيسرد أيضًا الملفات المخفية (الملفات التي تبدأ بـ .):

يمكنك إنشاء أمر جديد، على سبيل المثال، أحب أن أسميه ll، وهو اسم مستعار لـ ls -al. تفعل ذلك بهذه الطريقة:
alias ll='ls -al'
بمجرد القيام بذلك، يمكنك استدعاء ll تمامًا كما لو كان أمر UNIX عاديًا:

الآن، استدعاء alias بدون أي خيار سيسرد الأسماء المستعارة المعرفة:

سيعمل الاسم المستعار حتى يتم إغلاق جلسة الطرفية. لجعله دائمًا، تحتاج إلى إضافته إلى تكوين الواجهة. قد يكون هذا ~/.bashrc أو ~/.profile أو ~/.bash_profile إذا كنت تستخدم واجهة Bash، اعتمادًا على حالة الاستخدام.
كن حذرًا مع علامات الاقتباس إذا كانت لديك متغيرات في الأمر: إذا استخدمت علامات اقتباس مزدوجة، يتم حل المتغير وقت التعريف. إذا استخدمت علامات اقتباس مفردة، يتم حلها وقت الاستدعاء. هذان مختلفان:
alias lsthis="ls $PWD"
alias lscurrent='ls $PWD'
يشير $PWD إلى المجلد الحالي الذي توجد فيه الواجهة. إذا انتقلت الآن إلى مجلد جديد، فإن lscurrent يسرد الملفات في المجلد الجديد، بينما لا يزال lsthis يسرد الملفات في المجلد الذي كنت فيه عندما قمت بتعريف الاسم المستعار.
أمر Linux cat: عرض ودمج الملفات
على غرار أمر tail بطرق معينة، لدينا أمر cat. ولكن cat يمكنه أيضًا إضافة محتوى إلى ملف، وهذا يجعله قويًا للغاية. في أبسط استخداماته، يطبع cat محتوى الملف إلى الإخراج القياسي:
cat file
يمكنك طباعة محتوى ملفات متعددة:
cat file1 file2
باستخدام عامل إعادة توجيه الإخراج >، يمكنك دمج محتوى ملفات متعددة في ملف جديد:
cat file1 file2 > file3
باستخدام >>، يمكنك إلحاق محتوى ملفات متعددة بملف جديد، وإنشائه إذا لم يكن موجودًا:
cat file1 file2 >> file3
عندما تنظر إلى ملفات التعليمات البرمجية المصدر، من المفيد رؤية أرقام الأسطر. يمكنك جعل cat يطبعها باستخدام الخيار -n:
cat -n file1
يمكنك فقط إضافة رقم إلى الأسطر غير الفارغة باستخدام -b، أو يمكنك أيضًا إزالة جميع الأسطر الفارغة المتعددة باستخدام -s. غالبًا ما يستخدم cat بالاشتراك مع عامل الأنبوب | لتغذية محتوى الملف كمدخل لأمر آخر: cat file1 | anothercommand.
أمر Linux less: استعراض الملفات الكبيرة
أمر less هو أمر أستخدمه كثيرًا. يعرض لك المحتوى المخزن داخل ملف، في واجهة مستخدم جميلة وتفاعلية. الاستخدام: less <filename>.

بمجرد أن تكون داخل جلسة less، يمكنك الخروج بالضغط على المفتاح q. يمكنك التنقل في محتويات الملف باستخدام مفتاحي up و down، أو باستخدام مفتاح space bar و b للتنقل صفحة بصفحة. يمكنك أيضًا القفز إلى نهاية الملف بالضغط على G والعودة إلى البداية بالضغط على g.
يمكنك البحث عن محتويات داخل الملف بالضغط على / وكتابة كلمة للبحث. هذا يبحث إلى الأمام. يمكنك البحث إلى الخلف باستخدام الرمز ? وكتابة كلمة. هذا الأمر يعرض فقط محتوى الملف. يمكنك فتح محرر مباشرة بالضغط على v. سيستخدم محرر النظام، والذي يكون في معظم الحالات vim.
الضغط على المفتاح F يدخل وضع المتابعة (follow mode)، أو وضع المراقبة (watch mode). عندما يتم تغيير الملف بواسطة شخص آخر، مثل من برنامج آخر، يمكنك رؤية التغييرات مباشرة. هذا لا يحدث بشكل افتراضي، وترى فقط نسخة الملف في الوقت الذي فتحته فيه. تحتاج إلى الضغط على Ctrl-C للخروج من هذا الوضع. في هذه الحالة، يكون السلوك مشابهًا لتشغيل الأمر tail -f <filename>.
يمكنك فتح ملفات متعددة، والتنقل بينها باستخدام :n (للانتقال إلى الملف التالي) و :p (للانتقال إلى الملف السابق).
أمر Linux tail: عرض نهاية الملفات ومراقبتها
أفضل استخدام لأمر tail في رأيي هو عندما يتم استدعاؤه مع الخيار -f. يفتح الملف من نهايته، ويراقب التغييرات في الملف. في أي وقت يكون هناك محتوى جديد في الملف، يتم طباعته في النافذة. هذا رائع لمراقبة ملفات السجل، على سبيل المثال:
tail -f /var/log/system.log
للخروج، اضغط على Ctrl-C.
يمكنك طباعة آخر 10 أسطر في ملف:
tail -n 10 <filename>
يمكنك طباعة محتوى الملف بالكامل بدءًا من سطر معين باستخدام + قبل رقم السطر:
tail -n +10 <filename>
يمكن لأمر tail أن يفعل أكثر من ذلك بكثير، وكما هو الحال دائمًا، نصيحتي هي التحقق من man tail.
أمر Linux wc: عد الكلمات، الأسطر، والبايتات
يمنحنا أمر wc معلومات مفيدة حول ملف أو مدخلات يتلقاها عبر الأنابيب.
echo test >> test.txt
wc test.txt
1 1 5 test.txt
مثال عبر الأنابيب، يمكننا عد إخراج تشغيل أمر ls -al:
ls -al | wc
6 47 284
العمود الأول الذي يتم إرجاعه هو عدد الأسطر. الثاني هو عدد الكلمات. الثالث هو عدد البايتات. يمكننا أن نطلب منه عد الأسطر فقط:
wc -l test.txt
أو الكلمات فقط:
wc -w test.txt
أو البايتات فقط:
wc -c test.txt
تتساوى البايتات في مجموعات أحرف ASCII مع الأحرف. ولكن مع مجموعات الأحرف غير ASCII، قد يختلف عدد الأحرف لأن بعض الأحرف قد تستغرق بايتات متعددة (على سبيل المثال، يحدث هذا في Unicode). في هذه الحالة، سيساعدك الخيار -m في الحصول على القيمة الصحيحة:
wc -m test.txt
أمر Linux grep: البحث عن النصوص باستخدام التعبيرات المنتظمة
أمر grep هو أداة مفيدة جدًا. عندما تتقنه، سيساعدك بشكل كبير في عملك اليومي في البرمجة. إذا كنت تتساءل، فإن grep تعني global regular expression print (طباعة التعبير المنتظم العام). يمكنك استخدام grep للبحث في الملفات، أو دمجه مع الأنابيب لتصفية إخراج أمر آخر.
على سبيل المثال، إليك كيفية العثور على تكرارات السطر document.getElementById في ملف index.md:
grep document.getElementById index.md

باستخدام الخيار -n، سيعرض أرقام الأسطر:
grep -n document.getElementById index.md

شيء مفيد جدًا هو أن تطلب من grep طباعة سطرين قبل وسطرين بعد السطر المطابق لمنحك المزيد من السياق. يتم ذلك باستخدام الخيار -C، الذي يقبل عددًا من الأسطر:
grep -nC 2 document.getElementById index.md

البحث حساس لحالة الأحرف بشكل افتراضي. استخدم الخيار -i لجعله غير حساس لحالة الأحرف. كما ذكرنا، يمكنك استخدام grep لتصفية إخراج أمر آخر. يمكننا تكرار نفس الوظيفة المذكورة أعلاه باستخدام:
less index.md | grep -n document.getElementById

يمكن أن تكون سلسلة البحث تعبيرًا منتظمًا، وهذا يجعل grep قويًا جدًا. شيء آخر قد تجده مفيدًا جدًا هو عكس النتيجة، واستبعاد الأسطر التي تتطابق مع سلسلة معينة، باستخدام الخيار -v:

أمر Linux sort: فرز الأسطر في الملفات
لنفترض أن لديك ملفًا نصيًا يحتوي على أسماء كلاب:

هذه القائمة غير مرتبة. يساعدك أمر sort في فرزها حسب الاسم:

استخدم الخيار r لعكس الترتيب:

الفرز افتراضيًا حساس لحالة الأحرف، وأبجدي. استخدم الخيار --ignore-case للفرز غير الحساس لحالة الأحرف، والخيار -n للفرز باستخدام ترتيب رقمي.
إذا كان الملف يحتوي على أسطر مكررة:

يمكنك استخدام الخيار -u لإزالتها:

لا يعمل sort على الملفات فقط، كما تفعل العديد من أوامر UNIX – بل يعمل أيضًا مع الأنابيب. لذا يمكنك استخدامه على إخراج أمر آخر. على سبيل المثال، يمكنك ترتيب الملفات التي يعرضها ls باستخدام:
ls | sort
أمر sort قوي جدًا ولديه الكثير من الخيارات الأخرى، والتي يمكنك استكشافها عن طريق استدعاء man sort.

أمر Linux uniq: إزالة وعرض الأسطر الفريدة أو المكررة
uniq هو أمر يساعدك في فرز أسطر النص. يمكنك الحصول على هذه الأسطر من ملف، أو باستخدام الأنابيب من إخراج أمر آخر:
uniq dogs.txt
ls | uniq
تحتاج إلى مراعاة هذا الأمر الأساسي: سيكتشف uniq فقط الأسطر المكررة المتجاورة. هذا يعني أنك على الأرجح ستستخدمه مع sort:
sort dogs.txt | uniq
يحتوي أمر sort على طريقته الخاصة لإزالة التكرارات باستخدام الخيار -u (unique). ولكن uniq لديه قوة أكبر. بشكل افتراضي، يزيل الأسطر المكررة:

يمكنك أن تطلب منه عرض الأسطر المكررة فقط، على سبيل المثال، باستخدام الخيار -d:
sort dogs.txt | uniq -d

يمكنك استخدام الخيار -u لعرض الأسطر غير المكررة فقط:

يمكنك عد تكرارات كل سطر باستخدام الخيار -c:

استخدم التركيبة الخاصة:
sort dogs.txt | uniq -c | sort -nr
لفرز تلك الأسطر حسب الأكثر تكرارًا:

أمر Linux diff: مقارنة الملفات والدلائل
diff هو أمر مفيد. لنفترض أن لديك ملفين يحتويان على نفس المعلومات تقريبًا، ولكن لا يمكنك العثور على الفرق بينهما. سيعالج diff الملفين وسيخبرك بالفرق. لنفترض أن لديك ملفين: dogs.txt و moredogs.txt. الفرق هو أن moredogs.txt يحتوي على اسم كلب إضافي واحد:

diff dogs.txt moredogs.txt سيخبرك أن الملف الثاني يحتوي على سطر إضافي واحد، السطر 3 مع السطر Vanille:

إذا عكست ترتيب الملفات، فسيخبرك أن الملف الثاني يفتقد السطر 3، الذي محتواه Vanille:

باستخدام الخيار -y، سيقارن الملفين سطرًا بسطر:

الخيار -u سيكون أكثر دراية لك، لأنه نفس الخيار المستخدم بواسطة نظام التحكم في الإصدار Git لعرض الاختلافات بين الإصدارات:

مقارنة الدلائل تعمل بنفس الطريقة. يجب عليك استخدام الخيار -r للمقارنة بشكل متكرر (الدخول إلى الدلائل الفرعية):

في حال كنت مهتمًا بالملفات التي تختلف، بدلاً من المحتوى، استخدم الخيارين r و q:

هناك العديد من الخيارات الأخرى التي يمكنك استكشافها في صفحة الدليل عن طريق تشغيل man diff:

أمر Linux echo: طباعة النصوص والمتغيرات
يقوم أمر echo بمهمة بسيطة واحدة: يطبع إلى الإخراج الوسيطة التي تم تمريرها إليه. هذا المثال:
echo "hello"
سيقوم بطباعة hello إلى الطرفية. يمكننا إلحاق الإخراج بملف:
echo "hello" >> output.txt
يمكننا استيفاء متغيرات البيئة:
echo "The path variable is $PATH"

احذر أن الأحرف الخاصة تحتاج إلى الهروب باستخدام شرطة مائلة عكسية \. $ على سبيل المثال:

هذه مجرد البداية. يمكننا القيام ببعض الأشياء الرائعة عندما يتعلق الأمر بالتفاعل مع ميزات الواجهة. يمكننا عرض الملفات في المجلد الحالي:
echo *
يمكننا عرض الملفات في المجلد الحالي التي تبدأ بالحرف o:
echo o*
يمكن استخدام أي أمر وميزة صالحة في Bash (أو أي واجهة تستخدمها) هنا. يمكنك طباعة مسار مجلدك الرئيسي:
echo ~

يمكنك أيضًا تنفيذ الأوامر، وطباعة النتيجة إلى الإخراج القياسي (أو إلى ملف، كما رأيت):
echo $(ls -al)

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

يمكنك إنشاء قائمة من السلاسل، على سبيل المثال نطاقات:
echo {1..5}

أمر Linux chown: تغيير مالك الملفات والمجموعات
كل ملف/دليل في نظام تشغيل مثل لينكس أو macOS (وكل نظام UNIX بشكل عام) له مالك. يمكن لمالك الملف فعل كل شيء به. يمكنه تحديد مصير ذلك الملف. يمكن للمالك (والمستخدم root) تغيير المالك إلى مستخدم آخر أيضًا، باستخدام أمر chown:
chown <owner> <file>
مثل هذا:
chown flavio test.txt
على سبيل المثال، إذا كان لديك ملف يملكه root، فلا يمكنك الكتابة فيه كمستخدم آخر:

يمكنك استخدام chown لنقل الملكية إليك:

من الشائع جدًا أن تحتاج إلى تغيير ملكية دليل، وجميع الملفات الموجودة فيه بشكل متكرر، بالإضافة إلى جميع الدلائل الفرعية والملفات الموجودة فيها أيضًا. يمكنك القيام بذلك باستخدام الخيار -R:
chown -R <owner> <file>
لا تمتلك الملفات/الدلائل مالكًا فقط، بل تمتلك أيضًا مجموعة. من خلال هذا الأمر، يمكنك تغيير ذلك في نفس الوقت الذي تغير فيه المالك:
chown <owner>:<group> <file>
مثال:
chown flavio:users test.txt
يمكنك أيضًا تغيير مجموعة ملف فقط باستخدام أمر chgrp:
chgrp <group> <filename>
أمر Linux chmod: إدارة أذونات الملفات
كل ملف في أنظمة تشغيل لينكس / macOS (وأنظمة UNIX بشكل عام) لديه 3 أذونات: القراءة (read)، الكتابة (write)، والتنفيذ (execute). ادخل إلى مجلد، وقم بتشغيل أمر ls -al.

السلاسل الغريبة التي تراها في كل سطر ملف، مثل drwxr-xr-x، تحدد أذونات الملف أو المجلد. دعنا نحللها.
يشير الحرف الأول إلى نوع الملف:
-يعني أنه ملف عاديdيعني أنه دليلlيعني أنه رابط
ثم لديك 3 مجموعات من القيم:
- المجموعة الأولى تمثل أذونات مالك الملف
- المجموعة الثانية تمثل أذونات أعضاء المجموعة المرتبط بها الملف
- المجموعة الثالثة تمثل أذونات كل شخص آخر
تتكون هذه المجموعات من 3 قيم. rwx تعني أن هذا الشخص المحدد لديه حق الوصول للقراءة والكتابة والتنفيذ. أي شيء يتم إزالته يتم استبداله بـ -، مما يتيح لك تكوين مجموعات مختلفة من القيم والأذونات النسبية: rw-، r--، r-x، وهكذا.
يمكنك تغيير الأذونات الممنوحة لملف باستخدام أمر chmod. يمكن استخدام chmod بطريقتين. الأولى باستخدام وسيطات رمزية، والثانية باستخدام وسيطات رقمية. دعنا نبدأ بالرموز أولاً، وهي أكثر سهولة.
تكتب chmod متبوعًا بمسافة، وحرف:
aيرمز إلىall(الكل)uيرمز إلىuser(المستخدم)gيرمز إلىgroup(المجموعة)oيرمز إلىothers(الآخرون)
ثم تكتب إما + أو - لإضافة إذن، أو لإزالته. ثم تدخل رمزًا أو أكثر من رموز الأذونات (r، w، x). كل ذلك متبوعًا باسم الملف أو المجلد. إليك بعض الأمثلة:
chmod a+r filename #الكل يمكنهم الآن القراءة
chmod a+rw filename #الكل يمكنهم الآن القراءة والكتابة
chmod o-rwx filename #الآخرون (ليس المالك، وليس في نفس مجموعة الملف) لا يمكنهم القراءة أو الكتابة أو التنفيذ للملف
يمكنك تطبيق نفس الأذونات على عدة أشخاص بإضافة عدة أحرف قبل + / -:
chmod og-r filename #الآخرون والمجموعة لا يمكنهم القراءة بعد الآن
في حال كنت تقوم بتحرير مجلد، يمكنك تطبيق الأذونات على كل ملف موجود في ذلك المجلد باستخدام الخيار -r (متكرر).
الوسيطات الرقمية أسرع ولكن أجدها صعبة التذكر عندما لا تستخدمها يوميًا. تستخدم رقمًا يمثل أذونات الشخص. يمكن أن تكون قيمة هذا الرقم بحد أقصى 7، ويتم حسابها بهذه الطريقة:
1إذا كان لديه إذن تنفيذ2إذا كان لديه إذن كتابة4إذا كان لديه إذن قراءة
هذا يمنحنا 4 مجموعات:
0لا توجد أذونات1يمكنه التنفيذ2يمكنه الكتابة3يمكنه الكتابة، التنفيذ4يمكنه القراءة5يمكنه القراءة، التنفيذ6يمكنه القراءة، الكتابة7يمكنه القراءة، الكتابة والتنفيذ
نستخدمها في أزواج من 3، لتعيين أذونات جميع المجموعات الثلاث معًا:
chmod 777 filename
chmod 755 filename
chmod 644 filename
أمر Linux umask: التحكم في الأذونات الافتراضية للملفات
عند إنشاء ملف، لا يتعين عليك تحديد الأذونات مسبقًا. الأذونات لها قيم افتراضية. يمكن التحكم في هذه القيم الافتراضية وتعديلها باستخدام أمر umask. كتابة umask بدون وسيطات ستعرض لك القناع الحالي، في هذه الحالة 0022:

ماذا يعني 0022؟ هذه قيمة ثمانية تمثل الأذونات. قيمة شائعة أخرى هي 0002. استخدم umask -S لرؤية ترميز سهل القراءة:

في هذه الحالة، المستخدم (u)، مالك الملف، لديه أذونات القراءة والكتابة والتنفيذ على الملفات. المستخدمون الآخرون الذين ينتمون إلى نفس المجموعة (g) لديهم إذن القراءة والتنفيذ، وكذلك جميع المستخدمين الآخرين (o).
في الترميز الرقمي، نقوم عادة بتغيير الأرقام الثلاثة الأخيرة. إليك قائمة تعطي معنى للرقم:
0قراءة، كتابة، تنفيذ1قراءة وكتابة2قراءة وتنفيذ3قراءة فقط4كتابة وتنفيذ5كتابة فقط6تنفيذ فقط7لا توجد أذونات
تجدر الإشارة إلى أن هذا الترميز الرقمي يختلف عن ذلك الذي نستخدمه في أمر chmod. يمكننا تعيين قيمة جديدة للقناع بتعيين القيمة في تنسيق رقمي:
umask 002
أو يمكنك تغيير إذن دور معين:
umask g+r
أمر Linux du: تحليل استخدام مساحة القرص للدلائل
سيقوم أمر du بحساب حجم الدليل ككل:
du

الرقم 32 هنا هو قيمة معبر عنها بالبايت. تشغيل du * سيحسب حجم كل ملف على حدة:

يمكنك تعيين du لعرض القيم بالميغابايت باستخدام du -m، والغيغابايت باستخدام du -g. سيعرض الخيار -h ترميزًا سهل القراءة للأحجام، يتكيف مع الحجم:

إضافة الخيار -a ستطبع حجم كل ملف في الدلائل أيضًا:

شيء مفيد هو فرز الدلائل حسب الحجم:
du -h <directory> | sort -nr
ثم توجيهها إلى head للحصول على أول 10 نتائج فقط:

أمر Linux df: عرض معلومات استخدام القرص
يستخدم أمر df للحصول على معلومات استخدام القرص. سيعرض شكله الأساسي معلومات حول وحدات التخزين المركبة:

باستخدام الخيار -h (df -h) سيعرض هذه القيم بتنسيق سهل القراءة:

يمكنك أيضًا تحديد اسم ملف أو دليل للحصول على معلومات حول وحدة التخزين المحددة التي يعيش عليها:

أمر Linux basename: استخراج اسم الملف من المسار
لنفترض أن لديك مسارًا إلى ملف، على سبيل المثال /Users/flavio/test.txt. تشغيل:
basename /Users/flavio/test.txt
سيعيد السلسلة test.txt:

إذا قمت بتشغيل basename على سلسلة مسار تشير إلى دليل، فستحصل على الجزء الأخير من المسار. في هذا المثال، /Users/flavio هو دليل:

أمر Linux dirname: استخراج مسار الدليل من المسار
لنفترض أن لديك مسارًا إلى ملف، على سبيل المثال /Users/flavio/test.txt. تشغيل:
dirname /Users/flavio/test.txt
سيعيد السلسلة /Users/flavio:

أمر Linux ps: عرض العمليات الجارية
يقوم جهاز الكمبيوتر الخاص بك بتشغيل أطنان من العمليات المختلفة في جميع الأوقات. يمكنك فحصها جميعًا باستخدام أمر ps:

هذه هي قائمة العمليات التي بدأها المستخدم والتي تعمل حاليًا في الجلسة الحالية. هنا لدي بعض مثيلات fish shell، معظمها تم فتحه بواسطة VS Code داخل المحرر، ومثيل من Hugo يشغل معاينة تطوير موقع. هذه هي الأوامر المخصصة للمستخدم الحالي فقط. لسرد جميع العمليات، نحتاج إلى تمرير بعض الخيارات إلى ps. الأكثر شيوعًا الذي أستخدمه هو ps ax:
ps ax

يستخدم الخيار a لسرد عمليات المستخدمين الآخرين أيضًا، وليس فقط عملياتك الخاصة. يعرض x العمليات غير المرتبطة بأي طرفية (لم يبدأها المستخدمون عبر طرفية). كما ترى، يتم قطع الأوامر الأطول. استخدم الأمر ps axww لمتابعة قائمة الأوامر في سطر جديد بدلاً من قطعها:
ps axww

نحتاج إلى تحديد w مرتين لتطبيق هذا الإعداد (إنه ليس خطأ مطبعيًا). يمكنك البحث عن عملية معينة بدمج grep مع أنبوب، مثل هذا:
ps axww | grep "Visual Studio Code"

تمثل الأعمدة التي يعرضها ps بعض المعلومات الأساسية. المعلومات الأولى هي PID، معرف العملية. هذا أمر أساسي عندما تريد الإشارة إلى هذه العملية في أمر آخر، على سبيل المثال لقتلها. ثم لدينا TT الذي يخبرنا بمعرف الطرفية المستخدمة. ثم STAT يخبرنا بحالة العملية:
Iعملية خاملة (نائمة لأكثر من 20 ثانية تقريبًا)Rعملية قابلة للتشغيلSعملية نائمة لأقل من 20 ثانية تقريبًاTعملية متوقفةUعملية في انتظار غير قابل للمقاطعةZعملية ميتة (zombie)
إذا كان لديك أكثر من حرف واحد، فإن الحرف الثاني يمثل معلومات إضافية، والتي يمكن أن تكون تقنية للغاية. من الشائع وجود + الذي يشير إلى أن العملية في المقدمة في طرفيتها. s يعني أن العملية هي قائد جلسة. TIME يخبرنا بمدة تشغيل العملية.
أمر Linux top: مراقبة العمليات في الوقت الفعلي
يستخدم أمر top لعرض معلومات ديناميكية في الوقت الفعلي حول العمليات الجارية في النظام. إنه مفيد حقًا لفهم ما يجري. استخدامه بسيط – ما عليك سوى كتابة top، وستغرق الطرفية بالكامل في هذا العرض الجديد:

العملية طويلة الأمد. للخروج، يمكنك كتابة الحرف q أو Ctrl-C. هناك الكثير من المعلومات التي يتم تقديمها لنا: عدد العمليات، وعدد العمليات التي تعمل أو نائمة، وحمل النظام، واستخدام وحدة المعالجة المركزية، وغير ذلك الكثير. أدناه، يتم تحديث قائمة العمليات التي تستهلك أكبر قدر من الذاكرة ووحدة المعالجة المركزية باستمرار. بشكل افتراضي، كما ترى من عمود %CPU المميز، يتم فرزها حسب وحدة المعالجة المركزية المستخدمة. يمكنك إضافة علامة لفرز العمليات حسب الذاكرة المستخدمة:
top -o mem
أمر Linux kill: إرسال إشارات للعمليات
يمكن لعمليات لينكس تلقي الإشارات والتفاعل معها. هذه إحدى الطرق التي يمكننا من خلالها التفاعل مع البرامج قيد التشغيل. يمكن لبرنامج kill إرسال مجموعة متنوعة من الإشارات إلى برنامج. لا يستخدم فقط لإنهاء برنامج، كما يوحي الاسم، ولكن هذه هي وظيفته الرئيسية. نستخدمه بهذه الطريقة:
kill <PID>
بشكل افتراضي، يرسل هذا إشارة TERM إلى معرف العملية المحدد. يمكننا استخدام علامات لإرسال إشارات أخرى، بما في ذلك:
kill -HUP <PID>kill -INT <PID>kill -KILL <PID>kill -TERM <PID>kill -CONT <PID>kill -STOP <PID>
HUPتعنيhang up(إنهاء الاتصال). يتم إرسالها تلقائيًا عند إغلاق نافذة طرفية بدأت عملية قبل إنهاء العملية.INTتعنيinterrupt(مقاطعة)، وترسل نفس الإشارة المستخدمة عندما نضغط علىCtrl-Cفي الطرفية، والتي عادة ما تنهي العملية.KILLلا يتم إرسالها إلى العملية، بل إلى نواة نظام التشغيل، والتي توقف العملية وتنهيها على الفور.TERMتعنيterminate(إنهاء). ستتلقى العملية هذه الإشارة وتنهي نفسها. إنها الإشارة الافتراضية التي يرسلهاkill.CONTتعنيcontinue(متابعة). يمكن استخدامها لاستئناف عملية متوقفة.STOPلا يتم إرسالها إلى العملية، بل إلى نواة نظام التشغيل، والتي توقف العملية على الفور (ولكن لا تنهيها).
قد ترى أرقامًا مستخدمة بدلاً من ذلك، مثل kill -1 <PID>. في هذه الحالة، 1 يتوافق مع HUP. 2 يتوافق مع INT. 9 يتوافق مع KILL. 15 يتوافق مع TERM. 18 يتوافق مع CONT. 15 يتوافق مع STOP.
أمر Linux killall: إنهاء عمليات متعددة بالاسم
على غرار أمر kill، سيرسل killall الإشارة إلى عمليات متعددة في وقت واحد بدلاً من إرسال إشارة إلى معرف عملية محدد. هذا هو التركيب:
killall <name>
حيث name هو اسم برنامج. على سبيل المثال، يمكنك تشغيل مثيلات متعددة من برنامج top، وسيؤدي killall top إلى إنهاء جميعها. يمكنك تحديد الإشارة، كما هو الحال مع kill (وتحقق من دليل kill لقراءة المزيد عن الأنواع المحددة من الإشارات التي يمكننا إرسالها)، على سبيل المثال:
killall -HUP top
أمر Linux jobs: إدارة العمليات في الخلفية
عندما نشغل أمرًا في لينكس / macOS، يمكننا تعيينه للتشغيل في الخلفية باستخدام الرمز & بعد الأمر. على سبيل المثال، يمكننا تشغيل top في الخلفية:
top &
هذا مفيد جدًا للبرامج طويلة الأمد. يمكننا العودة إلى هذا البرنامج باستخدام أمر fg. يعمل هذا بشكل جيد إذا كان لدينا وظيفة واحدة فقط في الخلفية، وإلا نحتاج إلى استخدام رقم الوظيفة: fg 1، fg 2 وهكذا. للحصول على رقم الوظيفة، نستخدم أمر jobs.
لنفترض أننا نشغل top & ثم top -o mem &، لذلك لدينا مثيلان من top قيد التشغيل. سيخبرنا jobs بهذا:

الآن يمكننا التبديل مرة أخرى إلى إحدى هذه العمليات باستخدام fg <jobid>. لإيقاف البرنامج مرة أخرى يمكننا الضغط على Cmd-Z. تشغيل jobs -l سيطبع أيضًا معرف العملية لكل وظيفة.
أمر Linux bg: استئناف العمليات المتوقفة في الخلفية
عندما يكون أمر قيد التشغيل، يمكنك تعليقه باستخدام Ctrl-Z. سيتوقف الأمر على الفور، وستعود إلى طرفية الواجهة. يمكنك استئناف تنفيذ الأمر في الخلفية، بحيث يستمر في العمل ولكنه لن يمنعك من القيام بأعمال أخرى في الطرفية. في هذا المثال، لدي أمران متوقفان:

يمكنني تشغيل bg 1 لاستئناف تنفيذ الوظيفة #1 في الخلفية. كان بإمكاني أيضًا قول bg بدون أي خيار، حيث أن الافتراضي هو اختيار الوظيفة #1 في القائمة.
أمر Linux fg: جلب العمليات إلى المقدمة
عندما يكون أمر قيد التشغيل في الخلفية، سواء بدأت تشغيله بـ & في النهاية (مثال: top &) أو وضعته في الخلفية باستخدام أمر bg، يمكنك إحضاره إلى المقدمة باستخدام fg. تشغيل:
fg
سيستأنف في المقدمة آخر وظيفة تم تعليقها. يمكنك أيضًا تحديد الوظيفة التي تريد استئنافها إلى المقدمة بتمرير رقم الوظيفة، والذي يمكنك الحصول عليه باستخدام أمر jobs.

تشغيل fg 2 سيستأنف الوظيفة #2:

أمر Linux type: تحديد نوع الأمر
يمكن أن يكون الأمر أحد هذه الأنواع الأربعة:
- قابل للتنفيذ (
executable) - برنامج مدمج في الواجهة (
shell built-in program) - دالة واجهة (
shell function) - اسم مستعار (
alias)
يمكن أن يساعد أمر type في معرفة ذلك، في حال أردنا معرفة ذلك أو كنا فضوليين. سيخبرك كيف سيتم تفسير الأمر. سيعتمد الإخراج على الواجهة المستخدمة. هذا هو Bash:

هذا هو Zsh:

هذا هو Fish:

أحد أكثر الأشياء إثارة للاهتمام هنا هو أنه بالنسبة للأسماء المستعارة، سيخبرك بما يشير إليه. يمكنك رؤية الاسم المستعار ll، في حالة Bash و Zsh، ولكن Fish يوفره بشكل افتراضي، لذلك سيخبرك أنه دالة واجهة مدمجة.
أمر Linux which: تحديد موقع الأوامر
لنفترض أن لديك أمرًا يمكنك تنفيذه، لأنه في مسار الواجهة، ولكنك تريد معرفة مكانه. يمكنك القيام بذلك باستخدام which. سيعيد الأمر المسار إلى الأمر المحدد:

سيعمل which فقط على الملفات التنفيذية المخزنة على القرص، وليس الأسماء المستعارة أو وظائف الواجهة المدمجة.
أمر Linux nohup: تشغيل الأوامر في الخلفية بعد تسجيل الخروج
أحيانًا يتعين عليك تشغيل عملية طويلة الأمد على جهاز بعيد، ثم تحتاج إلى قطع الاتصال. أو ببساطة تريد منع توقف الأمر إذا كانت هناك أي مشكلة في الشبكة بينك وبين الخادم. الطريقة لجعل الأمر يعمل حتى بعد تسجيل الخروج أو إغلاق الجلسة إلى الخادم هي استخدام أمر nohup. استخدم nohup <command> للسماح للعملية بالاستمرار في العمل حتى بعد تسجيل الخروج.
أمر Linux xargs: تحويل المدخلات إلى وسيطات للأوامر
يستخدم أمر xargs في واجهة UNIX لتحويل المدخلات من الإدخال القياسي إلى وسيطات لأمر. بعبارة أخرى، من خلال استخدام xargs، يتم استخدام إخراج أمر كمدخل لأمر آخر. إليك التركيب الذي ستستخدمه:
command1 | xargs command2
نستخدم أنبوبًا (|) لتمرير الإخراج إلى xargs. سيتولى ذلك تشغيل الأمر command2، باستخدام إخراج command1 كوسيطة (وسيطات) له.
دعنا نقم بمثال بسيط. تريد إزالة بعض الملفات المحددة من دليل. هذه الملفات مدرجة داخل ملف نصي. لدينا 3 ملفات: file1، file2، file3. في todelete.txt لدينا قائمة بالملفات التي نريد حذفها، في هذا المثال file1 و file3:

سنقوم بتوجيه إخراج cat todelete.txt إلى أمر rm، عبر xargs. بهذه الطريقة:
cat todelete.txt | xargs rm
هذه هي النتيجة، تم حذف الملفات التي أدرجناها الآن:

الطريقة التي يعمل بها هي أن xargs سيشغل rm مرتين، مرة لكل سطر يعيده cat. هذا هو أبسط استخدام لـ xargs. هناك العديد من الخيارات التي يمكننا استخدامها. أحد أكثرها فائدة، في رأيي (خاصة عند البدء في تعلم xargs)، هو -p. باستخدام هذا الخيار، سيجعل xargs يطبع مطالبة تأكيد بالإجراء الذي سيتخذه:

يتيح لك الخيار -n أن تخبر xargs بتنفيذ تكرار واحد في كل مرة، بحيث يمكنك تأكيدها بشكل فردي باستخدام -p. هنا نخبر xargs بتنفيذ تكرار واحد في كل مرة باستخدام -n1:

الخيار -I هو خيار آخر يستخدم على نطاق واسع. يسمح لك بالحصول على الإخراج في عنصر نائب، ثم يمكنك القيام بأشياء مختلفة. أحدها هو تشغيل أوامر متعددة:
command1 | xargs -I % /bin/bash -c 'command2 %; command3 %'

يمكنك استبدال الرمز % الذي استخدمته أعلاه بأي شيء آخر – إنه متغير.
أمر محرر Linux vim: محرر نصوص قوي للمطورين
vim هو محرر ملفات شائع جدًا، خاصة بين المبرمجين. يتم تطويره بنشاط وتحديثه بشكل متكرر، وهناك مجتمع كبير حوله. حتى أن هناك مؤتمر Vim! vi في الأنظمة الحديثة هو مجرد اسم مستعار لـ vim، والذي يعني vi improved (vi المحسّن). تبدأ تشغيله بتشغيل vi في سطر الأوامر.

يمكنك تحديد اسم ملف وقت الاستدعاء لتحرير هذا الملف المحدد:
vi test.txt

يجب أن تعلم أن Vim لديه وضعان رئيسيان:
- وضع الأوامر (أو الوضع العادي)
- وضع الإدراج (
insert mode)
عند بدء تشغيل المحرر، تكون في وضع الأوامر. لا يمكنك إدخال نص كما تتوقع من محرر يعتمد على واجهة المستخدم الرسومية. يجب عليك الدخول إلى وضع الإدراج. يمكنك القيام بذلك بالضغط على المفتاح i. بمجرد القيام بذلك، تظهر كلمة -- INSERT -- في أسفل المحرر:

الآن يمكنك البدء في الكتابة وملء الشاشة بمحتويات الملف:

يمكنك التنقل في الملف باستخدام مفاتيح الأسهم، أو باستخدام مفاتيح h - j - k - l. h-l لليسار واليمين، j-k للأسفل والأعلى.
بمجرد الانتهاء من التحرير، يمكنك الضغط على مفتاح Esc للخروج من وضع الإدراج والعودة إلى وضع الأوامر.

في هذه المرحلة، يمكنك التنقل في الملف، ولكن لا يمكنك إضافة محتوى إليه (وكن حذرًا بشأن المفاتيح التي تضغط عليها، فقد تكون أوامر). شيء واحد قد ترغب في القيام به الآن هو حفظ الملف. يمكنك القيام بذلك بالضغط على : (نقطتين)، ثم w. يمكنك الحفظ والخروج بالضغط على : ثم w و q: :wq. يمكنك الخروج دون حفظ بالضغط على : ثم q و !: :q!.
يمكنك التراجع عن التحرير بالانتقال إلى وضع الأوامر والضغط على u. يمكنك إعادة التراجع (إلغاء التراجع) بالضغط على Ctrl-R.
هذه هي أساسيات العمل مع Vim. من هنا تبدأ حفرة أرنب لا يمكننا الدخول فيها في هذه المقدمة الصغيرة. سأذكر فقط هذه الأوامر التي ستبدأ بها التحرير باستخدام Vim:
- الضغط على المفتاح
xيحذف الحرف المميز حاليًا. - الضغط على
Aينتقل إلى نهاية السطر المحدد حاليًا. - الضغط على
0ينتقل إلى بداية السطر. - انتقل إلى الحرف الأول من كلمة واضغط على
dمتبوعًا بـwلحذف تلك الكلمة. إذا اتبعتها بـeبدلاً منw، فسيتم الحفاظ على المسافة البيضاء قبل الكلمة التالية. - استخدم رقمًا بين
dوwلحذف أكثر من كلمة واحدة، على سبيل المثال استخدمd3wلحذف 3 كلمات إلى الأمام. - اضغط على
dمتبوعًا بـdلحذف سطر كامل. اضغط علىdمتبوعًا بـ$لحذف السطر بأكمله من حيث يوجد المؤشر، حتى النهاية.
لمعرفة المزيد عن Vim، أوصي بـ Vim FAQ. يمكنك أيضًا تشغيل أمر vimtutor، والذي يجب أن يكون مثبتًا بالفعل في نظامك وسيساعدك بشكل كبير على بدء استكشاف vim.
أمر محرر Linux emacs: محرر نصوص متعدد الاستخدامات
emacs هو محرر رائع ويعتبر تاريخيًا محرر أنظمة UNIX. اشتهرت حروب vi مقابل emacs والمناقشات الحادة بأنها تسببت في ساعات غير منتجة للعديد من المطورين حول العالم. emacs قوي جدًا. يستخدمه بعض الأشخاص طوال اليوم كنوع من نظام التشغيل (https://news.ycombinator.com/item?id=19127258). سنتحدث فقط عن الأساسيات هنا.
يمكنك فتح جلسة emacs جديدة ببساطة عن طريق استدعاء emacs:

مستخدمو macOS، توقفوا لحظة الآن. إذا كنت على لينكس فلا توجد مشاكل، لكن macOS لا يشحن تطبيقات تستخدم GPLv3، وكل أمر UNIX مدمج تم تحديثه إلى GPLv3 لم يتم تحديثه. بينما توجد مشكلة صغيرة في الأوامر التي أدرجتها حتى الآن، في هذه الحالة، استخدام إصدار emacs من عام 2007 ليس هو نفسه تمامًا استخدام إصدار مع 12 عامًا من التحسينات والتغييرات. هذه ليست مشكلة مع Vim، الذي هو محدث. لإصلاح هذا، قم بتشغيل brew install emacs، وتشغيل emacs سيستخدم الإصدار الجديد من Homebrew (تأكد من تثبيت Homebrew).
يمكنك أيضًا تحرير ملف موجود عن طريق استدعاء emacs <filename>:

يمكنك الآن البدء في التحرير. بمجرد الانتهاء، اضغط على Ctrl-X متبوعًا بـ Ctrl-W. تؤكد المجلد:

ويخبرك Emacs أن الملف موجود، ويسألك عما إذا كان يجب الكتابة فوقه:

أجب بـ y، وستحصل على تأكيد بالنجاح:

يمكنك الخروج من Emacs بالضغط على Ctrl-X متبوعًا بـ Ctrl-C. أو Ctrl-X متبوعًا بـ c (مع الاستمرار في الضغط على Ctrl).
هناك الكثير مما يجب معرفته عن Emacs، بالتأكيد أكثر مما أستطيع كتابته في هذه المقدمة الصغيرة. أشجعك على فتح Emacs والضغط على Ctrl-H R لفتح الدليل المدمج و Ctrl-H T لفتح البرنامج التعليمي الرسمي.
أمر محرر Linux nano: محرر نصوص سهل الاستخدام للمبتدئين
nano هو محرر سهل الاستخدام للمبتدئين. قم بتشغيله باستخدام nano <filename>. يمكنك كتابة الأحرف مباشرة في الملف دون القلق بشأن الأوضاع. يمكنك الخروج دون تحرير باستخدام Ctrl-X. إذا قمت بتحرير مخزن الملف، سيسألك المحرر عن التأكيد ويمكنك حفظ التعديلات، أو تجاهلها. تظهر المساعدة في الأسفل أوامر لوحة المفاتيح التي تتيح لك العمل مع الملف:

pico هو نفسه تقريبًا، على الرغم من أن nano هو إصدار GNU من pico الذي لم يكن مفتوح المصدر في مرحلة ما من التاريخ. تم إنشاء نسخة nano لتلبية متطلبات ترخيص نظام تشغيل GNU.
أمر Linux whoami: عرض اسم المستخدم الحالي
اكتب whoami لطباعة اسم المستخدم المسجل حاليًا في جلسة الطرفية:
whoami

ملاحظة: هذا يختلف عن أمر who am i، الذي يطبع المزيد من المعلومات.
أمر Linux who: عرض المستخدمين المسجلين
يعرض أمر who المستخدمين المسجلين في النظام. ما لم تكن تستخدم خادمًا يمكن لعدة أشخاص الوصول إليه، فمن المحتمل أن تكون أنت المستخدم الوحيد المسجل، عدة مرات:

لماذا عدة مرات؟ لأن كل واجهة أوامر مفتوحة ستعد كوصول. يمكنك رؤية اسم الطرفية المستخدمة، ووقت/يوم بدء الجلسة. ستخبرك الخيارات -aH لـ who بعرض المزيد من المعلومات، بما في ذلك وقت الخمول ومعرف العملية للطرفية:

سيسرد الأمر الخاص who am i تفاصيل جلسة الطرفية الحالية:


أمر Linux su: التبديل بين المستخدمين
بينما أنت مسجل الدخول إلى واجهة الطرفية بمستخدم واحد، قد تحتاج إلى التبديل إلى مستخدم آخر. على سبيل المثال، أنت مسجل الدخول كـ root لأداء بعض مهام الصيانة، ولكن بعد ذلك تريد التبديل إلى حساب مستخدم عادي. يمكنك القيام بذلك باستخدام أمر su:
su <username>
على سبيل المثال: su flavio. إذا كنت مسجل الدخول كمستخدم، فإن تشغيل su بدون أي شيء آخر سيطلب منك إدخال كلمة مرور المستخدم root، حيث أن هذا هو السلوك الافتراضي.

سيبدأ su واجهة أوامر جديدة كمستخدم آخر. عندما تنتهي، كتابة exit في الواجهة ستغلق تلك الواجهة، وستعيدك إلى واجهة المستخدم الحالية.
أمر Linux sudo: تشغيل الأوامر بصلاحيات المستخدم الخارق
يستخدم sudo عادة لتشغيل أمر كـ root. يجب أن تكون مخولًا لاستخدام sudo، وبمجرد أن تكون كذلك، يمكنك تشغيل الأوامر كـ root عن طريق إدخال كلمة مرور المستخدم الخاص بك (ليس كلمة مرور المستخدم root). الأذونات قابلة للتكوين بدرجة عالية، وهو أمر رائع بشكل خاص في بيئة خادم متعددة المستخدمين. يمكن منح بعض المستخدمين حق الوصول لتشغيل أوامر محددة من خلال sudo. على سبيل المثال، يمكنك تحرير ملف تكوين النظام:
sudo nano /etc/hosts
والذي سيفشل في الحفظ بخلاف ذلك نظرًا لعدم امتلاكك الأذونات لذلك. يمكنك تشغيل sudo -i لبدء واجهة أوامر كـ root:

يمكنك استخدام sudo لتشغيل الأوامر كأي مستخدم. root هو الافتراضي، ولكن استخدم الخيار -u لتحديد مستخدم آخر:
sudo -u flavio ls /Users/flavio
أمر Linux passwd: تغيير كلمات مرور المستخدمين
يمتلك المستخدمون في لينكس كلمة مرور معينة. يمكنك تغيير كلمة المرور باستخدام أمر passwd. هناك حالتان هنا. الأولى هي عندما تريد تغيير كلمة مرورك. في هذه الحالة تكتب:
passwd
وسيطلب منك موجه تفاعلي كلمة المرور القديمة، ثم سيطلب منك كلمة المرور الجديدة:

عندما تكون root (أو لديك امتيازات المستخدم الخارق) يمكنك تعيين اسم المستخدم الذي تريد تغيير كلمة مروره له:
passwd <username> <new password>
في هذه الحالة لا تحتاج إلى إدخال كلمة المرور القديمة.
أمر Linux ping: اختبار اتصال الشبكة
يقوم أمر ping بإرسال طلب إلى مضيف شبكة معين، سواء على الشبكة المحلية أو على الإنترنت. تستخدمه بالصيغة ping <host> حيث يمكن أن يكون <host> اسم نطاق، أو عنوان IP. إليك مثال على إرسال طلب إلى google.com:
ping google.com

يرسل الأمر طلبًا إلى الخادم، ويرجع الخادم استجابة. يستمر ping في إرسال الطلب كل ثانية، بشكل افتراضي. سيستمر في العمل حتى توقفه بـ Ctrl-C، ما لم تمرر عدد المرات التي تريد المحاولة فيها باستخدام الخيار -c: ping -c 2 google.com. بمجرد توقف ping، سيطبع بعض الإحصائيات حول النتائج: نسبة الحزم المفقودة، وإحصائيات حول أداء الشبكة.
كما ترى، تعرض الشاشة عنوان IP للمضيف، والوقت الذي استغرقه للحصول على الاستجابة. لا تدعم جميع الخوادم ping، في حال انتهت مهلة الطلب:

أحيانًا يتم ذلك عن قصد، “لإخفاء” الخادم، أو لمجرد تقليل الحمل. يمكن أيضًا تصفية حزم ping بواسطة جدران الحماية.
يعمل ping باستخدام بروتوكول ICMP (Internet Control Message Protocol)، وهو بروتوكول طبقة الشبكة تمامًا مثل TCP أو UDP. يرسل الطلب حزمة إلى الخادم برسالة ECHO_REQUEST، ويرجع الخادم رسالة ECHO_REPLY. لن أخوض في التفاصيل، ولكن هذا هو المفهوم الأساسي.
يعد إرسال طلب إلى مضيف مفيدًا لمعرفة ما إذا كان المضيف قابلاً للوصول (بافتراض أنه ينفذ ping)، ومدى بعده من حيث الوقت الذي يستغرقه للعودة إليك. عادةً ما يكون الخادم الأقرب جغرافيًا، هو الأقل وقتًا الذي سيستغرقه للعودة إليك. تتسبب القوانين الفيزيائية البسيطة في أن المسافة الأطول تؤدي إلى مزيد من التأخير في الكابلات.
أمر Linux traceroute: تتبع مسار حزم الشبكة
عندما تحاول الوصول إلى مضيف على الإنترنت، فإنك تمر عبر جهاز التوجيه المنزلي الخاص بك. ثم تصل إلى شبكة مزود خدمة الإنترنت الخاص بك، والتي بدورها تمر عبر جهاز توجيه الشبكة الخاص بها، وهكذا، حتى تصل أخيرًا إلى المضيف.
هل أردت يومًا معرفة الخطوات التي تمر بها حزمك للقيام بذلك؟ أمر traceroute مصنوع لهذا الغرض. يمكنك استدعاء:
traceroute <host>
وسيقوم (ببطء) بجمع جميع المعلومات أثناء انتقال الحزمة. في هذا المثال، حاولت الوصول إلى مدونتي باستخدام traceroute flaviocopes.com:

لا يعيد كل جهاز توجيه تم المرور به معلومات لنا. في هذه الحالة، يطبع traceroute * * *. بخلاف ذلك، يمكننا رؤية اسم المضيف، وعنوان IP، وبعض مؤشرات الأداء. لكل جهاز توجيه، يمكننا رؤية 3 عينات، مما يعني أن traceroute يحاول بشكل افتراضي 3 مرات لمنحك مؤشرًا جيدًا للوقت اللازم للوصول إليه. هذا هو السبب في أن تنفيذ traceroute يستغرق وقتًا طويلاً مقارنة بمجرد القيام بـ ping لهذا المضيف. يمكنك تخصيص هذا العدد باستخدام الخيار -q:
traceroute -q 1 flaviocopes.com

أمر Linux clear: مسح شاشة الطرفية
اكتب clear لمسح جميع الأوامر السابقة التي تم تشغيلها في الطرفية الحالية. ستتم مسح الشاشة وسترى فقط الموجه في الأعلى:
clear

ملاحظة: هذا الأمر له اختصار مفيد: Ctrl-L. بمجرد القيام بذلك، ستفقد الوصول إلى التمرير لرؤية إخراج الأوامر السابقة التي تم إدخالها. لذا قد ترغب في استخدام clear -x بدلاً من ذلك، والذي لا يزال يمسح الشاشة، ولكنه يتيح لك العودة لرؤية العمل السابق عن طريق التمرير لأعلى.
أمر Linux history: عرض سجل الأوامر
في كل مرة تقوم فيها بتشغيل أمر، يتم حفظه في السجل. يمكنك عرض السجل بالكامل باستخدام:
history

يعرض هذا السجل بالأرقام. يمكنك استخدام التركيب !<command number> لتكرار أمر مخزن في السجل. في المثال أعلاه، كتابة !121 ستكرر الأمر ls -al | wc -l. عادةً ما يتم تخزين آخر 500 أمر في السجل.
يمكنك دمج هذا مع grep للعثور على أمر قمت بتشغيله:
history | grep docker

لمسح السجل، قم بتشغيل history -c.
أمر Linux export: تصدير المتغيرات البيئية
يستخدم أمر export لتصدير المتغيرات إلى العمليات الفرعية. ماذا يعني هذا؟ لنفترض أن لديك متغير TEST معرفًا بهذه الطريقة:
TEST="test"
يمكنك طباعة قيمته باستخدام echo $TEST:

ولكن إذا حاولت تعريف سكريبت Bash في ملف script.sh بالأمر أعلاه:

ثم عندما تقوم بتعيين chmod u+x script.sh وتقوم بتنفيذ هذا السكريبت بـ ./script.sh، فإن السطر echo $TEST لن يطبع شيئًا! هذا لأن متغير TEST في Bash تم تعريفه محليًا للواجهة. عند تنفيذ سكريبت واجهة أو أمر آخر، يتم تشغيل واجهة فرعية لتنفيذه، والتي لا تحتوي على المتغيرات المحلية للواجهة الحالية. لجعل المتغير متاحًا هناك، نحتاج إلى تعريف TEST ليس بهذه الطريقة:
TEST="test"
ولكن بهذه الطريقة:
export TEST="test"
جرب ذلك، وتشغيل ./script.sh الآن يجب أن يطبع “test“:

أحيانًا تحتاج إلى إلحاق شيء بمتغير. غالبًا ما يتم ذلك مع متغير PATH. تستخدم هذا التركيب:
export PATH=$PATH:/new/path
من الشائع استخدام export عند إنشاء متغيرات جديدة بهذه الطريقة. ولكن يمكنك أيضًا استخدامه عند إنشاء متغيرات في ملفات التكوين .bash_profile أو .bashrc مع Bash، أو في .zshenv مع Zsh. لإزالة متغير، استخدم الخيار -n:
export -n TEST
استدعاء export بدون أي خيار سيسرد جميع المتغيرات المصدرة.
أمر Linux crontab: جدولة المهام المتكررة
مهام Cron هي مهام مجدولة للتشغيل على فترات زمنية محددة. قد يكون لديك أمر يقوم بشيء كل ساعة، أو كل يوم، أو كل أسبوعين. أو في عطلات نهاية الأسبوع. إنها قوية جدًا، خاصة عند استخدامها على الخوادم لأداء مهام الصيانة والأتمتة.
أمر crontab هو نقطة الدخول للعمل مع مهام cron. أول شيء يمكنك القيام به هو استكشاف مهام cron التي قمت بتعريفها:
crontab -l
قد لا يكون لديك أي منها، مثلي:

قم بتشغيل:
crontab -e
لتحرير مهام cron، وإضافة مهام جديدة. بشكل افتراضي، يفتح هذا مع المحرر الافتراضي، والذي عادة ما يكون vim. أنا أفضل nano أكثر. يمكنك استخدام هذا السطر لاستخدام محرر مختلف:
EDITOR=nano crontab -e
الآن يمكنك إضافة سطر واحد لكل مهمة cron. تركيب تعريف مهام cron مخيف نوعًا ما. لهذا السبب أستخدم عادة موقعًا لمساعدتي في إنشائه بدون أخطاء: https://crontab-generator.org/

تختار فترة زمنية لمهمة cron، وتكتب الأمر المراد تنفيذه. اخترت تشغيل سكريبت موجود في /Users/flavio/test.sh كل 12 ساعة. هذا هو سطر crontab الذي أحتاج إلى تشغيله:
* */12 * * * /Users/flavio/test.sh >/dev/null 2>&1
أقوم بتشغيل crontab -e:
EDITOR=nano crontab -e
وأضيف هذا السطر، ثم أضغط على Ctrl-X وأضغط على y للحفظ. إذا سار كل شيء على ما يرام، فسيتم إعداد مهمة cron:

بمجرد الانتهاء من ذلك، يمكنك رؤية قائمة مهام cron النشطة عن طريق تشغيل:
crontab -l

يمكنك إزالة مهمة cron عن طريق تشغيل crontab -e مرة أخرى، وإزالة السطر والخروج من المحرر:


أمر Linux uname: عرض معلومات النظام
استدعاء uname بدون أي خيارات سيعيد اسم رمز نظام التشغيل:
uname

يعرض الخيار m اسم الأجهزة (x86_64 في هذا المثال) ويطبع الخيار p اسم بنية المعالج (i386 في هذا المثال):
uname -mp

يطبع الخيار s اسم نظام التشغيل. يطبع r الإصدار، ويطبع v النسخة:
uname -srv

يطبع الخيار n اسم شبكة العقدة:
uname -n

يطبع الخيار a جميع المعلومات المتاحة:
uname -a

على macOS، يمكنك أيضًا استخدام أمر sw_vers لطباعة المزيد من المعلومات حول نظام التشغيل macOS. لاحظ أن هذا يختلف عن إصدار Darwin (النواة)، والذي أعلاه هو 19.6.0. Darwin هو اسم نواة macOS. النواة هي “جوهر” نظام التشغيل، بينما يسمى نظام التشغيل ككل macOS. في لينكس، لينكس هو النواة، وسيكون GNU/Linux هو اسم نظام التشغيل (على الرغم من أننا جميعًا نشير إليه باسم “لينكس”).
أمر Linux env: إدارة المتغيرات البيئية للعمليات
يمكن استخدام أمر env لتمرير متغيرات البيئة دون تعيينها في البيئة الخارجية (الواجهة الحالية). لنفترض أنك تريد تشغيل تطبيق Node.js وتعيين متغير USER له. يمكنك تشغيل:
env USER=flavio node app.js
وسيكون متغير البيئة USER متاحًا من تطبيق Node.js عبر واجهة Node process.env. يمكنك أيضًا تشغيل الأمر بمسح جميع متغيرات البيئة المعينة بالفعل، باستخدام الخيار -i:
env -i node app.js
في هذه الحالة، ستحصل على خطأ يقول env: node: No such file or directory لأن أمر node غير قابل للوصول، حيث أن متغير PATH الذي تستخدمه الواجهة للبحث عن الأوامر في المسارات الشائعة غير مضبوط. لذا تحتاج إلى تمرير المسار الكامل لبرنامج node:
env -i /usr/local/bin/node app.js
جرب مع ملف app.js بسيط بهذا المحتوى:
console.log(process.env.NAME)
console.log(process.env.PATH)
سترى الإخراج على النحو التالي:
undefined
undefined
يمكنك تمرير متغير بيئة:
env -i NAME=flavio node app.js
وسيكون الإخراج:
flavio
undefined
إزالة الخيار -i ستجعل PATH متاحًا مرة أخرى داخل البرنامج:

يمكن أيضًا استخدام أمر env لطباعة جميع متغيرات البيئة. إذا تم تشغيله بدون خيارات:
env
سيعيد قائمة بمتغيرات البيئة المعينة، على سبيل المثال:
HOME=/Users/flavio
LOGNAME=flavio
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
PWD=/Users/flavio
SHELL=/usr/local/bin/fish
مع بضعة أسطر أخرى، عادة. يمكنك إلحاق اسم متغير كمعلمة، لعرض قيمة هذا المتغير فقط:
printenv PATH

أمر Linux printenv: عرض قيم المتغيرات البيئية
إليك دليل سريع لأمر printenv، المستخدم لطباعة قيم متغيرات البيئة. في أي واجهة أوامر، يوجد عدد لا بأس به من متغيرات البيئة، يتم تعيينها إما بواسطة النظام، أو بواسطة سكريبتات الواجهة الخاصة بك وتكوينها. يمكنك طباعتها جميعًا إلى الطرفية باستخدام أمر printenv. سيكون الإخراج شيئًا كهذا:
HOME=/Users/flavio
LOGNAME=flavio
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
PWD=/Users/flavio
SHELL=/usr/local/bin/fish
مع بضعة أسطر أخرى، عادة. يمكنك إلحاق اسم متغير كمعلمة، لعرض قيمة هذا المتغير فقط:
printenv PATH

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