اولین POV من از جلسه اول CS12 - GIT

نمیخام درباره مباحثی که تو جلسه اول بیان شد صحبت کنم چون اولا همه چی مشخص و ساده بود و فرهان هم همه چیز رو خیلی خوب توضیح داد بلکه میخام به موردی اشاره کنم که قطعا از خیلیاتون رفع ابهام میکنه(و جا داشت تو جلسه گفته بشه)
میخام به تفاوت بین Terminal , Shell , CLI . Command Line اشاره کنم.

خب اول برای اینکه فرق بینشون رو بدونید باید اول بدونید چی هستن.

🐚Shell

این مورد رو فرهان خیلی خوب توضیح داد ولی برای یادآوری یه بار دیگه توضیحش میدم.
به زبان ساده شل پل ارتباطی بین کاربر و کرنل هستش(اگر درس سیستم عامل پاس کرده باشید با دو کانسپت User space و Kernel space آشنایی دارید).
در واقع دستوراتی که ما برای کار با سیستم عامل میدیم رو کرنل متوجه نمیشه.چرا؟‌ چون کرنل پایین ترین لایه از لحاظ فنی هستش و درک پایینی از همه چی داره.یعنی کرنل همیشه با پایین ترین مفاهیم مثل Syscall (سیستم کال ها)‌ و زبان ماشین و ... سر و کار داره و درکی از دستور ما نداره(دستور ما فقط برای ما قابل فهمه و شل)‌.
اینجا شل مثل یه مترجم عمل میکنه و دستورات ما رو برای کرنل ترجمه میکنه و همچنین پاسخ های کرنل رو هم اصطلاحا Humanize (قابل فهم برای انسان)‌میکنه و تحویل ما میده.

📟Terminal

ترمینال نرم افزاری هستش که برای ارتباط با شل استفاده میشه.
در واقع اسم اصلی نرم افزار ترمینال نیست بلکه Terminal emulator هستش و ترمینال اصلی بر میگرده به زمان های خیلی گذشته و کامپیوتر های اولیه (که خب واردش نمیشم).
ترمینال ها قابلیت ها و ابزار های مختلفی رو در اختیار کاربر میگذارن تا کار با شل ها راحت تر باشه.اما اصل کاری که ترمینال انجام میده اینه که شل رو برای ما به ارمغان میاره چون شل چیزی نیست که سرچش کنی یا بگردی روی آیکونش کلیک کنی باز شه!(یه مقدار توصیف این که چیه حدقل تو سیستم های گرافیکی پیچیدست ولی اصل داستان اینه که ترمینال عین یه shortcut میمونه و شل رو تو خودش جا میده)

🔠CLI

این یکی از همه راحت تره :)
هر چیزی که محیط گرافیکی نداره و همه چی اصطلاحا Text based هستش رو میگن محیط CLI یا Command Line Interafce مثل ترمینال , شل یا حتی ابزار هایی مثل Vim یا Nano که تو محیط CLI اجرا میشن!

🫵Command Line

کامند لاین تعاریف مختلفی داره و بسته به اینکه دارید کجا ازش یاد میکنید میتونه به چیز های نختلفی اشاره کنی. ولی در کل به هر محیطی که یه shell prompt داره و آمادست که یه دستور ازت بگیره و بعد از اتمام عملیات دستور دوباره با shell prompt یه دستور ازت بگیره رو میگن Command Line.
حتی از اسمش هم مشخصه دیگه خط فرمان :)