دستورهای ابتدایی Shell که هر توسعه دهنده ای باید بداند | راهنمای کاربردی

۶۷۲ بازدید
آخرین به‌روزرسانی: ۰۹ مهر ۱۴۰۲
زمان مطالعه: ۵ دقیقه
دستورهای ابتدایی Shell که هر توسعه دهنده ای باید بداند | راهنمای کاربردی

اگر حس می‌کنید به عنوان یک توسعه‌دهنده وابستگی زیادی به ابزارهای گرافیکی دارید، با ما همراه باشید تا شما را با برخی دستورهای ابتدایی Shell آشنا سازیم که موجب افزایش بهره‌وری شما در طی کار می‌شوند.

Pwd برای بازگشت نام دایرکتوری کاری

این راهنما را با دستوری آغاز می‌کنیم که به شما کمک می‌کند تا متوجه شوید، اینک در ترمینال در کجا ایستاده‌اید:

$ pwd
/Users/erik

ما در دایرکتوری خانگی خود قرار داریم، شما چطور؟

ls برای لیست کردن محتوای دایرکتوری

اکنون که متوجه شدیم در کدام دایرکتوری قرار داریم، نوبت آن رسیده که ببینیم در دایرکتوری جاری چه چیزهایی وجود دارند:

$ ls
AndroidStudioProjects     VirtualBox VMs
Applications              Desktop
Documents                 flutter
Downloads...

ممکن است در دایرکتوری جاری شما موارد زیادی برای نمایش وجود داشته باشند. دستور ls گزینه‌های زیادی برای ایجاد سهولت در فرایند کار دارد. برخی از رایج‌ترین گزینه‌ها به شرح زیر هستند:

  • l-: این گزینه موجب می‌شود که لیست با قالب‌بندی بلند نمایش یابد. مجموع اندازه‌های همه فایل‌ها در خروجی و یک خط قبل از لیست‌بندی بلند نمایش می‌یابد.
  • h-: این گزینه به همراه گزینه قبلی استفاده می‌‌شود و اندازه‌های فایل را به ترتیبی تبدیل می‌کند که خوانش آن برای ما راحت‌تر باشد، مثلاً عباراتی مانند 10G یا 42M را مشاهده می‌کنید.
  • a-: اختصاری برای عبارت «همه» (all) است و به این ترتیب همه فایل‌ها از جمله فایل‌های موجود در دایرکتوری‌های پنهان که نامشان با نقطه آغاز می‌شود، نیز لیست می‌شوند.

شما می‌توانید این گزینه‌ها را به ترتیبی که دوست دارید، ترکیب کنید:

$ ls -lha
total: 32
drwxr-xr-x+ 85 erik staff 2.7K May 27 11:11 .
drwxr-xr-x   6 root admin 193B Sep 29  2019 ..
-rw-r--r--   1 erik staff 2.1K Apr 15 11:06 .gitignore
-rw-r--r--   1 erik staff  25M May 26 15:44 image.zip
...

در مثال فوق حقوق دسترسی، مالک و گروه، اندازه فایل، آخرین تاریخ دست‌کاری داده‌ها و نام خود فایل را مشاهده می‌کنید.

در دو ردیف نخست، شاید متوجه چیز غریبی شده باشید و آن دو فایل با نام‌های (.) و (..) است:

  • فایلی که با یک نقطه (.) مشخص شده، در واقع دایرکتوری جاری است. این دایرکتوری در مجموع یک اندازه دارد که به تعداد و حجم فایل‌های موجود در دایرکتوری وابسته است.
  • مورد مشخص شده با دو نقطه (..) دایرکتوری والد دایرکتوری جاری است که این دایرکتوری درون آن قرار دارد.

این میانبرهای کارآمد می‌توانند در هر دستوری مورد استفاده قرار گیرند. اگر می‌خواهید محتوای دایرکتوری والد را ببینید می‌توانید از دستور /..ls استفاده کنید. حتی می‌توانید این موضوع را تکرار کنید و با استفاده از دستور زیر دو دایرکتوری بالاتر بروید:

ls../../

cd برای تغییر دایرکتوری

اکنون که می‌دانید در کجا ایستاده‌اید و چه فایل‌ها و دایرکتوری‌هایی در کنارتان وجود دارند، می‌توانید شروع به حرکت به اطراف بکنید. فرض کنیم پروژه‌های خود را در پوشه Projects ذخیره کرده‌اید. برای رفتن به آنجا می‌توانید از دستور زیر استفاده کنید:

$ cd Projects

اغلب پوسته‌ها (Shell) از تکمیل‌سازی خودکار پشتیبانی می‌کنند. کافی است شروع به وارد کردن چند حرف آغازین دایرکتوری یا فایل بکنید تا پیشنهادی به صورت خودکار عرضه شود. سپس می‌توانید با زدن کلید Tab پیشنهاد ارائه شده را تأیید کنید:

$ cd Pro<TAB key>

پوسته شما یا کلمه مورد نظرتان را به صورت خودکار تکمیل می‌کند و یا در صورت وجود چند دایرکتوری با آن نام معمولاً همه آن‌ها نمایش می‌یابند تا از بین آن‌ها یکی که مورد نظرتان است را انتخاب کنید.

cp برای کپی کردن

گاهی اوقات لازم می‌شود که برخی فایل‌ها را کپی کنیم. دستور cp این کار را برای ما انجام می‌دهد. این کار از طریق ایجاد یک فایل جدید و کپی کردن همه محتوای فایل قبلی به فایل جدید انجام می‌گیرد. برای مثال جهت کپی کردن فایل file1.txt به فایل جدید (برای نمونه برای پشتیبان گرفتن از آن) می‌توانید از دستور زیر استفاده کنید:

$ cp file1.txt file1.txt.bak

برای کپی کردن یک فایل به دایرکتوری دیگر می‌توانید از دستور زیر استفاده کنید:

$ cp file1.txt./backups/

در این جا /. به معنی دایرکتوری جاری است، بنابراین backups در دایرکتوری کاری کنونی قرار دارد.

دستورهای ابتدایی Shell

mv برای جابجایی فایل‌ها

اگر نیاز به جابجا کردن یک فایل باشد، می‌توانید از دستور mv بهره بگیرید. توجه کنید که جابجا کردن فایل همانند تغییر دادن نام یک فایل است. در واقع هیچ دستور خاصی برای تغییر دادن نام یک فایل وجود ندارد. استفاده از دستور mv تفاوت چندانی با دستور cp ندارد. بنابراین برای تغییر دادن نام یک فایل یا جابجا کردن آن می‌توانید به صورت زیر عمل کنید:

$ mv file1.txt file1.txt.bak

برای جابجایی یک فایل به دایرکتوری دیگر از دستور زیر استفاده کنید:

$ mv file1.txt./backups/

mkdir برای ساخت دایرکتوری

این دستور به سادگی یک دایرکتوری ایجاد می‌کند. برای ساخت یک دایرکتوری جهت ذخیره پروژه‌ها می‌توانید از دستور زیر استفاده کنید:

$ mkdir Projects

این دستور یک آرگومان ساده به صوت p- دارد که وقتی از آن استفاده کنید، هر دایرکتوری میانجی که وجود نداشته باشد نیز ایجاد خواهد شد. اگر می‌خواهید نخستین پروژه خود را به صورت مستقیم درون پوشه ‎$ mkdir Projects ایجاد کنید، می‌توانید به صورت زیر عمل کنید:

$ mkdir -p Projects/my_first_project

rmdir برای حذف دایرکتوری‌ها

rmdir مخالف mkdir است و یک دایرکتوری را حذف می‌کند. در زمان استفاده از این دستور نیز می‌توان از همان آرگومان p- که قبلاً اشاره شد استفاده کرد.

$ rm Projects

برای حذف دایرکتوری Projects و نخستین پروژه‌ای که در آن ساخته بودیم، از دستور زیر استفاده کنید:

$ rmdir -p Projects/my_first_project

حذف کردن یک دایرکتوری تنها زمانی قابل اجرا است که دایرکتوری خالی باشد. اگر می‌خواهید یک دایرکتوری که دارای محتوایی است را پاک کنید، باید از دستور rm استفاده کنید که در ادامه توضیح داده‌ایم.

rm

اینک وارد سرزمین خطرناکی می‌شویم! این دستور بسیار قدرتمند است و می‌تواند فایل سیستم شما را به طور بالقوه خراب کند. بنابراین باید با احتیاط از آن استفاده کنید. کار خود را با حذف یک فایل آغاز می‌کنیم:

$ rm file1.txt

این فایل دیگر وجود ندارد و هیچ سطل بازیافتی هم مانند آن چه در سیستم‌های عاملی مانند ویندوز یا مک مشاهده می‌کنید نخواهید دید. در ادامه همه فایل‌های موجود در دایرکتوری projects را که دارای پسوند txt. هستند پاک می‌کنیم. برای تطبیق یافتن دستور با چند فایل باید از یک الگو استفاده کنید:

$ rm Projects/*.txt

اگر می‌خواهید همه فایل‌های این دایرکتوری را حذف کنید، از دستور زیر بهره بگیرید:

$ rm Projects/*

الگوی ستاره (*) با همه چیز تطبیق می‌یابد.

اگر می‌خواهید یک هشدار در زمان اجرایی دستور نمایش یابد از گزینه i- استفاده کنید که از شما می‌خواهد تا عملیات حذف را تأیید کنید.

اکنون به عنوان مرحله نهایی تلاش می‌کنیم تا کل درخت دایرکتوری‌ها و فایل‌های داخل آن را پاک کنیم. به این منظور، باید از آرگومان r- استفاده کنیم که اختصاری برای عبارت «بازگشتی» (recursive) است. دستور rm –r گاهی اوقات نمی‌تواند برخی فایل‌های خاص را پاک کند یا به صورت مداوم از شما تقاضای تأیید می‌کند. در این موارد می‌توانید از گزینه f- استفاده کنید تا هر چیزی را که می‌تواند بدون سؤال و پاسخ پاک کند. با دستور زیر همه پروژه‌ها را حذف می‌کنیم:

$ rm -rf Projects

بدین ترتیب همه کارهای شما برای ابد پاک می‌شوند. بنابراین باید با دقت مضاعفی از این دستور استفاده کنید.

دستورهای cat ،‌less ،tail و head برای نمایش محتوای فایل‌ها

ما غالباً می‌خواهیم محتوای یک فایل را به صورت سریعی بازبینی کنیم. چندین روش به این منظور وجود دارند. شما می‌توانید روشی که برایتان مناسب است را انتخاب کنید:

  • cat – همه چیز را روی صفحه نمایش می‌دهد.
  • less – امکان اسکرول کردن فایل و حتی جستجو درون آن را فراهم می‌سازد.
  • tail – مانند دستور cat است، اما به صورت پیش‌فرض تنها 10 خط آخر را نمایش می‌دهد.
  • head – مانند دستور cat است، اما به صورت پیش‌فرض تنها 10 خط اول را نمایش می‌دهد.

هر دو دستور tail و head گزینه‌ای به صورت <n <num- دارند که به جای num یک عدد وارد می‌کنیم که تعداد خطوطی است که دوست داریم نمایش یابند.

Ctrl+r برای یافتن دستور قبلی

به یاد سپردن همه دستورها کار آسانی نیست و از این رو گاهی به سرعت دستوری را که دیروز یا هفته پیش وارد کرده‌ایم به خاطر نمی‌آوریم. برای یافتن این دستورها می‌توانید کلیدهای Ctrl+r کیبورد را زده و شروع به وارد کردن بخشی از دستور مورد نظر خود بکنید.

اگر آن چه که یافتید دقیقاً آن چیزی نبود که به دنبالش بودید، می‌توانید با زدن مجدد کلیدهای Ctrl+r به جستجوی خود ادامه بدهید. به این ترتیب دستورهای قبلی شما از تاریخچه دستورها بررسی می‌شوند.

سخن پایانی

از این که این مقاله با عنوان دستورهای ابتدایی Shell را برای مطالعه انتخاب کردیم متشکریم و امیدواریم مواردی که در این راهنما مطرح شدند، موجب ارتقای دانش شما در خصوص استفاده از محیط ترمینال شوند.

بر اساس رای ۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tech-explained
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *