🐧 نحوه اجرای همه اسکریپت ها در یک دایرکتوری در لینوکس – اطلاعات امنیت ملی

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

از آنجا که تازه در حال نوشتن اسکریپت های پوسته هستم ، آنها را یکی یکی دویدم و آنها را آزمایش کردم.

اگر فقط تعداد معدودی وجود داشت ، طبیعی بود.

با افزایش تعداد آنها ، من فکر کردم که آنها زمان کمی برای آزمایش دارند.

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

تمام اسکریپت ها را در یک دایرکتوری در لینوکس اجرا کنید

من یک زن و شوهر دارم در فهرست اسناد من:

 $ ls اسناد / 
linux.sh ostechnix.sh script1.sh script2.sh script2.sh script4.sh 

همه آنها اسکریپت های ساده تک خط هستند که رشته ها (های) مشخص شده را با استفاده از دستور echo در خروجی استاندارد نمایش می دهند.

قبل از فهمیدن اینکه می توانیم همه اسکریپت ها را در این پوشه اجرا کنیم ، معمولاً اسکریپت را به شرح زیر اجرا می کردم:

 $ chmod + x script.sh 
 $ ./script.shociation19659013†►►19659014†† sh script.sh 

من دوباره اسکریپت دوم را اجرا می کنم ، آنرا اجرا کردم و غیره.

خوب ، شما لازم نیست این کار را انجام دهید.

ما می توانیم تمام اسکریپت ها را در فهرست یا مسیر با استفاده از "run" اجرا کنیم. -parts ".

دستور run-parts برای اجرای اسکریپت ها یا برنامه ها در همان فهرست یا مسیر استفاده می شود. همه اسکریپت ها را اجرا نمی کند.

این تنها در صورتی کار خواهد کرد که اسکریپت های شما دارای اسامی صحیح باشند.

نام ها باید کاملاً از حروف ASCII بزرگ و کوچک ، نامه های ASCII ، زیرشاخه های ASCII و hypens منفی ASCII تشکیل شوند.

با استفاده از این مشکل ، می توان از پارامتر regex استفاده کرد. ~ ~ / اسناد ، که با حرف "s" شروع می شود و با پسوند "sh" به پایان می رسد:

 $ run-parts --regex '^ s. * sh $' ~ / اسناد 

به همین ترتیب ، اجرا شود تمام پرونده های اسکریپت منتهی به .sh در فهرست اسناد ، اجرای کنید:

 $ run-parts --regex '. * sh $' ~ / اسناد 

برای نمایش نام همه پرونده ها در " اسناد "که با حرف" s "شروع می شوند و با پسوند" sh "به پایان می رسند ، اجرای:

  $ run-parts - list --regex '^ s. * Sh $' اسناد 
اسناد / script1.sh
اسناد / script2.sh
اسناد / script3.sh
Documents / script4.sh 

این دستور فقط نام پرونده های اسکریپت را تولید می کند اما آنها را اجرا نمی کند.

برای لیست کردن تمام پرونده های منتهی به .sh در فهرست اسناد ، اجرای کنید:

 $ find ~ / Documents -maxdepth 1 -type f -ex اجرable -name's * '-exec {} ؛ 

اگر می خواهید همه اسکریپت ها را در این فهرست و در تمام زیرمجموعه های آن اجرا کنید ، پارامتر maxdepth را در دستور بالا حذف کنید:

 $ find / Document -type f-ex اجرable -name's * '-exec {} ؛ 

برای اجرای کلیه اسکریپت های پایان یافته با پسوند .sh ، اجرا کنید:

 $ find ~ / Document -maxdepth 1-نوع f -exekutable -name '* .sh' -ex {} ؛ 

این روش همچنین یک نقص جزئی دارد.

این دستور فقط می تواند اسکریپت هایی را اجرا کند که توسط پوسته فعلی شما قابل تفسیر است.

اگر می خواهید انواع اسکریپت ها را اجرا کنید ، به عنوان مثال ، awk ، perl ، python ، اسکریپت های پوسته ، از روش حلقه استفاده کنید ، همانطور که در زیر نشان داده شده است.

 $ for f in ~ / Document / s *؛ انجام [ -x "$f" ] && [ ! -d "$f" ] && "$ f"؛ انجام شده 

دستور فوق اسکریپت هایی را اجرا می کند که با حرف "s" در پوشه ~ / Documents شروع می شوند.

اگر می خواهید تمام پرونده ها را با پسوند ".sh" اجرا کنید ، اجرا کنید:

 $ for f in ~ / اسناد / *. Sh؛ انجام [ -x "$f" ] && [ ! -d "$f" ] && "$ f"؛ انجام شده 

برای اطلاعات بیشتر به صفحات مرد مراجعه کنید.

 $ man run-parts 
 $ man find