ترکیب دستورات در لینوکس

"نمایش زنجیره‌سازی دستورات لینوکس با اپراتورهای مختلف"

۱۰ دستور زنجیره‌ای مفید در لینوکس با مثال‌های عملی

۱۰ دستور زنجیره‌ای مفید در لینوکس با مثال‌های عملی

در این مقاله، ۱۰ دستور زنجیره‌ای مفید در لینوکس با مثال‌های عملی معرفی می‌شوند. زنجیره‌سازی دستورات در لینوکس به شما این امکان را می‌دهد که چندین دستور را به‌صورت متوالی و ترکیبی اجرا کنید. این رویکرد با بهره‌گیری از دستورات زنجیره‌ای در لینوکس، مدیریت سیستم را کارآمدتر کرده و نیاز به مداخله دستی را کاهش می‌دهد.

با استفاده از دستور زنجیره‌ای لینوکس، می‌توانید اسکریپت‌های ساده و مؤثر بنویسید که در افزایش بهره‌وری شما تأثیرگذار خواهند بود. در این مقاله، علاوه بر معرفی دستورات زنجیره‌ای، مثال‌های کاربردی از دستورات لینوکس برای هر یک ارائه می‌شود. این دستورات به شما کمک خواهند کرد تا فرآیندهای خودکار در لینوکس ایجاد کنید و بار سیستم را کاهش دهید.

۱. دستور آند (&) – اجرای دستور لینوکس در پس‌زمینه

دستور ‘&’ در لینوکس به شما امکان می‌دهد دستورات را در پس‌زمینه اجرا کنید، به‌طوری‌که فرآیندها به‌صورت همزمان پیش بروند و ترمینال مسدود نشود. این روش در زنجیره‌سازی دستورات لینوکس بسیار مفید است، خصوصاً زمانی که چندین فرآیند به‌صورت موازی نیاز به اجرا دارند. استفاده از این دستور به شما این امکان را می‌دهد که بدون انتظار برای اتمام یک فرآیند، دستورات دیگری را در لینوکس به‌صورت همزمان اجرا کنید.

برای اجرای دستور ‘ping‘ در پس‌زمینه، از دستور زیر استفاده کنید:

ping google.com &

این دستور، فرآیند ping را در پس‌زمینه اجرا کرده و به شما اجازه می‌دهد که بلافاصله به ترمینال بازگردید و دستورات دیگری را وارد کنید.

پ.ن
آیا نیاز به خرید سرور مجازی ایران دارید؟ لطفا بر روی لینک اون کلیک کنید!

 ۲. دستور نقطه‌ویرگول (;) – اجرای چندین دستور به‌صورت متوالی در آموزش دستور زنجیره‌ای لینوکس

دستور نقطه‌ویرگول (;) به شما این امکان را می‌دهد که چندین دستور را در یک خط وارد کنید و این دستورات به‌طور متوالی اجرا خواهند شد.

برای مثال، دستور زیر را در نظر بگیرید:

apt update ; apt upgrade ; mkdir test
در این مثال، ابتدا دستور update اجرا می‌شود، سپس دستور upgrade و در نهایت دستور mkdir test برای ایجاد یک دایرکتوری جدید به نام test در دایرکتوری جاری اجرا خواهد شد.

 ۳. دستور AND (&&) – اجرای دستور دوم در صورت موفقیت دستور اول

دستور AND (&&) به این صورت عمل می‌کند که تنها در صورتی دستور دوم اجرا می‌شود که دستور اول با موفقیت اجرا شده باشد، یعنی وضعیت خروجی دستور اول برابر با ۰ باشد. این دستور برای بررسی وضعیت اجرای دستور قبلی بسیار مفید است.

برای مثال در آموزش دستور زنجیره‌ای لینوکس، اگر بخواهم به وب‌سایت poshtvarserver.com با استفاده از دستور links در ترمینال مراجعه کنم، اما قبل از آن نیاز دارم که بررسی کنم که آیا سرور فعال است یا خیر، می‌توانم از دستور AND به شکل زیر استفاده کنم:

ping -c 1 poshtvarserver.com && links poshtvarserver.com
در این مثال، ابتدا دستور ping بررسی می‌کند که آیا سرور قابل دسترسی است یا خیر. اگر پاسخ دریافت شود (یعنی دستور ping موفق باشد)، سپس دستور links اجرا می‌شود و وب‌سایت در ترمینال باز می‌شود.

 ۴. دستور OR (||) – اجرای شرطی دستورات در آموزش دستور زنجیره‌ای لینوکس

دستور OR (||) مشابه با عبارت else در برنامه‌نویسی است. این دستور به شما این امکان را می‌دهد که تنها در صورتی دستور دوم اجرا شود که دستور اول با شکست مواجه شود، یعنی وضعیت خروجی دستور اول برابر با ۱ باشد.

برای مثال، اگر بخواهم دستور apt update را از یک حساب غیر ریشه اجرا کنم و در صورتی که این دستور با شکست مواجه شود، دستور دوم links www.poshtvarserver.com اجرا خواهد شد، می‌توانم از دستور OR به شکل زیر استفاده کنم:

apt update || links poshtvarserver.com
در این مثال، اگر دستور apt update با موفقیت اجرا نشود (یعنی خطای ۱ دریافت کند)، دستور links اجرا خواهد شد و به وب‌سایت www.poshtvarserver.com منتقل می‌شوید.

 ۵. دستور NOT (!) – اجرای دستورات به جز موارد خاص

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

برای مثال، اگر بخواهید دایرکتوری poshtvarserver را در دایرکتوری خانگی خود ایجاد کرده و به آن منتقل شوید، از دستور زیر استفاده کنید:

mkdir poshtvarserver
cd poshtvarserver

سپس چندین نوع فایل را در پوشه ‘poshtvarserver‘ ایجاد کنید.

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

می‌بینید که تمام فایل‌های جدید را در پوشه ‘poshtvarserver‘ ایجاد کرده‌ایم.

 a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

حالا می‌توانید به‌طور همزمان و به‌صورت هوشمند با استفاده از دستور rm تمام فایل‌ها به جز فایل ‘html‘ را حذف کنید:

rm -r !(*.html)

برای تأیید، آخرین اجرا را با استفاده از دستور ls انجام دهید تا تمام فایل‌های موجود را لیست کنید:

ls

برای تأیید، آخرین اجرا را با استفاده از دستور ls انجام دهید تا تمام فایل‌های موجود را لیست کنید:

a.html b.html

۶. دستور AND – OR (&& – ||) – اجرای شرطی پیشرفته دستورات

با ترکیب دستورات && و || در لینوکس، می‌توانید دستورات شرطی پیچیده‌ای ایجاد کنید که بر اساس موفقیت یا شکست اجرای یک دستور، دستورات متفاوتی را اجرا کند. این ترکیب به شما امکان می‌دهد فرآیندهای خود را به‌شکل انعطاف‌پذیری کنترل کنید.

برای مثال، اگر بخواهید به وب‌سایت poshtvarserver.com پینگ بزنید و در صورت موفقیت پیام Verified و در صورت شکست پیام Host Down را چاپ کنید، می‌توانید از دستور زیر استفاده کنید:

ping -c3 www.poshtvarserver.com && echo "Verified" || echo "Host Down"

نمونه خروجی در صورت موفقیت:

PING www.poshtvarserver.com (212.71.234.61) 56(84) bytes of data. 
64 bytes from www.poshtvarserver.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from www.poshtvarserver.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from www.poshtvarserver.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- www.poshtvarserver.com ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms

حالا، اتصال اینترنت خود را قطع کنید و دوباره همان دستور را امتحان کنید:

ping -c3 www.poshtvarserver.com && echo "verified" || echo "Host Down"

نمونه خروجی در صورت شکست:

ping: unknown host www.poshtvarserver.com 
Host Down

۷. دستور PIPE (|) – انتقال خروجی یک دستور به دستور دیگر

دستور PIPE (|) در لینوکس به شما این امکان را می‌دهد که خروجی یک دستور را مستقیماً به عنوان ورودی دستور دیگر استفاده کنید. این ویژگی برای پردازش داده‌ها بسیار مفید است، زیرا می‌توان چندین دستور را به‌صورت زنجیره‌ای به هم متصل کرد و داده‌ها را به‌شکل پیوسته پردازش نمود.

برای مثال، اگر بخواهید فهرست فایل‌ها در یک دایرکتوری را نمایش داده و سپس فایل‌هایی را که شامل کلمه “log” هستند، فیلتر کنید، می‌توانید از ترکیب دستور ls و grep به شکل زیر استفاده کنید:

ls -l | grep log

در اینجا:

  • دستور ls -l فهرست فایل‌ها و پوشه‌ها را با جزئیات نمایش می‌دهد.
  • خروجی دستور ls توسط دستور PIPE به دستور grep منتقل می‌شود.
  • دستور grep log تنها فایل‌ها یا پوشه‌هایی که حاوی کلمه “log” در نام خود هستند را نمایش می‌دهد.

نمونه‌ای دیگر:

اگر بخواهید خروجی یک دستور طولانی را صفحه‌به‌صفحه مشاهده کنید، می‌توانید از PIPE همراه با دستور less استفاده کنید.

مثال:

ls -l | less

این دستور ابتدا لیست فایل‌ها را با جزئیات نمایش می‌دهد و سپس خروجی را به دستور less منتقل می‌کند تا بتوانید آن را به‌صورت صفحه‌به‌صفحه مرور کنید.

نمونه خروجی برای ls -l | less:

drwx------ poshtvarserver poshtvarserver 4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x poshtvarserver poshtvarserver 4.0 KB Tue Oct 10 10:44:35 2023 bin
.rw-rw-r-- poshtvarserver poshtvarserver 73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r-- poshtvarserver poshtvarserver 2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts

 ۸. دستور ترکیب دستورات ({}) – اجرای شرطی دستور زنجیره‌ای لینوکس

دستور ترکیب دستورات ({}) در لینوکس به شما این امکان را می‌دهد که چندین دستور را در یک بلاک ترکیب کنید، به‌طوری‌که اجرای دستور دوم به موفقیت یا شکست دستور اول وابسته باشد. این قابلیت به شما کمک می‌کند که شرایط را مدیریت کرده و خروجی متناسب با آن را نمایش دهید.

برای مثال، اگر بخواهید بررسی کنید که آیا دایرکتوری bin وجود دارد یا خیر و در صورت عدم وجود، آن را ایجاد کنید، می‌توانید از دستور زیر استفاده کنید:

[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

در این مثال:

  • دستور [ -d bin ] بررسی می‌کند که آیا دایرکتوری bin وجود دارد یا خیر.
  • اگر دایرکتوری bin وجود نداشته باشد، دستور بعدی (داخل {}) اجرا می‌شود.
  • دستور echo پیام مربوطه را چاپ می‌کند و سپس با استفاده از دستور mkdir دایرکتوری bin ایجاد می‌شود.

این روش به شما امکان می‌دهد که فرآیندهای شرطی را به‌صورت مؤثر مدیریت کنید و بسته به شرایط، دستورات مختلف را اجرا کنید.

 ۹. دستور اولویت (()) – مدیریت ترتیب اجرای دستورات در آموزش دستور زنجیره‌ای لینوکس

دستور اولویت (()) در لینوکس به شما این امکان را می‌دهد که ترتیب اجرای دستورات را مدیریت کنید و مجموعه‌ای از دستورات را در یک زیر پردازش (subshell) گروه‌بندی کنید. این اپراتور به شما اجازه می‌دهد که ترتیب دستورات را به‌طور خاص تنظیم کرده و از وابستگی‌های منطقی بین دستورات استفاده کنید.

برای مثال، فرض کنید می‌خواهید ابتدا یک دستور را اجرا کرده و سپس نتیجه آن را به دستور دیگری ارسال کنید. دستور فرضی به شکل زیر خواهد بود:

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

در اینجا:

  • اگر Command_x1 موفق باشد، Command_x2 اجرا می‌شود.
  • اگر Command_x1 شکست بخورد، هیچ‌کدام از دستورات Command_x2، Command_x3 یا Command_x4 اجرا نخواهند شد.

برای تغییر اولویت اجرای دستورات و گروه‌بندی آن‌ها، می‌توانید از دستور اولویت () استفاده کنید. مثال:

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

در این مثال:

  • اگر Command_x1 موفق باشد، Command_x2 اجرا می‌شود.
  • اگر هرکدام از دستورات در گروه اول (یعنی Command_x1 یا Command_x2) شکست بخورند، گروه دوم (Command_x3 && Command_x4) اجرا می‌شود، چرا که اجرای گروه دوم وابسته به شکست گروه اول است.

این ساختار به شما امکان می‌دهد که ترتیب و اولویت اجرای دستورات را در شرایط مختلف کنترل کرده و از پیچیدگی‌های منطقی و وابستگی‌های بین دستورات به‌طور مؤثر استفاده کنید.

 ۱۰. دستور الحاق (\) – الحاق دستورات چند خطی در آموزش دستور زنجیره‌ای لینوکس

دستور الحاق (\) در شل به شما این امکان را می‌دهد که دستورات طولانی یا چند خطی را به صورت خوانا و سازمان‌دهی‌شده بنویسید. این دستور به‌ویژه زمانی مفید است که بخواهید چندین دستور را در یک خط بنویسید، اما می‌خواهید خوانایی کد و اسکریپت خود را حفظ کنید.

برای مثال، اگر بخواهید فایل متنی به نام test(1).txt را باز کنید و از الحاق برای افزایش خوانایی استفاده کنید، می‌توانید از دستور زیر استفاده کنید:

nano test\(1\).txt

در این مثال، استفاده از \ به شما این امکان را می‌دهد که نام فایل را به درستی وارد کنید، چرا که پرانتز () در نام فایل نیاز به escape (فرار دادن) دارند تا به درستی شناخته شوند.

نکته: به‌طور کلی، دستور \ برای ادامه دادن دستورات در خط بعدی و جلوگیری از قطع شدن آن‌ها استفاده می‌شود

جمع‌بندی

در این مقاله، به بررسی ۱۰ دستور زنجیره‌ای لینوکس پرداختیم که به شما این امکان را می‌دهند تا دستورات خود را به شیوه‌ای مؤثر و کارآمد ترکیب کنید. با استفاده از این اپراتورها، می‌توانید فرآیندهای مختلف را خودکار کنید و از حداکثر توانایی‌های شل لینوکس بهره‌برداری نمایید. این ابزارها به‌ویژه در زنجیره‌سازی دستورات لینوکس و کاربردهای مختلف آن مفید هستند و به شما کمک می‌کنند تا با صرفه‌جویی در زمان و منابع، کارایی سیستم خود را به‌طور چشمگیری افزایش دهید.

از شما دعوت می‌کنیم تجربیات و نظرات خود را در قسمت نظرات با ما به اشتراک بگذارید. آیا شما از این اپراتورها استفاده کرده‌اید؟ آیا نکات دیگری در این زمینه دارید؟ نظرات شما برای ما بسیار ارزشمند است و به بهبود مقالات آینده کمک می‌کند.

5/5 - (536 امتیاز)

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

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

این سایت توسط reCAPTCHA و گوگل محافظت می‌شود حریم خصوصی و شرایط استفاده از خدمات اعمال.

The reCAPTCHA verification period has expired. Please reload the page.

روز
ساعت
دقیقه
ثانیه

تخفیف زمستانی، فقط 3 روز فرصت دارید!

20 درصد تخفیف دائمی برای تمامی سرورهای مجازی خارج با کد تخفیف PSP20