۱۰ دستور زنجیرهای مفید در لینوکس با مثالهای عملی
موضوعاتی که در این مقاله به آنها پرداخته خواهد شد، به شرح زیر است:
- دستور آند (&) برای اجرای دستورات در پسزمینه
- دستور نقطه و ویرگول (;) برای اجرای دستورات بهصورت ترتیبی
- دستور AND (&&) برای شرطی کردن اجرای دستورات
- دستور OR (||) برای اجرای دستور دوم در صورت شکست دستور اول
- دستور NOT (!) برای اجرای انتخابی دستورات بر اساس شرایط خاص
- ترکیب دستورات AND و OR (&& – ||) برای زنجیرهای کردن دستورات
- دستور PIPE (|) برای پردازش بهینه خروجی دستورات
- دستور ترکیب دستورات ({}) برای اجرای دستورات وابسته به هم
- دستور اولویت (()) برای مدیریت ترتیب اجرای دستورات
- دستور الحاق (\) برای تقسیم و الحاق دستورات چند خطی
۱۰ دستور زنجیرهای مفید در لینوکس با مثالهای عملی
در این مقاله، ۱۰ دستور زنجیرهای مفید در لینوکس با مثالهای عملی معرفی میشوند. زنجیرهسازی دستورات در لینوکس به شما این امکان را میدهد که چندین دستور را بهصورت متوالی و ترکیبی اجرا کنید. این رویکرد با بهرهگیری از دستورات زنجیرهای در لینوکس، مدیریت سیستم را کارآمدتر کرده و نیاز به مداخله دستی را کاهش میدهد.
با استفاده از دستور زنجیرهای لینوکس، میتوانید اسکریپتهای ساده و مؤثر بنویسید که در افزایش بهرهوری شما تأثیرگذار خواهند بود. در این مقاله، علاوه بر معرفی دستورات زنجیرهای، مثالهای کاربردی از دستورات لینوکس برای هر یک ارائه میشود. این دستورات به شما کمک خواهند کرد تا فرآیندهای خودکار در لینوکس ایجاد کنید و بار سیستم را کاهش دهید.
۱. دستور آند (&) – اجرای دستور لینوکس در پسزمینه
دستور ‘&’ در لینوکس به شما امکان میدهد دستورات را در پسزمینه اجرا کنید، بهطوریکه فرآیندها بهصورت همزمان پیش بروند و ترمینال مسدود نشود. این روش در زنجیرهسازی دستورات لینوکس بسیار مفید است، خصوصاً زمانی که چندین فرآیند بهصورت موازی نیاز به اجرا دارند. استفاده از این دستور به شما این امکان را میدهد که بدون انتظار برای اتمام یک فرآیند، دستورات دیگری را در لینوکس بهصورت همزمان اجرا کنید.
برای اجرای دستور ‘ping‘ در پسزمینه، از دستور زیر استفاده کنید:
ping google.com &
این دستور، فرآیند ping را در پسزمینه اجرا کرده و به شما اجازه میدهد که بلافاصله به ترمینال بازگردید و دستورات دیگری را وارد کنید.
۲. دستور نقطهویرگول (;) – اجرای چندین دستور بهصورت متوالی در آموزش دستور زنجیرهای لینوکس
دستور نقطهویرگول (;) به شما این امکان را میدهد که چندین دستور را در یک خط وارد کنید و این دستورات بهطور متوالی اجرا خواهند شد.
برای مثال، دستور زیر را در نظر بگیرید:
apt update ; apt upgrade ; mkdir test
۳. دستور AND (&&) – اجرای دستور دوم در صورت موفقیت دستور اول
دستور AND (&&) به این صورت عمل میکند که تنها در صورتی دستور دوم اجرا میشود که دستور اول با موفقیت اجرا شده باشد، یعنی وضعیت خروجی دستور اول برابر با ۰ باشد. این دستور برای بررسی وضعیت اجرای دستور قبلی بسیار مفید است.
برای مثال در آموزش دستور زنجیرهای لینوکس، اگر بخواهم به وبسایت poshtvarserver.com با استفاده از دستور links در ترمینال مراجعه کنم، اما قبل از آن نیاز دارم که بررسی کنم که آیا سرور فعال است یا خیر، میتوانم از دستور AND به شکل زیر استفاده کنم:
ping -c 1 poshtvarserver.com && links poshtvarserver.com
۴. دستور OR (||) – اجرای شرطی دستورات در آموزش دستور زنجیرهای لینوکس
دستور OR (||) مشابه با عبارت else در برنامهنویسی است. این دستور به شما این امکان را میدهد که تنها در صورتی دستور دوم اجرا شود که دستور اول با شکست مواجه شود، یعنی وضعیت خروجی دستور اول برابر با ۱ باشد.
برای مثال، اگر بخواهم دستور apt update را از یک حساب غیر ریشه اجرا کنم و در صورتی که این دستور با شکست مواجه شود، دستور دوم links www.poshtvarserver.com اجرا خواهد شد، میتوانم از دستور OR به شکل زیر استفاده کنم:
apt update || links 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 (فرار دادن) دارند تا به درستی شناخته شوند.
نکته: بهطور کلی، دستور \ برای ادامه دادن دستورات در خط بعدی و جلوگیری از قطع شدن آنها استفاده میشود
جمعبندی
در این مقاله، به بررسی ۱۰ دستور زنجیرهای لینوکس پرداختیم که به شما این امکان را میدهند تا دستورات خود را به شیوهای مؤثر و کارآمد ترکیب کنید. با استفاده از این اپراتورها، میتوانید فرآیندهای مختلف را خودکار کنید و از حداکثر تواناییهای شل لینوکس بهرهبرداری نمایید. این ابزارها بهویژه در زنجیرهسازی دستورات لینوکس و کاربردهای مختلف آن مفید هستند و به شما کمک میکنند تا با صرفهجویی در زمان و منابع، کارایی سیستم خود را بهطور چشمگیری افزایش دهید.
از شما دعوت میکنیم تجربیات و نظرات خود را در قسمت نظرات با ما به اشتراک بگذارید. آیا شما از این اپراتورها استفاده کردهاید؟ آیا نکات دیگری در این زمینه دارید؟ نظرات شما برای ما بسیار ارزشمند است و به بهبود مقالات آینده کمک میکند.