ترمینال (terminal) یکی از مهم ترین چیزهایی است که برنامه نویسان حرفه ای با آن کار می کنند. اگر در دنیای وب خارجی گشت و گذاری داشته باشید می دانید که تمام بحث ها چند خطی کد ترمینال دارند. یادگیری دستورات terminal نیز به شما کمک فراوانی می کند چرا که بعضی از کارهای سخت تبدیل به یک خط کد می شوند! در این مقاله برخی از دستورات Unix را برایتان آماده کرده ایم که همه ی توسعه دهندگان حرفه ای بلد هستند و شما نیز باید از آن ها اطلاع داشته باشید.
Curl ابزار بسیار مناسبی برای ایجاد درخواست بر بستر HTTP و HTTPS و FTP و پروتکل های دیگر است. Curl می تواند فایل ها را دانلود کند، response header ها را چک کند و به داده های مختلف دسترسی داشته باشد. در دنیای توسعه ی وب معمولا از curl برای تست کردن Connection های مختلف و RESTful API ها استفاده می شود. به مثال زیر توجه کنید:
# Fetch the headers of a URL. curl -I http://google.com HTTP/1.1 302 Found Cache-Control: private Content-Type: text/html; charset=UTF-8 Referrer-Policy: no-referrer Location: http://www.google.com/?gfe_rd=cr&ei=0fCKWe6HCZTd8AfCoIWYBQ Content-Length: 258 Date: Wed, 09 Aug 2017 11:24:01 GMT # Make a GET request to a remote API. curl http://numbersapi.com/random/trivia 29 is the number of days it takes Saturn to orbit the Sun.
البته واضح است که دستورات Curl می توانند خیلی پیچیده تر از این حرف ها شوند؛ به طور مثال صدها گزینه ی خاص برای کنترل header ها، کوکی ها، احراز هویت و لاگین و غیره وجود دارد. اگر دوست دارید بیشتر در مورد این دستور بدانید به Everything curl سری بزنید. در این سایت دستور curl تمام و کمال توضیح داده شده است.
Tree یکی از دستورات پرکاربرد unix است که محتویات یک دیرکتوری را به صورت بصری نشان می دهد. Tree به صورت بازگشتی عمل می کند؛ در هر مرحله از nesting وارد می شود و یک شکل درختی از محتویات آن را نمایش می دهد. با این کار شما می توانید به راحتی فایل های مورد نظر خود را پیدا کنید. به این مثال توجه کنید:
tree . ├── css │ ├── bootstrap.css │ ├── bootstrap.min.css ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 └── js ├── bootstrap.js └── bootstrap.min.js
همچنین با الگوهایی شبیه REGEX می توانید یافته ها را فیلتر کنید و دنبال مورد خاصی بگردید:
tree -P '*.min.*' . ├── css │ ├── bootstrap.min.css ├── fonts └── js └── bootstrap.min.js
توضیحات بیشتر را از computerhope دریافت کنید.
Tmux از نظر فنی یک terminal multiplexer است و به زبان ساده کارش این است که چندین ترمینال مختلف را به یک session متصل می کند.
همچنین به شما اجازه می دهد که در ترمینال بین چندین برنامه جابجا شوید، صفحات و فضای کاری را تقسیم کنید (مانند تصویر بالا) و ترمینال های مختلف را به یک نشست متصل کرده و همگی را همگام با هم (sync) نگه دارید. Tmux استفاده ی خاصی در کار با remote server دارد چرا که به شما اجازه می دهد بدون لاگین شدن دوباره، tab جدیدی بسازید.
اطلاعات بیشتر در این صفحه
دستور du مخفف disk usage (استفاده از فضا) است. این دستور گزارشی وضعیت استفاده از فضا توسط دیرکتوری های ما ایجاد می کند. استفاده از آن ساده است و بازگشتی نیز کار می کند تا وارد هر زیر شاخه شده و سایز تک تک فایل ها را به ما برگرداند. از موارد استفاده ی du زمانی است که یکی از درایوهای شما فضای کافی ندارد اما شما نمی دانید چرا چنین اتفاقی افتاده است. آنگاه با دستور du می توانید سریعا نگاهی به فایل ها بیندازید تا بزرگترین پوشه یا فایل را پیدا کنید. مثال:
# Running this will show the space usage of each folder in the current directory. # The -h option makes the report easier to read. # -s prevents recursiveness and shows the total size of a folder. # The star wildcard (*) will run du on each file/folder in current directory. du -sh * 1.2G Desktop 4.0K Documents 40G Downloads 4.0K Music 4.9M Pictures 844K Public 4.0K Templates 6.9M Videos
البته دستور مشابه دیگری به نام df (مخفف disk free) وجود دارد و اطلاعاتی راجع به فضای خالی به ما می دهد، یعنی دقیقا برخلاف دستور du! برای مطالعه ی بیشتر به computerhope سری بزنید.
Git با اختلاف زیاد مشهورترین و پرکاربردترین سیستم مدیریت نسخه (version control system) است. Git یکی از مهم ترین عناصر طراحی مدرن در دنیای وب است و نمی توان آن را درون این لیست قرار نداد. با اینکه ابزارها و برنامه های متعددی برای کار با Git وجود دارند، اما اکثر برنامه نویسان ترجیح می دهند از Git به صورت native و داخل خود ترمینال استفاده کنند؛ git CLI بسیار قوی است و می تواند پیچیده ترین پروژه ها را نیز مدیریت کند.
کار با git نیاز به مقالات خودش را دارد بنابراین منتظر سری مقالات کار با git نیز باشید.
Tar ابزار پیش فرض unix برای کار با آرشیوها و فایل ها است. Tar به شما اجازه می دهد که چندین فایل را به سرعت درون یک فایل قرار دهید تا ذخیره و استفاده های بعدی از آن آسان تر شود:
tar -cf archive.tar file1 file2 file3
همچنین با استفاده از دستور x- می توانیم آرشیو های tar. را استخراج (extract) کنیم:
tar -xf archive.tar
البته توجه داشته باشید که اکثر فرمت های دیگر مانند zip یا rar با دستور tar
استخراج نمی شوند بلکه باید از دستوراتی مانند unzip استفاده شود.
بسیاری از سیستم های امروزی unix نسخه ی گسترده تری از tar به نام GNU tar را اجرا می کنند که می تواند فشرده سازی فایل ها را نیز انجام دهد:
# Create compressed gzip archive. tar -czf file.tar.gz inputfile1 inputfile2 # Extract .gz archive. tar -xzf file.tar.gz
اگر سیستم unix شما از این نسخه پشتیبانی نمی کند می توانید از gzip و zcat و compress برای کاهش حجم فایل هایتان استفاده کنید.
unix دستورات متعددی برای هش کردن دارد که md5sum و sha1sum نیز جزو آن هستند. دستورات hashing استفاده های مختلفی در برنامه نویسی دارند اما یکی از مهم ترین موارد چک کردن صحت و اعتبار فایل ها است. به طور مثال اگر یک فایل iso. را از منبع غیرمطمئنی دانلود کرده اید، احتمال دارد که فایل حاوی اسکریپت های مخرب باشد. برای حصول اطمینان می توانیم از این فایل iso یک هش مانند md5 تولید کنیم:
md5sum ubuntu-16.04.3-desktop-amd64.iso 0d9fe8e1ea408a5895cbbe3431989295 ubuntu-16.04.3-desktop-amd64.iso
حالا باید هش ایجاد شده را با هش معرفی شده توسط منبع مطمئن و نویسنده ی اصلی مقایسه کنید (مثلا UbuntuHashes).
Htop یک task manager بهتر و پیشرفته تر نسبت به top
است. Htop رابط کاربری پیشرفته و گزینه های متعددی برای زیر نظر گرفتن و کنترل پروسه های سیستمی دارد.
با اینکه Htop در ترمینال اجرا می شود اما از موس هم پشتیبانی می کند. به همین خاطر گشت و گذار در منوها، انتخاب پروسه ها و مرتب کردن آن ها بسیار ساده تر می شود. اطلاعات بیشتر در Htop.
لینک ها در unix مانند shortcut ها در ویندوز هستند و به شما اجازه می دهند که سریعا به برخی از فایل ها دسترسی داشته باشید. این لینک ها با استفاده از دستور ln
ساخته شده و دو نوع دارند: hard و symbolic. هر نوع برای موارد خاص به کار رفته و استفاده های خاصی دارد (مطالعه ی بیشتر)
مثال زیر یکی از روش های استفاده از لینک ها در unix است. فرض کنید یک دیرکتوری به نام scripts در دسکتاپ شما وجود دارد. درون این دیرکتوری پر از اسکریپت های bash شناخته شده است. هر بار که بخواهیم یکی از این اسکریپت ها را صدا بزنیم باید این کار را انجام دهیم:
~/Desktop/Scripts/git-scripts/git-cleanup
واضح است که این کار بسیار آزار دهنده است چرا که هر بار باید آدرس مطلق فایل را تایپ کنیم. به جای آن می توانیم یک symlink ایجاد کنیم (به آدرس usr/local/bin) تا اسکریپت ما را از تمام دیرکتوری ها قابل اجرا کند:
sudo ln -s ~/Desktop/Scripts/git-scripts/git-cleanup /usr/local/bin/
حالا فقط کافی است که ترمینال را باز کرده باشیم و نام اسکریپت خود را بنویسیم تا اجرا شود:
git-cleanup
با استفاده از دستور ssh
کاربران می توانند سریعا وارد یک هاست شده و به Unix shell آن دسترسی داشته باشند. این روش کار ما را بسیار ساده می کند چرا که میتوانیم دستورات مورد نظر را مستقیما از کامپیوتر خودمان روی سرور اجرا کنیم. برای اتصال تنها کافی است که آدرس ip یا url صحیح را وارد کنید. البته اگر دفعه ی اولی است که به یک سرور متصل می شوید از شما احراز هویت خواهد شد:
ssh username@remote_host
اگر می خواهید سریعا دستوری را بدون لاگین شدن روی سرور اجرا کنید می توانید به راحتی یک دستور را بعد از url بنویسید. دستور روی سرور اجرا شده و نتیجه به شما برمیگردد:
ssh username@remote_host ls /var/www some-website.com some-other-website.com
با استفاده از SSH کارهای زیادی می توان انجام داد (مانند ساخت tunnel و پراکسی ها یا امن کردن اتصال با استفاده از کلید های خصوصی و ...). برای اطلاعات بیشتر سری به این لینک بزنید.
Grep دستور پیش فرض unix برای پیدا کردن یک رشته درون یک متن است. ورودی خود را به صورت یک فایل را direct stream گرفته و محتوای آن را بر اساس یک regular expression فیلتر می کند، سپس هر چیزی که پیدا شده باشد به شما برگردانده می شود. استفاده ی اصلی این دستور هنگام کار با فایل های بزرگ است. ما در مثال زیر دستور grep
را با date
ترکیب کرده ایم تا درون یک log file بسیار بزرگ جست و جو کرده و خطاهای مربوط به امروز را در یک فایل جدید قرار دهیم:
// Search for today's date (in format yyyy-mm-dd) and write the results to a new file. grep "$(date +"%Y-%m-%d")" all-errors-ever.log > today-errors.log
دستور مشابه دیگری به نام sed نیز وجود دارد که بسیار پیشرفته تر از grep است و گزینه های بسیار بیشتری نیز دارد.
بسیاری از دستورات unix پس از اضافه کردن option های مختلف به آن ها بسیار طولانی می شوند. برای آنکه این دستورات را راحت تر به ذهن بسپارید می توانید برایشان نام مستعار (Alias) قرار دهید:
# Create an alias for starting a local web server. alias server="python -m SimpleHTTPServer 9000" # Instead of typing the whole command simply use the alias. server Serving HTTP on 0.0.0.0 port 9000 ...
تا زمانی که ترمینال باز باشد alias شما نیز در دسترس خواهد بود. اگر می خواهید این نام های مستعار دائمی باشند می توانید آن ها را در فایل bashrc. ذخیره کنید.
امیدوارم مقاله آموزش دستورات terminal به شما کمک کرده باشد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.