فهم Shell وTerminal وCLI: شرح الاختلافات الرئيسية

Terminal

إزالة الغموض عن الثلاثي التقني: Shell وTerminal وCLI

عندما بدأت استكشاف عالم البرمجة لأول مرة، بدت مصطلحات مثل shell وterminal وCLI وكأنها متاهة مربكة. 🤯 كنت أفتح موجه الأوامر على جهاز الكمبيوتر الذي يعمل بنظام التشغيل Windows، وأكتب شيئًا ما، وأتساءل عما إذا كنت أستخدم "المحطة الطرفية" أو "الصدفة". هذا الارتباك شائع بالنسبة للمبتدئين.

أصبحت الأمور أكثر تعقيدًا عندما قمت بتشغيل PowerShell ولاحظت أنه يشبه موجه الأوامر ولكنه يوفر المزيد من الإمكانات. هل كان برنامجًا جديدًا أم مجرد نسخة متقدمة من المحطة؟ قد يكون فهم هذه الأدوات مرهقًا، خاصة عند استخدام مصطلحات متشابهة بالتبادل.

بالإضافة إلى ذلك، واجهت AWS CLI أثناء تعلم الحوسبة السحابية. لقد عثرت أيضًا على Cloud Shell. بدا كلاهما مرتبطين لكنهما عملا بطرق مختلفة تمامًا. بالنسبة لشخص جديد، قد يجعلك هذا تتساءل: كيف ترتبط كل هذه المصطلحات فعليًا؟

في هذه المقالة، سنقوم بتفصيل الاختلافات بين هذه المفاهيم بعبارات بسيطة. ستتعلم أيضًا كيفية ربط النقاط بأمثلة من العالم الحقيقي لفهم كل شيء. في النهاية، ستشعر بمزيد من الثقة في التنقل في هذا المشهد التكنولوجي! 😊

يأمر مثال للاستخدام
os.getenv() يستخدم لاسترداد متغيرات البيئة في بايثون، مثل الصدفة الحالية. مثال: os.getenv("SHELL") يُرجع بيئة shell الخاصة بالمستخدم (على سبيل المثال، Bash، Zsh).
subprocess.run() ينفذ أمر shell من داخل Python ويلتقط مخرجاته أو أخطائه. مثال: subprocess.run("ls"، shell=True) يسرد محتويات الدليل.
command -v أمر خاص بـ Bash للتحقق مما إذا كان البرنامج مثبتًا ويمكن الوصول إليه. مثال: يتحقق الأمر -v aws من تثبيت AWS CLI.
capture_output وسيطة لـ subprocess.run()‎ في Python لالتقاط المخرجات القياسية للأمر. مثال: subprocess.run("ls",capture_output=True) يخزن المخرجات في متغير.
$SHELL متغير Bash يقوم بتخزين مسار الصدفة النشطة حاليًا. مثال: يقوم echo $SHELL بطباعة مسار الصدفة الخاص بالمستخدم.
os.name التحقق من نوع نظام التشغيل في بايثون. على سبيل المثال: يقوم os.name بإرجاع "nt" لنظام التشغيل Windows و"posix" للأنظمة المستندة إلى Unix.
ls أمر طرفي لسرد محتويات الدليل. مثال: يعرض ls -l معلومات تفصيلية حول الملفات والأدلة.
aws --version يُستخدم لعرض الإصدار المثبت من AWS CLI. مثال: يقوم aws --version بإخراج الإصدار ومعلومات البناء.
try-except آلية معالجة الأخطاء في بايثون لالتقاط الاستثناءات ومعالجتها. مثال: حاول: subprocess.run(...); باستثناء الاستثناء كـ e: يكتشف الأخطاء أثناء تنفيذ الأمر.
if command -v شرط في Bash للتحقق من وجود أمر. مثال: if command -v ls > /dev/null; ثم صدى "موجود"؛ فاي.

تحليل Shell وTerminal وCLI باستخدام تطبيقات الحياة الواقعية

تساعد البرامج النصية المقدمة سابقًا في توضيح الاختلافات بين shell وterminal وCLI باستخدام أمثلة عملية. على سبيل المثال، يستخدم برنامج Python النصي للكشف عن قذيفة المستخدم النشطة. وهذا يسلط الضوء على مفهوم الصدفة باعتبارها البيئة التي تفسر الأوامر وتنفذها. تخيل أنك تعمل في مقهى؛ القشرة تشبه صانع القهوة الذي يفهم طلبك ويصنع قهوتك. بدونها، لن تعمل أوامر مثل إدراج الملفات أو تشغيل البرامج بكفاءة. ☕

في البرنامج النصي Bash، يتم استخدام يوفر المتغير طريقة مباشرة لتحديد الصدفة النشطة، مثل Bash أو Zsh. من ناحية أخرى، تعمل الوحدة الطرفية بمثابة "الواجهة" حيث تتفاعل مع الصدفة. إنه مثل طاولة المقهى حيث يتم تلقي الطلبات، فهو لا يصنع القهوة (وظيفة الصدفة)، ولكنه ضروري للتواصل. من خلال تشغيل أمر `ls` بسيط في الوحدة الطرفية، ترى قدرته على عرض محتويات الدليل، مع التركيز على كيفية عمله كوسيط بين المستخدم والنظام.

عندما يتعلق الأمر بـ CLI، تستكشف البرامج النصية أدوات مثل AWS CLI، والتي تُستخدم خصيصًا للتفاعل مع خدمات AWS مباشرة من سطر الأوامر. فكر في واجهة سطر الأوامر (CLI) باعتبارها منصة خدمة مخصصة لمهام محددة في المقهى - متخصصة وفعالة وقوية. على سبيل المثال، الأمر يوضح كيف تساعد واجهة سطر الأوامر (CLI) في إدارة الموارد السحابية، وهو أمر بالغ الأهمية للمطورين العاملين في الحوسبة السحابية. وبدون ذلك، ستكون مهام مثل نشر التطبيقات أكثر تعقيدًا بشكل ملحوظ. 🚀

إن الجمع بين معالجة الأخطاء مع `try-except` في Python و`if command -v` في Bash يضمن أن البرامج النصية يمكنها التعامل مع السيناريوهات غير المتوقعة بأمان. على سبيل المثال، إذا لم يتم تثبيت AWS CLI، فسيوفر البرنامج النصي رسالة واضحة، مما يمنع إحباط المستخدم. يعكس هذا سيناريوهات من الحياة الواقعية حيث يعد الاستعداد والمرونة أمرًا أساسيًا، مثل وجود خطط بديلة عندما تتعطل ماكينة القهوة المفضلة لديك في المقهى. توضح هذه الأمثلة كيف أن النصوص البرمجية القوية لا توضح المفاهيم التقنية فحسب، بل تجعل الأدوات أيضًا في متناول المبتدئين.

استكشاف Shell وTerminal وCLI من خلال البرمجة

يوضح هذا البرنامج النصي طريقة Python للتمييز بين وظائف shell والمحطة الطرفية وCLI.

# Import necessary libraries for CLI interaction
import os
import subprocess
 
# Function to check the shell environment
def check_shell():
    shell = os.getenv("SHELL")
    print(f"Current shell: {shell}")
 
# Function to demonstrate terminal commands
def execute_terminal_command(command):
    try:
        result = subprocess.run(command, shell=True, capture_output=True, text=True)
        print(f"Output:\n{result.stdout}")
    except Exception as e:
        print(f"Error: {e}")
 
# Function to simulate CLI command usage
def aws_cli_example():
    try:
        result = subprocess.run("aws --version", shell=True, capture_output=True, text=True)
        print(f"AWS CLI version:\n{result.stdout}")
    except FileNotFoundError:
        print("AWS CLI is not installed.")
 
# Main execution
if __name__ == "__main__":
    check_shell()
    print("\nRunning a terminal command: 'ls' or 'dir'")
    execute_terminal_command("ls" if os.name != "nt" else "dir")
    print("\nChecking AWS CLI:")
    aws_cli_example()

الاستفادة من ميزات Shell وCLI باستخدام Bash Scripting

يستخدم هذا البرنامج النصي Bash للتمييز بين بيئات الصدفة وتنفيذ المهام المستندة إلى CLI.

#!/bin/bash
 
# Function to display the current shell
function check_shell() {
    echo "Current shell: $SHELL"
}
 
# Function to execute a terminal command
function execute_terminal_command() {
    echo "Listing directory contents:"
    ls
}
 
# Function to demonstrate CLI interaction
function aws_cli_example() {
    if command -v aws &> /dev/null
    then
        echo "AWS CLI version:"
        aws --version
    else
        echo "AWS CLI is not installed."
    fi
}
 
# Main script execution
check_shell
execute_terminal_command
aws_cli_example

توسيع عالم Shell وTerminal وCLI

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

ومن ناحية أخرى، تلعب المحطة دورًا حيويًا في إدارة الخادم عن بعد. باستخدام المحاكيات الطرفية مثل PuTTY أو OpenSSH، يمكنك الاتصال بالأنظمة البعيدة بشكل آمن. على سبيل المثال، عند العمل مع الأنظمة الأساسية السحابية مثل AWS أو Azure، غالبًا ما يستخدم المطورون المحطات الطرفية للوصول إلى المثيلات السحابية وتنفيذ الأوامر. وهذا يسلط الضوء على أهمية المحطة كجسر بين الأنظمة المحلية والخوادم البعيدة. لن تكون الإدارة عن بعد سلسة بدون القدرات الطرفية. 🌐

يعمل CLI على توسيع هذه الوظيفة من خلال تقديم أدوات سطر أوامر مصممة خصيصًا لمنصات أو تطبيقات محددة. تتيح أدوات مثل Docker CLI للمطورين إدارة التطبيقات الموجودة في حاويات بكفاءة، بينما يساعد Git CLI في التحكم في الإصدار. تعمل هذه الواجهات المتخصصة على تقليل منحنى التعلم للمهام المعقدة من خلال توفير أوامر منظمة وسهلة الاستخدام. على سبيل المثال، باستخدام أو يبسط سير العمل الذي قد يتضمن خطوات متعددة في واجهة المستخدم الرسومية. لا غنى عن واجهة سطر الأوامر (CLI) لكل من المطورين ومسؤولي النظام. 🖥️

  1. ما هو الفرق بين القشرة والمحطة؟
  2. الصدفة هي برنامج يفسر الأوامر وينفذها، في حين أن المحطة هي الواجهة التي تسمح لك بالتفاعل مع الصدفة.
  3. كيف يختلف PowerShell عن موجه الأوامر؟
  4. PowerShell عبارة عن غلاف أكثر تقدمًا يتمتع بقدرات البرمجة النصية وإمكانية الوصول إلى أدوات إدارة النظام، في حين أن موجه الأوامر أبسط ويستخدم بشكل أساسي لمعالجة الملفات والدليل.
  5. ما هو الغرض من AWS CLI؟
  6. يتيح AWS CLI للمستخدمين إدارة موارد AWS من سطر الأوامر باستخدام أوامر مثل لسرد دلاء S3.
  7. هل يمكنني تشغيل أوامر CLI داخل المحطة؟
  8. نعم، تم تصميم أدوات CLI مثل Git وDocker وAWS CLI ليتم تنفيذها داخل بيئة طرفية.
  9. لماذا نستخدم واجهة سطر الأوامر (CLI) بدلاً من واجهة المستخدم الرسومية (GUI)؟
  10. تعد واجهة سطر الأوامر (CLI) أسرع بالنسبة للمهام المتكررة، وتسمح بالبرمجة النصية والأتمتة، وتستهلك موارد نظام أقل مقارنة بالواجهات الرسومية.

يعد فهم الفرق بين shell وterminal وCLI أمرًا أساسيًا لأي شخص يتعمق في البرمجة. باستخدام هذه الأدوات بفعالية، يمكنك أتمتة المهام وإدارة الأنظمة والاتصال بالخوادم البعيدة، مما يجعل سير عملك أكثر سلاسة وإنتاجية.

تذكر أن الجهاز الطرفي هو بوابتك، والهيكل الخارجي لمترجمك الفوري، وواجهة سطر الأوامر (CLI) هي مساعدك المتخصص. ومع الممارسة، ستصبح وظائفهم طبيعة ثانية. سواء كنت تقوم بالبرمجة النصية باستخدام Bash أو تنشر التطبيقات عبر AWS CLI، فإن هذه الأدوات تمكنك من تحقيق المزيد بجهد أقل. 🚀

  1. يمكن الاطلاع على شرح تفصيلي للاختلافات بين Shell وTerminal وCLI Opensource.com .
  2. تتوفر رؤى حول استخدام AWS CLI وCloud Shell على وثائق AWS CLI .
  3. للحصول على نظرة عامة حول PowerShell وميزاته، تفضل بزيارة وثائق مايكروسوفت باورشيل .
  4. يمكن استكشاف معلومات شاملة حول البرمجة النصية لـ Shell باستخدام Bash على الموقع الدليل المرجعي لجنو باش .