اجرای چند دستور در لینوکس در یک خط با ترفندهای ساده ولی حرفهای
اجرای چند دستور در لینوکس در یک خط باعث صرفهجویی در وقت و افزایش کارایی و بازدهی در لینوکس میشود.
انجام آن با عملگرهای مختلفی انجام میشود که هر کدام برای هدف خاصی مورد استفاده قرار میگیرند.
در لینوکس به اجرای چند دستور command chaining گفته میشود.
اجرای چند دستور در لینوکس در یک نگاه
به ۴ روش میتوانید چند دستور را در یک خط در لینوکس اجرا کنید.
| | CMD1 | CMD2 | CMD1 اجرا و خروجی آن به عنوان ورودی CMD2 ارسال میشود |
; | CMD1 ; CMD2 | اول CMD1 اجرا میشود و سپس CMD2 اجرا میشود |
&& | CMD 1 && CMD 2 | زمانی CMD2 اجرا میشود که CMD1 با موفقیت اجرا شود |
|| | CMD1 || CMD2 | زمانی CMD2 اجرا میشود که CMD1 در اجرا شکست بخورد |
استفاده از | برای اجرای چند دستور در لینوکس در یک خط
عملگر | یا pipe برای اجرای چند دستور مرتبط به یکدیگر در لینوکس در یک خط استفاده میشود.
از آنجایی که خروجی دستور قبلی به عنوان ورودی دستور بعدی است این دستورات مرتبط به یکدیگر هستند.
در صورتی که دستور قبلی با موفقیت اجرا شود، دستور بعدی ورودی صحیح را دریافت خواهد کرد.
چنانچه دستورقبلی بدرستی اجرا نشود، ورودی دستور بعدی مقدار صحیحی نخواهد بود.
برای تایپ کاراکتر | میتوانید shift و | را بر روی صفحه کلید پشت سرهم بزنید.
مثال 1
خروجی دستور اول بعنوان ورودی برای دستور دوم ارسال میشود. دستور دوم عملیات خود را بر روی ورودی انجام میدهد.
ls برای لیست کردن فایلها و فولدرهای داخل فولدر فعلی استفاده میشود.
wc برای نمایش تعداد بایت ها، کاراکترها و خطوط استفاده میشود.
1 2 |
[root@static ~]# ls -alh | wc -cml 14 688 688 |
مثال 2
خروجی دستور اول که با شکست اجرا شده است بعنوان ورودی دستور دوم ارسال شده است.
فولدر root/ از قبل وجود دارد بنابراین امکان ساخت چنین فولدری نیست.
1 2 3 |
[root@static ~]# mkdir /root | wc -l mkdir: cannot create directory ‘/root’: File exists 0 |
استفاده از ; برای اجرای چند دستور در لینوکس در یک خط
ساده ترین حالت اجرای چند دستور پشت سر هم است و به ترتیبی که نوشته می شوند اجرا می شوند.
بین هر دستور از کاراکتر semi-colon یا نقطه ویرگول یعنی ; استفاده می شود.
کاراکتر فاصله قبل و بعد از ; اختیاری است و رعایت فاصله بین دستور و ; باعث خوانایی بیشتر میشود.
مثال 3
هر سه دستور با موفقیت اجرا شده اند و خروجی هر دستور در یک خط نمایش داده شده است.
1 2 3 4 |
[root@static ~]# pwd ; ls ; date /root anaconda-ks.cfg Sun Jan 10 01:51:08 +0330 2021 |
مثال 4
در این حالت چنانچه یک دستور نامعتبر باشد اهمیتی ندارد و دستور بعدی اجرا میشود تا تمامی دستورات اجرا شوند.
دستوری asd وجود ندارد بنابراین آن را پیدا نکرده است و سپس دستورات بعدی پشت سر هم اجرا شده اند.
1 2 3 4 5 |
[root@static ~]# asd ; pwd ; date ; echo bye bash: asd: command not found /root Sun Jan 10 02:20:51 +0330 2021 bye |
استفاده از && برای اجرای چند دستور در لینوکس در یک خط
در این حالت زمانی دستور بعدی اجرا شود که دستورات قبلی آن با موفقیت اجرا شده باشند.
چنانچه اجرای دستوری با شکست مواجه شود، دستورات بعدی آن هرگز اجرا نخواهند شد.
در این خصوص میتوانید از AND منطقی استفاده کنید که عملگر یا operator آن && میباشد.
مثال 5
هر سه دستور معتبر هستند و با موفقیت اجرا شده اند.
1 2 3 4 |
[root@static ~]# pwd && ls && date /root anaconda-ks.cfg Sun Jan 10 12:19:10 +0330 2021 |
مثال 6
دستور asd نامعتبر است بنابراین دستوراتی که بعد از آن آمده اند اجرا نخواهند شد.
1 2 |
[root@static ~]# asd && pwd && date && echo bye -bash: asd: command not found |
مثال 7
دستور pwd با موفقیت اجرا شده است بنابراین امکان اجرای دستور بعدی وجود دارد.
دستور mkdir /root در اجرا شکست خورده است چون مسیر root/ از قبل وجود دارد و امکان ایجاد آن فولدر نیست.
1 2 3 |
[root@static ~]# pwd && mkdir /root && date && echo bye /root mkdir: cannot create directory ‘/root’: File exists |
استفاده از || برای اجرای چند دستور در لینوکس در یک خط
در این حالت زمانی دستور بعدی اجرا شود که دستور قبلی آن در اجرا با شکست مواجه شود.
چنانچه اجرای دستوری با شکست مواجه شود، دستورات بعدی آن اجرا خواهد شد.
در این خصوص میتوانید از OR منطقی استفاده کنید که عملگر یا operator آن || میباشد.
مثال 8
دستور اول با موفقیت اجرا شده است بنابراین دستور بعدی آن اجرا نخواهد شد.
1 2 |
[root@static ~]# pwd || ls || date /root |
مثال 9
دستور اول در اجرا شکست خورده است بنابراین امکان اجرای دستور دوم وجود دارد.
مثال 10
ترکیبی از عملگرهای ; و && و || جهت اجرای چند در لینوکس در یک خط استفاده شده است.
دستور اول، وجود فایل file.txt را بررسی میکند چون وجود ندارد دستور دوم اجرا نمی شود.
دستور سوم و چهارم نیز با موفقیت اجرا میشوند و دستور پنجم دیگر اجرا نخواهد شد.
1 2 3 |
[root@static ~]# [ -f file.txt ] && echo "File exists" || echo "File doesn't exist" ; date || ls File doesn't exist Sun Jan 10 13:30:54 +0330 2021 |
سخن پایانی
برچسبها: command, command line, gnu/linux, linux, آموزش لینوکس, ترفند لینوکس, دستور, لینوکس