11 دستور کنسول که هر توسعه دهنده باید بداند

۱۱ دستور کنسول که هر توسعه دهنده باید بداند

خط فرمان زندگی ما را بسیار آسانتر می کند زیرا می توانیم چندین کار روزمره را به صورت خودکار انجام دهیم و همه چیز را روان تر کنیم. به جای کلیک کردن در رابط کاربری گرافیکی (GUI) ، می توانیم چند دستور را فراخوانی کنیم و آن کار را انجام دهیم.

پوسته یونیکس (Unix shell) یک مفسر خط فرمان یا Shell است که یک واسط کاربر خط فرمان را برای سیستم عامل های یونیکس و شبه-یونیکس محیا می‌کند. یک یونیکس شل در واقع یک زبان اسکریپت نویسی و یک واسط خط فرمان تعاملی است که همچنین توسط خود سیستم عامل برای کنترل اجرای سیستم استفاده می‌شود.

هر سیستم عامل لینوکس یا مبتنی بر Mac دارای یک خط فرمان است که به صورت پیش فرض نصب شده است، معمولاً تحت عنوان “ترمینال” شناخته می شود. خط فرمان (CLI) به ما امکان می دهد تا به راحتی فایل ها را جا به جا کنیم و تغییر نام دهیم، داده ها را مرتب کنیم و در پوشه های کامپیوتر جا به جا شویم.

پس از این مقدمه و بدون حرف بیشتر، ۱۱ ترفند خط فرمان را معرفی می کنیم که می تواند زندگی شما را آسان تر کند.


اول- grep

$ grep "some string" file

دستور grep درون هر فایلی را برای یافتن یک الگو جستجو می کند. همچنین الگوهای شامل کاراکتر خط جدید (newline) را نیز جستجو می کند و در نهایت هر خطی که با الگوی داده شده منطبق باشد را در خروجی نمایش می دهد.

Using the grep command to find all React keywords in a file
Using the grep command to find all React keywords in a file

با استفاده از گزینه i- می توانیم جستجو را بدون در نظر گرفتن کوچک و بزرگ بودن حروف انجام دهیم. به عنوان مثال دستور زیر با کلمات “REACT”، “REact” و “react” منطبق می شود.

$ grep -i "REact" file

اگر بخواهیم تعداد خطوطی که با رشته/الگوی داده شده منطبق می شوند را مشخص کنیم می توانیم از گزینه c- که معرف count است، استفاده نماییم.

$ grep -c "react" index.js
Counting the times the word “react” pops up in a life
Counting the times the word “react” pops up in a life

یک کمیک جالب و آموزنده در مورد دستور grep در اینترنت پیدا کردم که برای شما قرار دادم.

an educational comic about the grep command
Source: Wizard Zines

علاوه بر این، دستوراتی همچون egrep و fgrep وجود دارند که به ترتیب همان کار دستورات grep -E و grep -F را انجام می دهند. این نوع دستورات منسوخ شده اند و تنها برای حفظ قابلیت سازگاری با گذشته (backward compatibility) ارائه شده اند.

کارهای زیادی می توان با استفاده از دستور grep انجام داد. برای مطالعه عمیق تر مستندات آن را مطالعه نمایید.


دوم- ls

$ ls

دستور ls فایل ها و پوشه های موجود در مسیر جاری را لیست می کند. اگر مسیر داده شده به این دستور یک فایل باشد، اطلاعات آن فایل بر اساس گزینه های انتخابی نمایش داده می شوند. اگر مسیر داده شده یک پوشه باشد، اطلاعات فایل ها و زیرپوشه های درون آن نمایش داده می شوند.

Using the ls command to show all files in the current directory
Using the ls command to show all files in the current directory

همانطور که متوجه شده اید، فایل ها با رنگ خاکستری و پوشه ها با رنگ مایل به آبی نمایش داده شده اند. این به ما کمک می کند تا به آسانی بین آنها تمایز قائل شویم.


سوم- pwd

$ pwd
Printing out the current working directory (pwd)
Printing out the current working directory (pwd)

دستور pwd یک دستور خط فرمان سودمند است که مسیر جاری را نمایش می دهد. خروجی مسیر کامل سیستم دایرکتوری کار فعلی را به خروجی استاندارد چاپ می کند. به طور پیش فرض ، دستور pwd پیوندها (symlinks) را نادیده می گیرد ، اگرچه مسیر فیزیکی کامل پوشه جاری با استفاده از یک گزینه نشان داده می شود.


چهارم- cat

$ cat somefile.js
Displaying content of a file with cat
Displaying content of a file with cat

دستور cat دارای سه عملکرد مرتبط با فایل های متنی است:

  • نمایش فایل متنی
  • ترکیب چند فایل متنی
  • ایجاد یک فایل جدید

رایج ترین استفاده از cat، خواندن محتوای فایل ها است و cat اغلب راحت ترین برنامه برای این منظور است.

در مثال زیر ، خروجی استاندارد cat با استفاده از عملگر تغییر مسیر خروجی (که توسط یک براکت زاویه ای با اشاره به سمت راست نشان داده می شود) به فایل دوم هدایت می شود:

$ cat somefile > somefile2
Creating files with cat
Creating files with cat

پنجم- echo

$ echo "some text"

دستور echo در لینوکس برای نمایش یک خط از متن یا رشته ای که به عنوان آرگومان به آن داده می شود، کاربرد دارد. دستور echo جزئی از دستورات داخلی (built-in) در لینوکس است و اغلب در اسکریپت های shell و یا فایل های batch برای نمایش وضعیت روی صفحه نمایش یا ثبت در یک فایل استفاده می شود.

echo

ششم- touch

$ touch somefile

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

Creating a new file with touch
Creating a new file with touch

توجه کنید که در مثال بالا چطور از دستور touch برای ایجاد فایل و از دستور cat برای مشاهده محتوای آن استفاده کردیم. از آنجایی که فایل index2.js که به تازگی ایجاد کردیم، خالی است، دستور cat چیزی برنمی گرداند.

تفاوت اصلی بین دستورهای cat و touch به شرح زیر است:

  • cat برای ایجاد فایل با محتوا استفاده می شود.
  • touch برای ایجاد فایل بدون محتوا و یا برای ایجاد فایل های خالی استفاده می شود.

هفتم- mkdir

$ mkdir some-directory

همانطور که حدس زده اید، mkdir در مسیر فعال فعلی یک دایرکتوری خالی جدید ایجاد می کند. به جای اینکه در ویرایشگر متن یا GUI خود کلیک کنید، از این دستور برای ایجاد پوشه های جدید استفاده کنید.

Creating a new directory with mkdir
Creating a new directory with mkdir

نکته: توجه کنید که چگونه می توانیم با دستور قبلی ls داخل دایرکتوری را نگاه کنیم.

هفتم-الف- rm

$ rm someFile

rm مخفف remove است، که دقیقاً آنچه را که می گوید انجام می دهد. حذف می کند یا به عبارت دیگر ، یک فایل را پاک می کند.

Removing a file with the rm command
Removing a file with the rm command

به طور پیش فرض، دستور rm پوشه ها را حذف نمی کند. برای حذف پوشه ها باید پرچم rf- را به آن اضافه کنید.

$ rm -rf some-directory
Removing a directory with the rm command (notice we’re passing the flag to remove a directory)
Removing a directory with the rm command (notice we’re passing the flag to remove a directory)

نکته: دستور مثال قبل پوشه را بدون قید و شرط حذف می کند، چه پوشه دارای محتوا باشد یا نباشد.

هفتم-ب- rmdir

$ rmdir some-directory

در صورت عدم وجود محتوا در یک پوشه، دستور rmdir آن پوشه را حذف می کند.

Removing an empty directory with rmdir
Removing an empty directory with rmdir

هشتم- tail

$ tail somefile

دستور tail یک فایل را می خواند و بخش انتهایی آن را به خروجی می فرستد.

Output the last num lines, instead of the default (10)
Output the last num lines, instead of the default (10)

دستور tail هنگام ارائه گزارش خرابی یا گزارش های سابقه قبلی مفید است. در اینجا مثالی از مفید بودن آن هنگام کار با پرونده های لاگ آورده شده است.

# tail /var/log/messages
Mar 20 12:42:22 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:24 hameda1d1c avahi-daemon[2027]: Registering new address record for fe80::4639:c4ff:fe53:4908 on eth0.*.
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPACK from 10.76.198.1 (xid=0x280436dd)
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.76.199.87.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: New relevant interface eth0.IPv4 for mDNS.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Registering new address record for 10.76.199.87 on eth0.IPv4.
Mar 20 12:42:30 hameda1d1c NET[4385]: /sbin/dhclient-script : updated /etc/resolv.conf
Mar 20 12:42:30 hameda1d1c dhclient[4334]: bound to 10.76.199.87 -- renewal in 74685 seconds.
Mar 20 12:45:39 hameda1d1c kernel: usb 3-7: USB disconnect, device number 2

نهم- wget

$ wget someurl

GNU wget یک بسته نرم افزاری رایگان برای دریافت فایل از طریق پروتکل های http, https, ftp و ftps است که از پرکاربردترین پروتکل های اینترنت هستند. wget یک ابزار خط فرمان غیر تعاملی است بنابراین به آسانی می توان آن را در اسکریپت ها، فایل های CRON و یا ترمینال فراخوانی نمود.

wget to fetch information about a webpage
wget to fetch information about a webpage

GNU Wget دارای ویژگی های بسیاری برای بازیابی فایل های بزرگ و یا ایجاد mirror از کل وب سایت یا سایت های FTP است، از جمله:

  • می توانید دانلودهای متوقف شده را با استفاده از REST و RANGE از سر بگیرید
  • می توانید از wild card در نام فایل ها استفاده نمایید
  • فایل های پیام مبتنی بر NLS برای بسیاری از زبان های مختلف
  • در صورت نیاز لینک های absolute موجود در اسناد دانلود شده را به لینک های relative تبدیل می کند تا اسناد به صورت محلی بتوانند به هم لینک داشته باشند
  • در اکثر سیستم عامل های مشابه UNIX و همچنین Microsoft Windows اجرا می شود
  • پشتیبانی از پروکسی HTTP
  • پشتیبانی از HTTP cookies
  • ارتباط HTTP پایدار را پشتیبانی می کند
  • انجام عملیات بدون نظارت / پس زمینه
  • برای تعیین اینکه آیا اسناد در هنگام mirror کردن مجدداً نیاز به دانلود دارند یا نه، از Timestamp محلی فایل استفاده می کند
  • GNU Wget تحت مجوز GNU General Public License توزیع می شود.

برای اطلاعات بیشتر اسناد رسمی GNU را بخوانید.


دهم- find

$ find path -name filename

دستور find به شما امکان می دهد به سرعت یک فایل یا پوشه را بیابید. وقتی در حال کار روی یک پروژه بزرگ هستید که صدها فایل و پوشه مختلف دارد، استفاده از این دستور مفید است.

Finding all files with the name of index.js
Finding all files with the name of index.js

جستجوی فایل هایی از نوع خاص

دستور find همچنین به شما امکان می دهد یک نوع خاص فایل ها را در یک پوشه (و زیرمجموعه های آن) جستجو کنید. به عنوان مثال، دستور زیر تمام فایل های .js را در پوشه کاری فعلی شما جستجو می کند.

$ find . -name "*.js"
Finding all .js files in the components directory
Finding all .js files in the components directory

یازدهم- mv

$ mv somefile /to/some/other/path

دستور mv فایل ها یا دایرکتوری ها را از یک مکان به مکان دیگر منتقل می کند. دستور mv از انتقال فایلهای تکی، چندین فایل و پوشه ها پشتیبانی می کند.

Moving the some-directory from components to utils directory
Moving the some-directory from components to utils directory

منبع: Here Are 11 Console Commands Every Developer Should Know
ترجمه: سیدمحمدحسین طباطبایی بالا

دیدگاهتان را بنویسید

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