آموزش جامع دستورات Bash در محیط GIT Bash - قسمت اول

Bash Cheat Sheet for GIT Bashتوجه: این مقاله به مرور زمان، ویرایش و یا تکمیل می‌شود!تقاضا: در صورتی که با مشکل تایپی، دستوری و یا مفهومی در این مقاله برخورد کردید، از شما دوست عزیز و گرامی، صمیمانه تقاضا می‌کنم که اینجانب را مطلع کرده، تا نسبت به تصحیح و یا تکمیل آن، در اسرع وقت، اقدام نمایم.با احترام و تشکرداریوش تصدیقیکلیه اطلاعات تماس: https://DTAT.irنسخه مقاله: ۱.4 - تاریخ بروزرسانی: ۱۴۰۲/۰۵/۰۵نکته مهم: دوستان عزیز و گرامی، هر چند که به بهانه آموزش GIT، این دستورات (Bash Commands) را در محیط GIT Bash، و در سیستم‌عامل ویندوز آموزش می‌دهیم، ولی باید توجه داشته باشید که این دستورات، در تمام محیط‌های Bash، و در تمام سیستم‌عامل‌هایی مانند لینوکس (Linux) و مک (Mac)، کاملا یکسان بوده، و هیچ تفاوتی ندارند!برای نمایش فایل‌ها و پوشه‌ها، از دستور ذیل استفاده می‌کنیم:lsبا استفاده از دستور فوق، فایل‌ها و پوشه‌ها، کنار هم نمایش داده می‌شوند.نکته: در صورتی که در پوشه جاری، فایل یا پوشه‌ای به صورت مخفی (Hidden) باشد، دستور فوق آن‌را نمایش نمی‌دهد.نکته مهم: در صورتی که بخواهیم در محیط‌های Linux و یا Mac، از دستورات Bash، استفاده نماییم، باید دقت داشته باشیم که این دستورات کاملا Case Sensitive می‌باشند و اگر مثلا دستور فوق را به شکل ذیل (LS) بنویسیم، قطعا با خطا مواجه خواهیم شد!ولی از آنجایی که محیط GIT Bash، در سیستم‌عامل Windows اجرا می‌شود، استثنائا، بزرگی و کوچکی دستورات اهمیتی ندارند! و ضمن آن‌که هیچ خطایی نمی‌دهد، به درستی نیز اجرا می‌شوند! ولی چون می‌خواهیم کاملا استاندارد پیش برویم، قویا توصیه می‌گردد که تمامی دستورات را در همه محیط‌های Bash، به صورت Lower Case (با حروف کوچک) نوشته، تا در محیط‌هایی مانند Linux و Mac دچار مشکل نشویم!LSبرای نمایش فایل‌ها و پوشه‌ها، به صورت لیستی (لیست‌وار) (زیر هم)، از دستور ذیل استفاده می‌کنیم:ls -lبرای نمایش همه فایل‌ها و پوشه‌ها، حتی فایل‌ها و پوشه‌هایی که مخفی هستند، از دستور ذیل استفاده می‌کنیم:ls --allنکته مهم: اصطلاحا به عباراتی که در مقابل دستورات نوشته می‌شوند، پارامتر (Option) گفته می‌شود. به عنوان مثال حرف (l) و یا کلمه (all)، در دو دستور فوق، به عنوان پارامترهای دستور ls می‌باشند. باید دقت داشته باشیم نه تنها در محیط‌های Linux و Mac، بلکه در محیط Windows و در پنجره GIT Bash نیز، این پارامترها Case Sensitive می‌باشند! لذا حتی اگر در سیستم‌عامل Windows و در پنجره (محیط) GIT Bash، دستورات فوق را به شکل ذیل بنویسیم، با خطا مواجه خواهیم شد:ls -L ls --ALLنکته مهم: به طور کلی، در محیط Bash، یک رویه عمومی وجود دارد! و آن هم این است که برای بعضی از پارامترها مانند all، به جای آن‌که دو تا DASH و به صورت -- نوشته و سپس نام پارامتر را به صورت کامل بنویسیم، می‌توانیم یک DASH نوشته و ابتدای حرف آن پارامتر را بنویسیم! لذا می‌توانیم به جای دستور ls --all، از دستور ذیل استفاده نماییم:ls -aبرای نمایش همه فایل‌ها و پوشه‌ها، حتی فایل‌ها و پوشه‌هایی که مخفی هستند، و به صورت لیستی، از دستور ذیل استفاده می‌کنیم:ls -a -lنکته: معمولا ترتیب نوشتن پارامترها اهمیتی ندارد! لذا می‌توانیم دستور فوق را به صورت ذیل نیز بنویسیم:ls -l -aنکته: معمولا زمانی که می‌خواهیم از دو یا چند پارامتر تکی استفاده نماییم، می‌توانیم آن‌ها را در هم ادغام نماییم! لذا می‌توانیم دو دستور فوق را به یکی از دو شکل ذیل، ساده‌سازی نماییم:ls -al ls -laدستور بسیار کاربردی در محیط Bash وجود دارد به نام help، می‌توانیم این دستور را نوشته و سپس دستوری که پارامترهای آن‌را نمی‌دانیم و یا به آن‌ها مسلط نیستیم را بعد از آن نوشته، تا توضیحات مناسبی به ما ارائه دهد:help cd help lsنکته مهم: در صورتی که دستور (روش) فوق، راهنمایی را یافت نکرد! می‌توانیم ابتدا دستور مورد نظر را نوشته و سپس از پارامتر help برای راهنمای دستور استفاده نماییم:ls --helpدر محیط ویندوز، ما حداقل یک (:C) یا چند Drive داریم. در صورتی که مثلا در درایو :C قرار داشته باشیم و بخواهیم که وارد درایو :D و سپس وارد پوشه MyFolder‌ شویم، از دستور ذیل استفاده می‌کنیم:C:\> cd D:\MyFolderولی باید دقت داشته باشیم که در محیط Shell، مفهومی به نام Drive وجود ندارد (بی‌معنا است)! و باید فرض کنیم که همه درایوها از یک مسیر Root یا (/) آغاز می‌شوند! لذا در صورتی‌که در درایو :C و یا در هر مسیر دیگری قرار داشته باشیم و بخواهیم که وارد درایو :D و سپس وارد پوشه MyFolder شویم، باید از دستور ذیل استفاده نماییم:$: cd /d/MyFolderنکته: در محیط Windows به عبارت ابتدایی مثلا <\:C و یا در محیط Shell به عبارت :$، اصطلاحا Prompt گفته می‌شود.در تمام سیستم‌عامل‌ها (Window, Linux, Mac)، زمانی که یک کاربر (User) ایجاد می‌کنیم، به طور اتوماتیک یک Home Directory برای کاربر ایجاد می‌شود، لذا در زمان ورود به محیط Shell لینوکس و یا Mac و یا حتی در سیستم‌عامل ویندوز، زمانی که وارد محیط GIT Bash می‌شویم، به طور اتوماتیک وارد Home Directory خودمان خواهیم شد، که در محیط ویندوز، معمولا این آدرس به صورت ذیل می‌باشد:C:\Users\[USERNAME]نکته مهم: سال‌هاست که اکثر Linux کارهای عزیز و گرامی، با تمام دقت، وسواس و توان خود، در مقالات، جزوات و کتاب‌ها، جستجو و کندوکاو می‌کنند! تا اگر شخصی (به عمد یا به سهو) نوشته است: سیستم‌عامل لینوکس، به وی تذکر دهند! که Linux، یک سیستم‌عامل نیست! و صرفا یک توزیع گنو می‌باشد! باید این عزیزان دقت داشته باشند که اینجانب، صرفا می‌خواهم برای عاشقان ویندوز، به زبان ساده، محیط و دستورات سیستم‌عامل لینوکس را آموزش داده، تا شاید این عزیزان نیز، با این سیستم‌عامل آشتی کرده و کم‌کم با آن کار کنند! و چرندیاتی مثل توزیع و گنو و... ممکن است که آن‌ها در ابتدا گیج کرده و دلسرد نماید! لذا امیدوارم که در این مقاله و مقالاتی از این دست، شاهد چنین افاضاتی نباشیم!برای این‌که ببینیم، دقیقا در چه مسیری قرار داریم، از دستور ذیل استفاده می‌کنیم:pwdدستور pwd، مخفف Print Working (Home) Directory می‌باشد.برای شروع می‌خواهیم در درایو :C، یک پوشه به نام learning_git ایجاد نماییم:ابتدا وارد درایو :C شده:cd /cو سپس از دستور ذیل mkdir برای ایجاد پوشه‌ای به نام learning_git استفاده می‌کنیم:mkdir learning_gitنکته: دستور mkdir، مخفف Make Directory می‌باشد.برای ورود به پوشه learning_git، از دستور cd استفاده می‌کنیم:cd learning_gitاگر فارغ از این‌که در کجا قرار داریم، بخواهیم مستقیما وارد این پوشه شویم، با توجه به نکاتی که تاکنون فراگرفته‌ایم، می‌توانیم از دستور ذیل استفاده نماییم:cd /c/learning_gitنکته: دستور cd، مخفف دستور Change Directory می‌باشد.اگر داخل پوشه learning_git بوده و بخواهیم یک مرحله به عقب برگردیم، یعنی به درایو :C، از دستور ذیل استفاده می‌کنیم:cd ..نکته: بر خلاف سیستم‌عامل DOS، نباید دو نقطه (..) را به دستور cd، بچسبانیم!با توجه به نکاتی که تاکنون مطرح گردید، اگر بخواهیم به ریشه (Root) برویم، باید از دستور ذیل استفاده نماییم:cd /نکته: همان‌طور که قبلا مطرح گردید، مفهوم ریشه (Root) صرفا در سیستم‌عامل‌های لینوکس و مک معنی داشته و در واقع در سیستم‌عامل ویندوز، بی‌معنا می‌باشد! ولی استثنائا در محیط GIT Bash، تا حدی معنا پیدا می‌کند!نکته: بر خلاف سیستم‌عامل DOS، نباید (/) را به دستور cd، بچسبانیم! و باید قبل از (/) یک فاصله بنویسیم.برای این‌که مجددا وارد پوشه Home Directory شویم، می‌توانیم یا از دستور ذیل استفاده کرده:cd /c/users\[USERNAME]و یا به سادگی، یکی از دستورات ذیل استفاده نماییم:cd cd ~نکته: باید دقت داشته باشیم که بعد از دستور cd، حتما یک فاصله قرار دهیم.برای ورود به مسیر قبلی، می‌توانیم از دستور ذیل استفاده نماییم:cd -به عنوان مثال، فرض کنید که ابتدا در مسیر Home Directory یا همان (~) قرار داشته و با استفاده از دستور ذیل به پوشه learning_git در درایو :C می‌رویم:cd /c/learning_gitحال برای ورود به مسیر قبلی (Home Directory) می‌توانیم به راحتی از دستور - cd استفاده نماییم.برای پاک کردن صفحه نمایش، می‌توانیم یا از دستور ذیل استفاده کرده:clearو یا از دکمه‌های ترکیبی CTRL + l استفاده نماییم.زمانی که ما در محیط Bash، اقدام به نوشتن دستورات مختلف می‌کنیم، این دستورات در یک History، قرار می‌گیرند، و ما می‌توانیم به راحتی، و با استفاده از دکمه‌های Arrow Keys، بالا و پایین، دستورات قبلی را مشاهده کرده و در صورت تمایل از آن‌ها استفاده نماییم.در صورتی که بخواهیم، فهرست همه این دستورات ذخیره شده در History را مشاهده نماییم، دستوراتی که در Session جاری، اجرا کرده‌ایم! می‌توانیم از دستور ذیل استفاده نماییم:historyبرای پاک کردن این History، می‌توانیم از دستور ذیل استفاده نماییم:history -cمعمولا در محیط Shell، قابلیت Auto Complete وجود دارد! این بدان معنا است که می‌توانیم مثلا برای اجرای دستور history، چند حرف آن‌را (مثلا his) را نوشته و سپس از دکمه Tab برای تکمیل بقیه حروف استفاده نماییم.نکته: اگر چند حرف، از یک دستور (یا نام فایل یا پوشه) را نوشته و سپس دکمه Tab‌کیبورد را بزنیم، در صورتی که دستورات زیادی (بیش از یک دستور/فایل/پوشه) وجود داشته باشد که با این حروف شروع می‌شوند، فهرستی از تمام این دستورات/فایل‌ها/پوشه‌ها، ظاهر می‌گردد! برای تست این موضوع، در مقابل Prompt، حروف wh را نوشته و سپس Tab را می‌زنیم، خواهیم دید که هشت دستور/فایل را به ما نمایش می‌دهد که همگی با حروف wh آغاز شده‌اند.برای این‌که ببینیم که با چه کاربری (Account)، در حال حاضر، Login کرده‌ایم، از دستور ذیل استفاده می‌کنیم:whoamiبرای جستجوی یک فایل، از دستور where استفاده می‌کنیم. برای تست این دستور، دو دستور ذیل را تایپ نمایید:where notepad where bashدستور فوق‌العاده‌ای به نام aliasفرض کنید که ما به یک سری از دستورات محیط DOS/Windows، عادت کرده‌ایم! و معادل‌سازی آن‌ها در ذهن ما، کمی دشوار می‌باشد، در این صورت می‌توانیم از دستور alias برای حل این مشکل استفاده نماییم! مثلا اکثر ما شاید عادت داشته باشیم که از دستور cls برای پاک کردن صفحه نمایش استفاده نماییم و شاید به کرات این دستور cls را می‌نویسیم و با خطا مواجه می‌شویم! حال می‌توانیم به محیط Shell بگوییم، که هرگاه ما از دستور cls استفاده می‌کنیم، منظورمان دستور clear می‌باشد. برای این کار از دستور ذیل استفاده می‌کنیم:alias cls='clear'یا فرض کنید که در اکثر موارد، علاقه داریم که فهرست همه فایل‌ها و پوشه‌ها را به صورتی لیستی (لیست‌وار) مشاهده کرده و فایل‌ها و پوشه‌های مخفی را نیز ببینیم، خب برای این منظور، همانطور که در آموزش‌ها فوق بدان اشاره گردید، باید از دستور ls -la استفاده نماییم، ولی شاید دوست داشته باشیم که به محیط Shell اعلام کنیم که هرگاه از دستور dir، استفاده می‌کنیم، منظورمان، همان دستور ls -la می‌باشد. برای این منظور از دستور ذیل استفاده می‌کنیم:alias dir='ls -la'نکته: استثنائا در محیط GIT Bash، دستور dir دقیقا معادل دستور ls عمل کرده و ما با استفاده از دستور فوق، رفتار پیش‌فرض آن‌را تغییر می‌دهیم.برای مشاهده کلیه Alias های تعریف شده، از دستور ذیل استفاده می‌کنیم:aliasبرای این‌که یک Alias از قبل تعریف شده را حذف نماییم (مثلا cls)، از دستور ذیل استفاده می‌کنیم:unalias clsحذف فایل یا پوشهبرای حذف یک یا چند فایل (با توجه به الگویی که اعلام می‌شود) می‌توانیم از دستورات ذیل استفاده نماییم:rm x1.txt rm x1.txt x2.txt x3.txt rm *.txt rm *.t* rm x*.txt rm x?.txtسوال: حدس بزنید که دستور ششم، دقیقا چه عملی را انجام می‌دهد و فرق آن با دستور پنجم چیست؟برای حذف یک پوشه (خالی)، می‌توانیم یکی از دستورات ذیل را استفاده نماییم:rmdir [FolderName] rm -d [FolderName]برای حذف یک پوشه که خالی نمی‌باشد، می‌توانیم از دستور ذیل استفاده نماییم:rm -r [FolderName]نکته: پارامتر r، مخفف Recursive (تو در تو) می‌باشد.برای حذف یک پوشه که خالی نمی‌باشد، و ممکن است که در زمان حذف آن، خطایی مبنی بر این‌که این فایل/فایل‌هایی درون این پوشه، توسط شخص/سرویس دیگری در حال استفاده می‌باشد، برخورد نماییم، می‌توانیم یکی از دستورات ذیل را استفاده نماییم:rm -r -f [FolderName] rm -f -r [FolderName] rm -rf [FolderName] rm -fr [FolderName]نکته: پارامتر f، مخفف Force می‌باشد.یک دستور هیچان‌انگیز و طلائیاین دستور، در دوره آموزش جامع GIT، بسیار استفاده خواهد شد! فرض کنید که می‌خواهیم همه فایل‌ها و پوشه‌ها، اعم از آن‌که پوشه‌ها خالی بوده و یا پر باشند، و اعم از آن‌که فایل‌ها و پوشه‌های موجود در پوشه جاری، مخفی بوده و یا مخفی نباشند را صرفا با یک دستور حذف کرده و اصطلاحا پوشه جاری را کاملا clean نماییم. برای این منظور می‌توانیم از دستور ذیل استفاده نماییم:rm -rdf {*,.*}چون دستور فوق، شاید کمی طولانی بوده و ممکن است که یا یادمان برود و یا در نگارش آن، بی‌دقتی کنیم! می‌توانیم با استفاده از دستور alias، یک معادل جذاب برای آن ایجاد نماییم:alias clean='rm -rdf {*,.*}'جهت مشاهده فیلم‌های آموزشی رایگان در خصوص GIT، و نیز ثبت‌نام در دوره آموزش جامع GIT با استفاده از Command Line، به نشانی ذیل مراجعه نمایید:https://t.me/IranianExpertsپایان