مدیریت اوبونتو از طریق اسکریپت در ویندوز هنگام شروع یا خاموش شدن لینوکس یک اسکریپت را اجرا کنید. # چند رسانه ای و کدک ها

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

چگونه همه کار می کند:

خط اول اسکریپت #!/bin/bash برای اجرای موفقیت آمیز اسکریپت ضروری است.

خط دوم mkdir testdir دایرکتوری testdir را ایجاد می کند

خط سوم cd testdir به شما امکان می دهد به پوشه ایجاد شده testdir بروید

تیم دست زدن بهدر خط بعدی فایل1 file2 file3 را لمس کنید سه فایل ایجاد می کند

و آخرین دستور در خط اسکریپت ما، ls -al، به شما امکان نمایش محتویات دایرکتوری فعلی را می دهد که به لطف خط قبلی، سه فایل خالی در آن ظاهر شده است.

همانطور که می بینیم، در ما اسکریپت سادههمه دستورات با خط جدید. هر خط، هنگام اجرای اسکریپت، به طور متوالی کار خود را انجام می دهد و اقدامات خاصی را انجام می دهد.

اگر روزانه زنجیره ای از دستورات یکسان (با پارامترهای ثابت) را در لینوکس اجرا می کنید، شاید منطقی باشد که همان را بنویسید. اسکریپت ساده bash، که به شما امکان می دهد در زمان خود صرفه جویی کنید و کار خود را خودکار کنید.

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

اسکریپتترجمه از انگلیسی - سناریو. همه ما فیلم می بینیم، بسیاری از ما نمایشنامه می بینیم. برای خلق یک فیلم/نمایشنامه، فیلمنامه نویسان برای آنها فیلمنامه می نویسند که بر اساس آن بازیگران نقش خود را صحنه به صحنه روی صحنه اجرا می کنند که فیلم/ نمایشنامه از آن ساخته شده است. کار خلق یک فیلمنامه کاملاً پر دردسر است، جایی که باید همه چیز را تا ریزترین جزئیات در نظر بگیرید تا در نهایت هنرمندان بتوانند آنچه را که فیلمنامه‌نویس در نظر گرفته است برآورده کنند و بیننده بتواند یک اثر کامل را ببیند.

به طور مشابه، اسکریپت‌ها برای اجرای فهرستی از وظایفی که کاربر با هم (کد) قرار می‌دهد نوشته می‌شود تا انجام آن‌ها را آسان‌تر و سریع‌تر کند. سیستم عامل. برای نوشتن اسکریپت های ساده اصلاً نیازی به تحصیل برنامه نویس نیست.

ابتدا بیایید ساده ترین مورد را ایجاد کنیم اسکریپت-شلبرای به روز رسانی سیستم

من تمام اقدامات را با سیستم انجام خواهم داد اوبونتو، اما برای سیستم های دیگر نیز قابل اجرا هستند لینوکس، ناشی شدن از اوبونتو. برای این ما نیاز داریم: ویرایشگر متنبرای پر کردن آن با وظایف لازم برای ایجاد یک اسکریپت (کد) و پایانه- برای اجرای اسکریپت ایجاد شده. این ابزارها در هر توزیعی نصب می شوند لینوکسپیش فرض

بنابراین، بیایید باز کنیم ویرایشگر متن Geditو اولین کاراکترهای مورد نیاز را وارد کنید شبنگ.
شبنگدر برنامه نویسی دنباله ای از دو نماد است: هش و علامت تعجب (#! ) در ابتدای فایل اسکریپت. و بدون فاصله به این شخصیت ها اضافه کنید /bin/sh- مترجمی که اسکریپت در آن اجرا خواهد شد. /bin/sh- این معمولا پوسته بورنیا یک مفسر خط فرمان سازگار که عبور می کند "مسیر/به/اسکریپت"به عنوان اولین پارامتر
اولین خط مورد نیاز اسکریپت به شکل زیر خواهد بود:

# اولین اسکریپت آپدیت اوبونتو

علامت هش (#) در همان ابتدای خط برای مفسر/ترمینال روشن می کند که این خط نیازی به خواندن و اجرا ندارد. خط در کد این اسکریپت مورد نیاز است تا سازنده اسکریپت بداند که قرار است در این بخش/صحنه در کد چه کاری انجام دهد تا در آینده با وجود چنین خطوطی گیج نشود. چنین خطوطی با علامت هش نامیده می شوند - اظهار نظر کرد .

به روز رسانی sudo apt
sudo apt upgrade -y

-yدر انتهای فرمان دوم به مفسر/ترمینال روشن می شود که این عمل/فرمان باید به صورت خودکار و بدون تایید اضافی توسط کاربر با فشار دادن یک کلید انجام شود. وارد. y- مختصر انگلیسی آره، یعنی آره.

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


تنها چیزی که باقی می ماند ذخیره فایل/اسکریپت ایجاد شده و دادن آن است نامبا تمدید اجباری در پایان - .sh. افزونه .shبه فایل اجرایی اختصاص داده شده است.
به او دادم نام - update.sh، صرفه جویی در پوشه خانهکاربر:


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

1. دستور زیر را در ترمینال اجرا کنید:

sudo chmod +x update.sh

2. یا فایل منیجر را در آن باز کنید پوشه خانه(جایی که اسکریپت ایجاد شده را ذخیره کردید)، روی فایل کلیک راست کنید، در منوی زمینه - خواص - حقوقو مورد را فعال کنید - کارایی: اجازه دهید فایل به عنوان یک برنامه اجرا شود:


برای اجرای اسکریپت ایجاد شده، باید ترمینال را باز کنید (همانطور که در همان ابتدای مقاله نوشتم که ترمینال یک ویژگی / ابزار لازم برای اجرای اسکریپت است)، وارد کنید. ش، با فاصله نام اسکریپت جدا شده است - update.shو کلید را فشار دهید وارد:


یا در ترمینال وارد می شویم شو بکشید از مدیر فایلفایل ایجاد شده با اسکریپت (همچنین با فاصله جدا شده است):


هنگامی که مسیر فایل بعد از دستور نمایش داده می شود شو فاصله، فقط کلید را فشار دهید وارد(Enter) برای انجام به روز رسانی سیستم:


اکنون در هر زمان می توانید سیستم را با استفاده از اسکریپت خود به روز کنید.

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

در حالی که می توانید همانطور که در بالا نشان داده شده است به ثبت نام دستی ادامه دهید، بسیار بهتر است که برخی از اسکریپت ها را تنظیم کنید تا این کار به صورت خودکار برای شما انجام شود.

مجموعه‌ای از اسکریپت‌ها فرآیند ورود را خودکار می‌کنند و PPP را راه‌اندازی می‌کنند تا تنها کاری که باید انجام دهید (به عنوان ریشه یا عضوی از گروه PPP) صدور یک فرمان واحد برای شروع اتصال است.

15.1 اسکریپت های اتصال برای احراز هویت با نام کاربری/رمز عبور

اگر ISP شما به PAP/CHAP نیاز ندارد، اینها اسکریپت هایی هستند که نیاز دارید!

اگر بسته ppp به درستی نصب شده باشد، باید دو فایل نمونه داشته باشید. برای PPP 2.1.2 آنها در /usr/sbin و برای PPP 2.2 در /etc/ppp/scripts هستند. آنها نامیده می شوند

برای PPP-2. 1.2

و برای PPP-2. 2

ppp-off ppp-on ppp-on-diler

حال، اگر از PPP 2.1.2 استفاده می کنید، به شدت از شما می خواهم فایل های نمونه را حذف کنید. مشکلات احتمالی با آنها وجود دارد (و به من نگویید که آنها عالی کار می کنند)، من برای مدت طولانی از آنها استفاده کرده ام (و حتی آنها را در نسخه اول این HOWTO توصیه کرده ام)!

برای کاربر PPP 2.1.2 موجود است بهترین نسخهالگو برگرفته از توزیع PPP 2.2. پیشنهاد می کنم این اسکریپت ها را به جای اسکریپت قدیمی PPP-2.1.2 کپی و استفاده کنید.

اسکریپت 15.2 ppp-on

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

#!/bin/sh # # اسکریپت برای شروع اتصال PPP. این اولین قسمت از چند فیلمنامه است. # اینها اسکریپت های مخفی نیستند، زیرا کدها با دستور ps قابل مشاهده هستند. # با این حال، این یک مثال است. # # اینها پارامترها هستند. در صورت نیاز آنها را تغییر دهید. TELEPHONE=555-1212 # شماره تلفناتصالات ACCOUNT=george # نام کاربری ورود به سیستم ("George Burns") PASSWORD=gracie # رمز عبور برای این حساب (و "Gracie Allen") LOCAL_IP=0.0.0.0 # آدرس IP محلی، در صورت شناخته شدن. Dynamic = 0.0.0.0 REMOTE_IP=0.0.0.0 # آدرس IP راه دور، در صورت تمایل. به طور معمول 0.0.0.0 NETMASK=255.255.255.0 # نقاب شبکه مربوطه، در صورت نیاز # # آنها را صادر کنید تا در "ppp-on-dialer" صادراتی TELEPHONE ACCOUNT PASSWORD # # این محل اسکریپتی است که تلفن و با # سامانه ثبت نام می کند. لطفاً از یک نام فایل مطلق استفاده کنید زیرا گزینه connect # از متغیر $PATH استفاده نمی کند. (اگر این کار را انجام دهید، حساب "root" # یک حفره امنیتی خواهد بود، پس نپرسید.) # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # # شروع اتصال # # exec /usr/sbin /pppd debug / dev/ttySx 38400 \ $LOCAL_IP:$REMOTE_IP \ اتصال $DIALER_SCRIPT

این اسکریپت ppp-on-diler است:

#!/bin/sh # # این قسمت دوم اسکریپت ppp-on است. # اتصال دلخواه را راه اندازی می کند. # /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT "\nBUSY\r" \ ABORT "\nپاسخی نیست\r" \ ABORT "\nزنگ\r\n\r\nزنگ زدن\r" \ "" \rAT \ "OK-+++\c-OK" ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT "" \ ogin:--ogin: $ACCOUNT \ رمز عبور: $PASSWORD

برای PPP-2.2، اسکریپت ppp-off چیزی شبیه به این است:

#!/bin/sh ######################################### ## ############################ # دستگاهی را که باید قطع شود را تعریف کنید. # if [ "$1" = "" ]; سپس DEVICE=ppp0 دیگری DEVICE=$1 fi ################################################################ ############################ # # اگر فایل pid ppp0 وجود دارد، پس برنامه کار می‌کند. او را متوقف کنید. اگر [ -r /var/run/$DEVICE.pid ]; سپس -INT «cat /var/run/$DEVICE.pid» # # اگر kill ناموفق باشد، هیچ فرآیندی تحت این pid در حال اجرا نیست. # این همچنین می تواند به این معنی باشد که یک فایل قفل خارجی وجود دارد. # ممکن است بخواهید آن را حذف کنید. اگر [! "$؟" = "0" ]; سپس rm -f /var/run/$DEVICE.pid echo "ERROR: Removed stale pid file" exit 1 fi # # عالی. اجازه دهید pppd باگ خود را برطرف کند. echo "پیوند PPP به $DEVICE خاتمه یافت." exit 0 fi # # فرآیند ppp برای echo ppp0 اجرا نمی شود "خطا: پیوند PPP در $DEVICE فعال نیست" خروج 1

15.3 ویرایش اسکریپت های راه اندازی PPP

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

اسکریپت ppp-on

شما باید اسکریپت را ویرایش کنید تا نام کاربری خود را در ISP خود، رمز عبور خود را در ISP خود، شماره تلفن ISP خود را وارد کنید.

هر یک از خطوط مانند TELEPHONE= در واقع متغیرهای پوسته ای هستند که حاوی اطلاعات سمت راست = هستند (البته به استثنای نظرات). هر یک از این خطوط را برای مطابقت با ISP و اتصال خود ویرایش کنید.

همچنین، از آنجایی که آدرس IP را (در صورت نیاز) در فایل /etc/ppp/options تنظیم می‌کنید، خطی که می‌گوید را حذف کنید.

$LOCAL_IP:$REMOTE_IP \

همچنین، مطمئن شوید که متغیر پوسته DIALER_SCRIPT به مسیر کامل و نام اسکریپت شماره گیر اشاره می کند که در واقع قرار است از آن استفاده کنید. بنابراین اگر آن را منتقل کردید یا نام اسکریپت را تغییر دادید، مطمئن شوید که این خط را به درستی در اسکریپت ppp-on ویرایش کرده اید!

اسکریپت ppp-on-dialer

این دومین اسکریپت است که در واقع اتصال ppp ما را افزایش می دهد.

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

با این حال، بسیار مفید است که به این موضوع با جزئیات نگاه کنیم تا متوجه شویم که در واقع (ظاهر) چه اتفاقی می افتد!

15.4 اسکریپت چت به چه معناست...

اسکریپت چت - دنباله ای از جفت رشته مورد انتظاررشته ارسال کرد. به ویژه، لطفاً توجه داشته باشید که ما همیشه قبل از ارسال چیزی منتظر چیزی هستیم.

اگر مجبوریم چیزی را بدون دریافت اول ارسال کنیم، باید از یک رشته انتظار خالی (که با "" مشخص می شود) و به همین ترتیب برای منتظر چیزی بدون ارسال چیزی استفاده کنیم! همچنین، اگر رشته از چند کلمه تشکیل شده باشد، (مثلاً NO CARRIER)، باید نقل قول ها را در اطراف رشته قرار دهید تا چت آن را به عنوان یک کل در نظر بگیرد.

خط چت در قالب ما:

Exec /usr/sbin/chat -v

هنگام فراخوانی چت، گزینه -v به چت می‌گوید همه ورودی/خروجی را در گزارش سیستم کپی کند (معمولاً /var/log/messages). هنگامی که مطمئن شدید که اسکریپت چت به طور قابل اعتماد کار می کند، این خط را برای حذف -v ویرایش کنید تا از ذخیره اطلاعات غیر ضروری در syslog خود جلوگیری کنید.

با این کار مکث دریافت ورودی مورد انتظار روی 3 ثانیه تنظیم می شود. اگر از مودم کند استفاده می کنید، می توانید این مقدار را به 5 یا 10 ثانیه افزایش دهید!

لغو "\nمشغول\r"

اگر رشته BUSY دریافت شود، عملیات به طور غیر عادی متوقف می شود.

لغو "\nبدون پاسخ\r"

اگر رشته NO ANSWER دریافت شود، عملیات به طور غیر عادی متوقف می شود.

لغو "\nزنگ\r\n\r\nزنگ زدن\r"

اگر (تکرار می کنیم) رشته RINGING دریافت شود، عملیات به طور غیر عادی متوقف می شود.

این به این دلیل است که کسی در خط تلفن شما است!

ما هیچ انتظاری از مودم نداریم و یک خط به آن ارسال می کنیم

OK-+++\c-OK ATH0

این کمی پیچیده تر است زیرا از برخی از قابلیت های بازیابی خطای چت استفاده می کند.

آنچه می گوید ... ما منتظریم خوباگر دریافت نشد (به دلیل اینکه مودم در حالت فرمان نیست)، سپس +++ (خط استاندارد برای مودم های سازگار با Hayes که مودم را به حالت فرمان) و صبر کن خوب.

سپس ATH0 (یک خط برای قطع اتصال مودم) ارسال می کنیم. این به اسکریپت شما اجازه می دهد تا با معلق ماندن مودم شما در حین تماس برخورد کند!

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

OK ATDT$TELEPHONE

ما منتظر هستیم خوب(پاسخ مودم به دستور ATH0) و شماره ای را که می خواهیم تماس بگیریم را شماره گیری کنید

ما منتظر خط CONNECT هستیم (که مودم ما وقتی مودم راه دور پاسخ می دهد) و در پاسخ چیزی ارسال نمی کنیم.

ورود: -- ورود: $ACCOUNT

باز هم، در اینجا ما در حال قرار دادن برخی از رفع اشکال هستیم. ما منتظر اعلان ورود (...ogin:) هستیم، اما اگر پس از یک مکث یکی را دریافت نکردیم، یک بازگشت ارسال می‌کنیم و سپس دوباره به دنبال اعلان ورود می‌گردیم. وقتی راهنمایی دریافت شد، نام کاربری (ذخیره شده در متغیر پوسته $ACCOUNT) را ارسال می کنیم.

رمز عبور: $PASSWORD

ما منتظر درخواست رمز عبور هستیم و رمز عبور خود را ارسال می کنیم (به طور مشابه در متغیر پوسته ذخیره می شود).

این اسکریپت چت دارای قابلیت تصحیح خطای معقولی است. چت به طور قابل توجهی دارد مقدار زیادامکاناتی که در اینجا نشان داده شده است. برای اطلاعات دقیقمشورت مرد چت (چت مرد 8).

اجرای PPP در سمت سرور اتصال

در حالی که اسکریپت ppp-on-dialer برای سرورهایی که به‌محض ورود به سیستم به‌طور خودکار pppd را در سمت سرور شروع می‌کنند عالی است، برخی از سرورها از شما می‌خواهند که صریحاً دستور PPP را برای شروع روی سرور بدهید.

اگر باید دستوری برای شروع PPP در سرور صادر کنید، باید اسکریپت ppp-on-diler را ویرایش کنید.

در انتهای اسکریپت (بعد از خط رمز عبور)، یک جفت رشته انتظار-ارسال اضافی اضافه کنید که به دنبال اعلان ورود شما می‌گردد (کاراکترهای متمایز که در پوسته Bourne معنای خاصی دارند: مانند $ و [ یا ] (باز و بسته براکت مربع).

هنگامی که برنامه چت خط فرمان پوسته را پیدا کرد، باید دستور شروع ppp مورد نیاز سرور PPP ISP شما را صادر کند.

در مورد من، سرور PPP من از دستور استاندارد bash Linux استفاده می کند

و از من می خواهد تایپ کنم

برای شروع PPP روی سرور

خوب است که برخی از خطاها را در اینجا در نظر بگیریم، به عنوان مثال در مورد من استفاده می کنم

هارتر - هارتر ppp

این بدان معنی است که اگر در یک مکث معین راهنمایی دریافت نکردیم، یک بازگشت کالسکه ارسال می کنیم و دوباره به دنبال راهنمایی می گردیم.

پس از دریافت راهنمایی، خط ppp را ارسال می کنیم.

فراموش نکنید که یک \ به انتهای خط قبلی اضافه کنید تا چت فکر کند کل اسکریپت چت یک خط است!

متأسفانه در برخی از سرورها مجموعه نکات به طور مکرر تغییر می کند!

ممکن است لازم باشد چند بار با استفاده از minicom وارد شوید تا متوجه شوید که چه اتفاقی در حال رخ دادن است و یک استیبل پیدا کنید انتظار می رودخط

15.5 اسکریپت چت برای اتصال PAP/CHAP

اگر ISP شما از PAP/CHAP استفاده می کند، اسکریپت چت شما بسیار ساده تر است.

کل اسکریپت چت شما باید این کار را انجام دهد: با یک شماره تلفن تماس بگیرید، منتظر اتصال باشید و سپس به pppd اجازه دهید ورود به سیستم را مدیریت کند!

#!/bin/sh # # این قسمت 2 از اسکریپت ppp-on است. پروتکل # اتصال را برای اتصال مورد نظر انجام می دهد. # exec /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT "\nBUSY\r" \ ABORT "\nبدون پاسخ\r" \ ABORT "\nزنگ زدن\r\n\r\nزنگ زدن\r" \ "" \ rAT \ "OK-+++\c-OK" ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT "" \

15.6 اشکال زدایی pppd و گزینه file option_file

همانطور که قبلاً دیدیم، می توانید اطلاعات اشکال زدایی را با گزینه -d به pppd فعال کنید. گزینه debug معادل آن است.

از آنجایی که ما در حال ایجاد یک اتصال جدید با یک اسکریپت جدید هستیم، اکنون گزینه debug را علامت بزنید.

اگر فضای دیسک شما کم است، گزارش های pppd می توانند به سرعت فایل syslog شما را افزایش دهند و برای شما مشکل ایجاد کنند.

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

اگر نام فایل گزینه‌های ppp خود را چیزی غیر از /etc/ppp/options یا /etc/ppp/options.ttySx گذاشته‌اید، برای مثال، نام فایل را با گزینه file در pppd مشخص کنید.

Exec /usr/sbin/pppd فایل اشکال زدایی options.myserver /dev/ttyS0 38400 \

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

اسکریپتترجمه از انگلیسی - سناریو. همه ما فیلم می بینیم، بسیاری از ما نمایشنامه می بینیم. برای خلق یک فیلم/نمایشنامه، فیلمنامه نویسان برای آنها فیلمنامه می نویسند که بر اساس آن بازیگران نقش خود را صحنه به صحنه روی صحنه اجرا می کنند که فیلم/ نمایشنامه از آن ساخته شده است. کار خلق یک فیلمنامه کاملاً پر دردسر است، جایی که باید همه چیز را تا ریزترین جزئیات در نظر بگیرید تا در نهایت هنرمندان بتوانند آنچه را که فیلمنامه‌نویس در نظر گرفته است برآورده کنند و بیننده بتواند یک اثر کامل را ببیند.

به طور مشابه، اسکریپت‌ها برای اجرای فهرستی از وظایفی که کاربر با هم (کد) قرار می‌دهد نوشته می‌شود تا انجام آن‌ها در سیستم عامل آسان‌تر و سریع‌تر شود. برای نوشتن اسکریپت های ساده اصلاً نیازی به تحصیل برنامه نویس نیست.

ابتدا بیایید ساده ترین مورد را ایجاد کنیم اسکریپت-شلبرای به روز رسانی سیستم

من تمام اقدامات را با سیستم انجام خواهم داد اوبونتو، اما برای سیستم های دیگر نیز قابل اجرا هستند لینوکس، ناشی شدن از اوبونتو. برای این ما نیاز داریم: ویرایشگر متنبرای پر کردن آن با وظایف لازم برای ایجاد یک اسکریپت (کد) و پایانه- برای اجرای اسکریپت ایجاد شده. این ابزارها در هر توزیعی نصب می شوند لینوکسپیش فرض

بنابراین، یک ویرایشگر متن باز کنید Geditو اولین کاراکترهای مورد نیاز را وارد کنید شبنگ.
شبنگدر برنامه نویسی، این دنباله ای از دو کاراکتر است: یک هش و یک علامت تعجب ( #! ) در ابتدای فایل اسکریپت. و بدون فاصله به این شخصیت ها اضافه کنید /bin/sh- مترجمی که اسکریپت در آن اجرا خواهد شد. /bin/sh- این معمولا پوسته بورنیا یک مفسر خط فرمان سازگار که عبور می کند "مسیر/به/اسکریپت"به عنوان اولین پارامتر
اولین خط مورد نیاز اسکریپت به شکل زیر خواهد بود:

# اولین اسکریپت آپدیت اوبونتو

علامت هش (#) در همان ابتدای خط برای مفسر/ترمینال روشن می کند که این خط نیازی به خواندن و اجرا ندارد. خط در کد این اسکریپت مورد نیاز است تا سازنده اسکریپت بداند که قرار است در این بخش/صحنه در کد چه کاری انجام دهد تا در آینده با وجود چنین خطوطی گیج نشود. چنین خطوطی با علامت هش نامیده می شوند - اظهار نظر کرد .

به روز رسانی sudo apt
sudo apt upgrade -y

-yدر انتهای فرمان دوم به مفسر/ترمینال روشن می شود که این عمل/فرمان باید به صورت خودکار و بدون تایید اضافی توسط کاربر با فشار دادن یک کلید انجام شود. وارد. y- مختصر انگلیسی آره، یعنی آره.

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


تنها چیزی که باقی می ماند ذخیره فایل/اسکریپت ایجاد شده و دادن آن است نامبا تمدید اجباری در پایان - .sh. افزونه .shبه فایل اجرایی اختصاص داده شده است.
به او دادم نام - update.sh، صرفه جویی در پوشه خانهکاربر:


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

1. دستور زیر را در ترمینال اجرا کنید:

sudo chmod +x update.sh

2. یا فایل منیجر را در آن باز کنید پوشه خانه(جایی که اسکریپت ایجاد شده را ذخیره کردید)، روی فایل کلیک راست کنید، در منوی زمینه - خواص - حقوقو مورد را فعال کنید - کارایی: اجازه دهید فایل به عنوان یک برنامه اجرا شود:


برای اجرای اسکریپت ایجاد شده، باید ترمینال را باز کنید (همانطور که در همان ابتدای مقاله نوشتم که ترمینال یک ویژگی / ابزار لازم برای اجرای اسکریپت است)، وارد کنید. ش، با فاصله نام اسکریپت جدا شده است - update.shو کلید را فشار دهید وارد:


یا در ترمینال وارد می شویم شو فایل ایجاد شده را با اسکریپت از فایل منیجر بکشید (همچنین با فاصله جدا شده است):


هنگامی که مسیر فایل بعد از دستور نمایش داده می شود شو فاصله، فقط کلید را فشار دهید وارد(Enter) برای انجام به روز رسانی سیستم:


اکنون در هر زمان می توانید سیستم را با استفاده از اسکریپت خود به روز کنید.

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

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

بسیاری از شما به احتمال زیاد از سایت های راه اندازی سیستم استفاده می کنید، مانند سایت هایی که من بعد از انتشار بعدی منتشر می کنم. اوبونتو - اوبونتو پس از نصبیا سایت های مشابه یکی از این سایت ها را باز کنید: http://compizomania.blogspot.com/2016/04/ubuntu-1604.html، سپس یک ویرایشگر متن برای ایجاد یک اسکریپت.
به عنوان مثال، من زیر را خالی کردم.

در یک ویرایشگر متن، اولین خط مورد نیاز را وارد کنید:

# راه اندازی اوبونتو پس از نصب
# به روزرسانی سیستم

دستورات به روز رسانی سیستم به شرح زیر است:

به روز رسانی sudo apt
sudo apt upgrade -y

خط توضیحات: افزودن مخازن:

# اضافه کردن مخازن

و برای نصب بیشتر نرم افزار مخازن لازم را اضافه کنید:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y

پس از اضافه شدن مخازن لازم (تکرار می کنم، ممکن است مخازن خود را داشته باشید، من یک مثال دارم)، باید سیستم را به روز کنید:

خط توضیحات:

# به روز رسانی سیستم پس از اتصال مخازن

و دستور اجرا:

به روز رسانی sudo apt

اکنون که مخازن اضافه شده اند و سیستم به روز شده است، نوبت به نصب برنامه ها می رسد:

# نصب برنامه ها

برای نصب برنامه ها کافیست یکبار دستور را وارد کنید sudo apt نصب کنیدو سپس از طریق یک فضای در این خطهر تعداد برنامه را که دوست دارید اضافه کنید، نکته اصلی این است که آنها به درستی کامپایل شده اند. اگر یک برنامه از چند کلمه تشکیل شده باشد، دستور آن باید یکپارچه باشد، یعنی. تمام کلمات موجود در آن باید از طریق یک خط تیره وارد شوند، به عنوان مثال: unity-tweak-tool:

sudo apt نصب my-weather-indicator تلگرام اسکایپ lm-sensors hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

نصب کدک های اضافی

# چند رسانه ای و کدک ها

sudo apt نصب ubuntu-restricted-extras -y

غیرفعال کردن خرابی های سیستم

# غیرفعال کردن گزارش خرابی سیستم

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/apport"

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


شما باید آن را ذخیره کنید (روی دکمه کلیک کنید صرفه جویی) و بدهید نامبا پسوند .sh. بهش زنگ زدم تنظیمات\Ubuntu.sh(می توانید آن را متفاوت نام ببرید، اما حتما از پسوند .sh استفاده کنید):


بیایید اسکریپت ایجاد شده را قابل اجرا کنیم:

sudo chmod +x Setup\Ubuntu.sh

برای اجرای اسکریپت ایجاد شده، وارد ترمینال شوید شو نام اسکریپت ایجاد شده با فاصله یا ش، فاصله و فایل ایجاد شده را به ترمینال بکشید، همانطور که قبلا در ساده ترین اسکریپت توضیح داده شد و کلید را فشار دهید وارد، برای اجرای آن.

توجه داشته باشید. بک اسلش در دستور تنظیمات\Ubuntu.shاز فضایی در نام فایل ترمینال بین دو کلمه مجزا فرار می کند.

پس از اجرای اسکریپت، آن را برای آینده ذخیره کنید، برای نصب مجدد احتمالی سیستم و پیکربندی مجدد، به بهترین وجه در یک پارتیشن جداگانه از هارد دیسک در پوشه /خانه. اگر وجود ندارد، پس سرویس ابرینوع (ذخیره سازی داده های ابری): DropBox، Cloud Mail.Ru، Mega.coو غیره، تا بتوانید خودتان در هر زمان از اسکریپت استفاده کنید یا به دوستان یا اقوام خود در راه اندازی سیستم کمک کنید.

پوسته اسکریپت دنباله ای از دستورات است که می توانید مکرراً از آنها استفاده کنید. اجرای این سکانس معمولاً با ورود انجام می شود خط فرماننام اسکریپت علاوه بر این، با cron می توانید از اسکریپت ها برای خودکارسازی وظایف استفاده کنید. یکی دیگر از کاربردهای اسکریپت، رویه بوت و توقف است سیستم های یونیکس، زمانی که اسکریپت های init عملیات با دیمون ها و سرویس ها را تعریف می کنند.

برای ایجاد یک اسکریپت پوسته، یک فایل جدید و خالی در ویرایشگر خود باز کنید. برای این کار می توانید از هر ویرایشگر متنی استفاده کنید: vim, ایمکس, gedit, dtpadو غیره.؛ هر انجام خواهد داد. با این حال، می توانید ویرایشگر پیشرفته تری مانند vimیا ایمکس، از آنجایی که چنین ویرایشگرهایی را می توان برای تشخیص ساختار پوسته و Bash پیکربندی کرد و می تواند کمک خوبی برای جلوگیری از اشتباهاتی باشد که افراد تازه کار اغلب مرتکب می شوند، مانند فراموشی بستن پرانتز و استفاده از نقطه ویرگول.

شماره گیری کنید دستورات یونیکسدر یک فایل خالی جدید درست مثل اینکه آنها را در خط فرمان وارد کرده باشید. همانطور که در فصل قبل بحث شد (به بخش "اجرای یک فرمان" مراجعه کنید)، دستورات می توانند توابع پوسته، دستورات داخلی، دستورات یونیکس یا اسکریپت های دیگر باشند.

به اسکریپت خود یک نام یادگاری بدهید که نشان دهد اسکریپت چه کاری انجام می دهد. مطمئن شوید که نام اسکریپت شما با دستورات موجود در تضاد نیست. برای جلوگیری از هرگونه سردرگمی، نام اسکریپت اغلب با پسوند .sh ختم می شود. با این حال، ممکن است اسکریپت های دیگری با همان نامی که شما انتخاب کرده اید در سیستم شما وجود داشته باشد. با استفاده از دستورات که, کجاستو دیگران، به دنبال اطلاعاتی در مورد برنامه ها و فایل های موجود با این نام باشید:

کدام -a script_name که در آن script_name مکان script_name را دارد ( تقریبا : script_name را با نام اسکریپت خود جایگزین کنید).

اسکریپت script1.sh

در این مثال از دستور استفاده می کنیم اکو، در Bash تعبیه شده است که به کاربر اطلاع می دهد قبل از ارائه خروجی چه کاری باید انجام دهد. به شدت توصیه می شود که کاربران از کارهایی که اسکریپت انجام می دهد تا کاربران مطلع شوند اگر به نظرشان می رسید که فیلمنامه کاری انجام نمی دهد عصبی نمی شدند. ما به موضوع اطلاع رسانی به کاربران در فصل 8، "نوشتن یک اسکریپت تعاملی" باز خواهیم گشت.


شکل 2.1. اسکریپت script1.sh

همین اسکریپت را برای خودت بنویس. یک ایده خوب این است که یک دایرکتوری ~/scripts ایجاد کنید که در آن اسکریپت های شما قرار خواهند گرفت. این دایرکتوری را به محتوا اضافه کنید متغیر PATH:

صادرات PATH="$PATH:~/scripts"

اگر تازه کار با Bash را شروع کرده اید، از ویرایشگر متنی استفاده کنید که از رنگ های مختلف برای ساختارهای مختلف پوسته استفاده می کند. برجسته سازی نحو در پشتیبانی می شود vim, gvim, (x) macs, kwriteو بسیاری از ویرایشگرهای دیگر، مستندات ویرایشگر مورد علاقه خود را ببینید.

اجرای اسکریپت

برای اینکه یک اسکریپت اجرا شود، باید مجوز اجرا برای کاربران مناسب را داشته باشد. پس از تنظیم مجوزها، بررسی کنید که آیا واقعاً مجوزهای مورد نیاز خود را تنظیم کرده اید. پس از انجام این کار، اسکریپت می تواند مانند هر دستور دیگری اجرا شود:

Willy:~/scripts> chmod u+x script1.sh willy:~/scripts> ls -l script1.sh -rwxrw-r-- 1 willy willy 456 دسامبر 24 17:11 script1.sh willy:~> script1.sh فیلمنامه هم اکنون شروع می شود. سلام ویلی! اکنون فهرستی از کاربران متصل را برای شما می‌آورم: 3:38 بعدازظهر تا 18 روز، 5:37، 4 کاربر، میانگین بارگذاری: 0.12، 0.22، 0.15 TTY کاربر از LOGIN@ IDLE JCPU PCPU WHAT root tty2 - شنبه 14:00 4:25m 0.24s 0.05s -bash willy:0 - شنبه 14:00 ? 0.00 ثانیه؟ - wily pts/3 - شنبه 14:00 3:33m 36.39s 36.39s BitchX willy ir willy pts/2 - Sat 2pm 3:33m 0.13s 0.06s /usr/bin/screen من اکنون دو متغیر را تنظیم می کنم. این یک رشته است : سیاه و این یک عدد است: 9 من اکنون درخواست شما را به شما پس می دهم. willy:~/scripts> echo $COLOUR ویلی:~/scripts> echo $VALUE ویلی:~/scripts>

این رایج ترین راه برای اجرای یک اسکریپت است. بهتر است اسکریپت هایی مانند این را در زیر پوسته اجرا کنید. متغیرها، توابع و نام های مستعار ایجاد شده در این پوسته فرعی فقط در آن جلسه bash خاص در آن زیر پوسته شناخته می شوند. هنگامی که این پوسته خارج می شود و پوسته والد کنترل را به دست می گیرد، تمام تنظیمات پاک می شوند و هر تغییری که توسط اسکریپت در وضعیت پوسته ایجاد شده است فراموش می شود.

اگر اسکریپت ها یا . (دایرکتوری فعلی)، می توانید اسکریپت را به این صورت فعال کنید:

./script_name.sh

همچنین می‌توان یک اسکریپت را در داخل یک پوسته موجود اجرا کرد، اما این معمولاً فقط در صورتی انجام می‌شود که ویژگی‌های خاصی را می‌خواهید، مثلاً اگر می‌خواهید آزمایش کنید که آیا یک اسکریپت با پوسته دیگری کار می‌کند یا یک ردیابی برای اهداف اشکال‌زدایی ایجاد کنید. تقریبا- به جای script_name، نام اسکریپت خود را مشخص کنید):

Rbash script_name.sh sh script_name.sh bash -x script_name.sh

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

اگر نمی خواهید یک پوسته جدید راه اندازی کنید، اما می خواهید اسکریپت را در پوسته فعلی اجرا کنید، از دستور source استفاده کنید:

منبع script_name.sh

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

Willy:~/scripts> source script1.sh --output ommitted-- willy:~/scripts> echo $VALUE 9 willy:~/scripts>