خانه - تلویزیون هوشمند
مدیریت اوبونتو از طریق اسکریپت در ویندوز ایجاد اسکریپت autorun خود هنگام بوت کردن رایانه

اگر سوال این است: "چگونه یک برنامه را به راه اندازی اضافه کنیم؟" - کاربران مبتدی به سرعت پاسخ را پیدا می کنند، سپس سوال اجرای اسکریپت در حین خاموش کردن/راه اندازی مجدد آنها را گیج می کند. در این مقاله روش استاندارد برای اجرای خودکار دستورات هنگام روشن و خاموش کردن لینوکس و همچنین روش ساده‌تری برای کاربرانی که gdm نصب کرده‌اند و یک رابط گرافیکی مانند ubuntu دارند، توضیح می‌دهد.

گزینه کنسول

کمی تئوری
باید بدانید که در لینوکس 7 سطح اجرا وجود دارد. با این حال فقط 6 عدد قابل استفاده است.
مانند همه برنامه های احترام به خود، شمارش معکوس از 0 شروع می شود.
0 - سیستم را متوقف یا خاموش کنید.
1 - حالت تک کاربره.
2 - حالت چند کاربره ولی بدون پشتیبانی شبکه.
3 - همینطوره ولی با شبکه.
4 - برای زیبایی اضافه شده استفاده نشده است.
5 - حالت گرافیکی با بارگذاری سرور X.
6 - راه اندازی مجدد
اگر به پوشه /etc بروید (در برخی از توزیع‌ها /etc/rc.d) می‌توانید پوشه‌هایی را با 7 سطح اجرا ببینید.

به عنوان مثال، هنگامی که کامپیوتر را خاموش می کنید، تمام اسکریپت های پوشه rc0.d اجرا می شوند.


در اینجا باید با جزئیات بیشتری صحبت کنیم. واقعیت این است که خود اسکریپت ها (یا بهتر است بگوییم اسکریپت ها) در این پوشه نیستند، اما فقط پیوندهایی به فایل هایی وجود دارد که در پوشه /etc/init.d هستند. این اسکریپت ها بسته به پارامتر شروع یا توقف، وظایف مختلفی را انجام می دهند (به عنوان مثال /etc/init.d/reboot start و /etc/init.d/reboot stop دستورهای متفاوتی هستند، اما /etc/init.d/reboot کار نخواهد کرد. در تمام کار). اگر حرف اول لینک S باشد، پارامتر start به اسکریپت داده می شود و اگر حرف K (از کلمه kill) داده شود، پارامتر stop داده می شود. عدد بعد از حرف نشان دهنده ترتیب اجرای اسکریپت است.
برای مثال، در اسکرین شات درج شده بالا، ابتدا دستور /etc/init.d/hddtemp stop و سپس /etc/init.d/networking start اجرا می شود.
تئوری بس است بیایید به سراغ تمرین برویم.
برای اضافه کردن یک دستور به راه اندازی، کافی است آن را در فایل /etc/rc.local قرار دهید.

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

sudo nano /etc/rc.local

و دستورات خود را درست بالای خط خروجی 0 قرار می دهیم.
برای اینکه دستورات قبل از خاموش شدن یا راه اندازی مجدد اجرا شوند، باید یک اسکریپت در پوشه /etc/init.d ایجاد کنیم.

sudo nano /etc/init.d/scriptname

کد زیر را قرار دهید:

#! /bin/sh
مورد "$1" در
شروع)
اکو "سیگنال شروع داده شده"
;;
متوقف کردن)
اکو "سیگنال توقف داده شده"
;; اساک

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

...
مورد "$1" در
شروع)
#
;;
...

حالا فایل را قابل اجرا می کنیم:

sudo chmod +x /etc/init.d/scriptname

sudo update-rc.d script_name start 20 0 6 . توقف 1 0 6 .

نکات مهم هستند (هر دو). در حین کاوش در اینترنت، این تصور را داشتم که نحو این برنامه گاهی اوقات تغییر می کند. نمونه های فعلی را می توان با استفاده از دستور "man update-rc.d" مشاهده کرد. نمونه ها در پایین خواهند بود.

این دستور 2 لینک در دایرکتوری های /etc/rc ایجاد می کند 0 .d (شماره دوم در دستور) و /etc/rc 6 .d (شماره سوم در دستور). علاوه بر این، اسکریپت با پارامتر توقف ابتدا اجرا می شود (زیرا 1 هزینه دارد)، و تنها پس از آن با پارامتر شروع (از آنجایی که هزینه آن 20 است).
اگر پارامتر دوم مورد نیاز نیست، می توانید دستور زیر را اجرا کنید:

sudo update-rc.d script_name stop 1 0 6 .

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

برای کاربران اوبونتوو بسیاری از توزیع های مدرن دیگر با gdm قابل استفاده هستند...

گزینه گرافیکی

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

gnome-session-properties

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

sudo gedit /etc/gdm/PostSession/Default

درست بالای خط خروجی 0.

نوشتن اسکریپت در لینوکس (یادگیری با مثال)

———————————————————————————-

1. معرفی

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

چرا اسکریپت مورد نیاز است؟
اولاً، مدیریت یک سرور لینوکس به یک درجه یا درجه دیگر منجر به اجرای سیستماتیک همان دستورات می شود. علاوه بر این، لازم نیست که این دستورات توسط شخص انجام شود. می توان آنها را طوری برنامه ریزی کرد که توسط یک ماشین اجرا شوند.
ثانیاً، حتی انجام یک کار معمولی، که (به طور ناگهانی) به 20-1000 ... عملیات یکنواخت می رسد، بسیار راحت تر در یک اسکریپت پیاده سازی می شود.

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

چگونه یک اسکریپت بنویسیم
در مورد ما، اسکریپت یک فایل متنی با ویژگی های اجرایی خواهد بود. اگر یک فایل اسکریپت با دنباله # شروع شود، که در دنیای یونیکس sha-bang نامیده می شود، آنگاه به سیستم می گوید که از کدام مفسر برای اجرای اسکریپت استفاده کند. اگر درک این موضوع دشوار است، پس فقط به یاد داشته باشید که ما شروع به نوشتن همه اسکریپت ها با خط #!/bin/bash یا #!/bin/sh می کنیم و سپس دستورات و کامنت ها برای آنها دنبال می شود.

کلمات جدایی
من صمیمانه به شما توصیه می کنم که تقریباً در تمام خطوط فیلمنامه تا حد امکان نظرات خود را بنویسید. زمان می گذرد و شما باید فیلمنامه ای را که زمانی نوشته اید تغییر دهید یا مدرن کنید. اگر آنچه در فیلمنامه نوشته شده را به خاطر نمی آورید یا نمی فهمید، تغییر آن دشوار می شود؛ نوشتن از ابتدا آسان تر است.

چه اسکریپت هایی ممکن است نیاز داشته باشیم:

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

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

———————————————————————————-

2. آموزش نوشتن اسکریپت به زبان داخلی BASH
اصلی: https://www.linuxconfig.org/Bash_scripting_Tutorial

این آموزش بدون دانش قبلی در مورد نحوه نوشتن اسکریپت ها با استفاده از زبان Bash داخلی فرض می کند. با کمک این راهنما، به زودی متوجه خواهید شد که نوشتن اسکریپت کار بسیار ساده ای است. بیایید آموزش خود را با یک اسکریپت ساده شروع کنیم که رشته "Hello World!" (ترجمه شده از انگلیسی - سلام به همه!)

1. سناریوی "سلام به همه"
این اولین نمونه اسکریپت bash شما است:

#!/bin/bash
اکو "سلام جهان"

بیایید به دایرکتوری حاوی فایل hello_world.sh برویم و آن را قابل اجرا کنیم:

کد: همه $ chmod +x hello_world.sh را انتخاب کنید

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

کد: همه $ ./hello_world.sh را انتخاب کنید

2. اسکریپت bash بایگانی ساده

#!/bin/bash
tar -czf myhome_directory.tar.gz /home/user

کد: همه $ ./backup.sh را انتخاب کنید

$ du -sh myhome_directory.tar.gz
41M myhome_directory.tar.gz

3. کار با متغیرها
که در در این مثالیک متغیر ساده را اعلام کرده و با استفاده از دستور echo روی صفحه نمایش می دهیم

#!/bin/bash
STRING="سلام جهان!!!"
پژواک $STRING

کد: همه $ ./hello_world.sh را انتخاب کنید
سلام دنیا!!!

اسکریپت بایگانی ما با متغیرها:

#!/bin/bash
OF=myhome_directory_$(تاریخ +%Y%m%d).tar.gz
IF=/home/user
tar -czf $OF $IF

کد: همه $ ./backup.sh را انتخاب کنید
tar: حذف "\" اصلی از نام اعضا
$ du -sh *tar.gz
41M myhome_directory_20100123.tar.gz

3.1 متغیرهای جهانی و محلی

#!/bin/bash
# یک متغیر جهانی اعلام کنید
# چنین متغیری را می توان در هر جایی از این اسکریپت استفاده کرد
VAR = متغیر جهانی
تابع bash(
# یک متغیر محلی را اعلام کنید
# چنین متغیری فقط برای تابعی که در آن اعلان شده است معتبر است
local VAR=”متغیر محلی”
پژواک $VAR
}
پژواک $VAR
ضربه شدید
# توجه داشته باشید که متغیر جهانی تغییر نکرده است
پژواک $VAR

کد: همه $ ./variables.sh را انتخاب کنید
متغیر جهانی
متغیر محلی
متغیر جهانی

4. آرگومان ها را به اسکریپت منتقل کنید

#!/bin/bash
# برای دسترسی به آرگومان ها از متغیرهای از پیش تعریف شده استفاده کنید
# آرگومان ها را روی صفحه چاپ کنید
echo $1 $2 $3 " -> echo $1 $2 $3"

#ما همچنین می توانیم از طریق یک آرایه خاص به آرگومان ها دسترسی داشته باشیم args=("$@")
# آرگومان ها را روی صفحه چاپ کنید
echo $(args) $(args) $(args) ‘ -> args=(“$@”); اکو $(args) $(args) $(args)'

# از $@ برای چاپ همه آرگومان ها به طور همزمان استفاده کنید
echo $@ ' -> echo $@'

از متغیر $# برای نمایش تعداد آرگومان های ارسال شده به اسکریپت استفاده کنید
echo تعداد آرگومان های ارسال شده: $# ' -> echo تعداد آرگومان های ارسال شده: $#'

کد: همه $ ./arguments.sh آموزش اسکریپت Bash را انتخاب کنید
آموزش اسکریپت Bash -> echo $1 $2 $3
آموزش اسکریپت Bash -> args=("$@"); اکو $(args) $(args) $(args)
آموزش اسکریپت Bash -> echo $@
تعداد آرگومان های ارسال شده: 3 -> echo تعداد آرگومان های ارسال شده: $#

5. اجرای دستورات پوسته در یک اسکریپت

#!/bin/bash
# برای اجرای یک فرمان پوسته از بک گیومه های " ` ` " استفاده کنید
پژواک 'uname -o'
# حالا بیایید بدون نقل قول امتحان کنیم
پژواک uname -o

کد: همه $ uname -o را انتخاب کنید
گنو/لینوکس
$ ./bash_backtricks.sh
گنو/لینوکس
unname -o

همانطور که می بینید، در مورد دوم خود فرمان نمایش داده شد و نه نتیجه اجرای آن

6. خواندن ورودی کاربر (تعاملی)

#!/bin/bash
echo -e "سلام، لطفا کلمه: \c" را تایپ کنید
کلمه را بخوانید
echo "کلمه ای که وارد کردید این است: $word"
echo -e "میشه لطفا دو کلمه وارد کنید؟ »
word1 word2 را بخوانید
echo "اینجا ورودی شماست: \"$word1\" \"$word2\""
echo -e «در مورد bash scripting چه احساسی دارید؟ »
دستور # read اکنون یک پاسخ را در متغیر داخلی پیش‌فرض $REPLY ذخیره می‌کند
خواندن
echo "شما گفتید $REPLY، من از شنیدن آن خوشحالم! »
echo -e “رنگ های مورد علاقه شما چیست؟ »
# -a دستور خواندن را برای خواندن در یک آرایه می سازد
خواندن -a رنگ
echo "رنگ های مورد علاقه من نیز $(رنگ ها)، $(رنگ ها) و $(رنگ ها):-) هستند"

کد: همه $ ./read.sh را انتخاب کنید
سلام، لطفا کلمه را تایپ کنید: چیزی
کلمه ای که وارد کردید این است: چیزی
میشه لطفا دو کلمه وارد کنید؟
لینوکس دبیان
ورودی شما این است: "Debian" "Linux"
در مورد bash scripting چه احساسی دارید؟
خوب
خوب گفتی، خوشحالم که شنیدم!
رنگ های مورد علاقه شما چیست؟
آبی سبز سیاه
رنگ های مورد علاقه من نیز آبی، سبز و مشکی هستند:-)

7. استفاده از تله

#!/bin/bash
# اعلام تله
تله bashtrap INT
#صفحه نمایش را پاک کنید
روشن؛
# تابع قلاب زمانی اجرا می شود که کاربر CTRL-C را فشار دهد:
# صفحه نمایش داده می شود => اجرای زیربرنامه bash trap !
# اما اسکریپت به اجرا ادامه خواهد داد
bashtrap()
{
echo "CTRL+C شناسایی شد!…در حال اجرای bash trap!"
}
# اسکریپت تا 10 شمارش خواهد شد
برای یک در «دنباله 1 10»؛ انجام دادن
بازتاب "$a/10 برای خروج."
خواب 1;
انجام شده
echo "Exit Bash Trap Example!!!"

کد: همه $ ./trap.sh را انتخاب کنید
1/10
2/10
3/10
4/10
5/10
6/10

7/10
8/10
9/10
CTRL+C شناسایی شد!...در حال اجرای bash trap!
10/10
خروج از Bash Trap مثال!!!

همانطور که می بینید، کلید ترکیبی Ctrl-C اجرای اسکریپت را متوقف نکرد.

8. آرایه ها
8.1 اعلام یک آرایه ساده

#!/bin/bash
# یک آرایه ساده با 4 عنصر اعلام کنید
ARRAY=('Debian Linux' 'Redhat Linux' لینوکس اوبونتو)
# تعداد عناصر موجود در آرایه را بدست آورید
ELEMENTS=$(#ARRAY[@])

حلقه # از طریق هر عنصر آرایه
برای ((i=0;i<$ELEMENTS;i++)); do
echo $(ARRAY[$(i)])
انجام شده

کد: همه $./arrays.sh را انتخاب کنید
لینوکس دبیان
لینوکس Redhat
اوبونتو
لینوکس

8.2 پر کردن آرایه با مقادیر فایل

#!/bin/bash
# یک آرایه را اعلام کنید
آرایه -a را اعلام کنید
# دستور exec # stdin (معمولاً صفحه کلید) از این فایل مشتق می شود. این امکان خواندن را فراهم می کند
# محتویات فایل، خط به خط، و هر خط وارد شده را با استفاده از sed و/یا awk تجزیه کنید.
اجرایی 10 اجازه دهید count=0

در حالی که LINE را بخوانید<&10; do

آرایه[$count]=$LINE
((شمارش ++))
انجام شده

echo تعداد عناصر: $(#ARRAY[@])
# چاپ مقادیر آرایه
echo $(ARRAY[@])
#فایل را ببندید
exec 10>&-

کد: همه $ cat bash.txt را انتخاب کنید
لینوکس دبیان
لینوکس Redhat
اوبونتو
لینوکس
$ ./arrays.sh
تعداد عناصر: 4
Debian Linux Redhat Linux Ubuntu Linux

9. اگر-پس شرایط دیگر
9.1. استفاده ساده از شرایط "اگر-دیگر".
به فضاهای براکت های مربع توجه کنید که بدون آن شرایط کار نمی کند.

#!/bin/bash
directory="./BashScripting"

# حضور دایرکتوری را بررسی کنید
اگر [-d $directory ]; سپس
echo "دایرکتوری وجود دارد"
دیگر
echo "دایرکتوری وجود ندارد"
فی

کد: همه $ ./if_else.sh را انتخاب کنید
دایرکتوری وجود ندارد
$ mkdir BashScripting
$ ./if_else.sh
دایرکتوری وجود دارد

9.2 تودرتو شرایط if-else

#!/bin/bash
# یک متغیر با مقدار 4 اعلام کنید
انتخاب=4
# نمایش دادن
اکو "1. ضربه شدید"
اکو "2. اسکریپت"
اکو "3. آموزش "

# اجرا کنید در حالی که متغیر برابر با چهار است
# حلقه زدن
در حالی که [ $choice -eq 4 ]; انجام دادن

# ورودی کاربر را بخوانید
انتخاب را بخوانید
# تودرتو شرط if-else
اگر [ $choice -eq 1 ] ; سپس

echo "شما کلمه را انتخاب کردید: Bash"

اگر [ $choice -eq 2 ] ; سپس
echo "شما کلمه را انتخاب کردید: اسکریپت"
دیگر

اگر [ $choice -eq 3 ] ; سپس
echo "شما کلمه را انتخاب کردید: آموزش"
دیگر
echo "لطفا بین 1-3 انتخاب کنید!"
اکو "1. ضربه شدید"
اکو "2. اسکریپت"
اکو "3. آموزش "
echo -n "لطفا یک کلمه انتخاب کنید؟ »
انتخاب=4
فی
فی
فی
انجام شده

کد: همه $ ./nested.sh را انتخاب کنید
1. بش
2. اسکریپت
3. آموزش

5

1. بش
2. اسکریپت
3. آموزش
لطفا یک کلمه انتخاب کنید؟
4
لطفا بین 1-3 انتخاب کنید!
1. بش
2. اسکریپت
3. آموزش
لطفا یک کلمه انتخاب کنید؟
3
شما کلمه را انتخاب کرده اید: آموزش

بنابراین، بدنه حلقه "while" ابتدا اجرا می شود، زیرا متغیر انتخاب در ابتدا برابر با چهار است. سپس ورودی کاربر را در آن می خوانیم و اگر ورودی برابر با 1،2 یا 3 نباشد، دوباره متغیر خود را برابر با 4 می کنیم و بنابراین بدنه حلقه تکرار می شود (باید 1،2 یا 1،2 را وارد کنید. 3 دوباره).

10. مقایسه ها
10.1 مقایسه های حسابی

آن<
-gt>
-le<=
-ge >=
-eq ==
-ne !=

#!/bin/bash

NUM1=2
NUM2=2
اگر [ $NUM1 -eq $NUM2 ]; سپس
echo "هر دو مقدار برابر هستند"
دیگر
echo "ارزش ها برابر نیستند"
فی

کد: همه $ ./equals.sh را انتخاب کنید
هر دو ارزش برابر هستند

#!/bin/bash
# متغیرها را با مقادیر صحیح اعلام کنید
NUM1=2
NUM2=3
اگر [ $NUM1 -eq $NUM2 ]; سپس
echo "هر دو مقدار برابر هستند"
دیگر
echo "ارزش ها برابر نیستند"
فی

کد: همه $ ./equals.sh را انتخاب کنید
ارزش ها برابر نیستند

#!/bin/bash
# متغیرها را با مقادیر صحیح اعلام کنید
NUM1=2
NUM2=1
اگر [ $NUM1 -eq $NUM2 ]; سپس
echo "هر دو مقدار برابر هستند"
elif [ $NUM1 -gt $NUM2 ]; سپس
echo "$NUM1 بزرگتر از $NUM2 است"
دیگر
echo "$NUM2 بزرگتر از $NUM1 است"
فی

کد: همه $ ./equals.sh را انتخاب کنید
2 بزرگتر از 1 است

10.2 مقایسه کاراکتر و متن

همینطور
!= یکسان نیست
< меньще чем
> بیشتر از
-n s1 متغیر s1 خالی نیست
-z s1 متغیر s1 خالی است

#!/bin/bash

S1="Bash"

S2 = اسکریپت نویسی
اگر [ $S1 = $S2 ]; سپس

دیگر
echo "رشته ها برابر نیستند"
فی

کد: همه $ ./statement.sh را انتخاب کنید
رشته ها برابر نیستند

#!/bin/bash
# متغیر کاراکتر S1 را اعلام کنید
S1="Bash"
# متغیر کاراکتر S2 را اعلام کنید
S2 = "Bash"
اگر [ $S1 = $S2 ]; سپس
echo "هر دو رشته برابر هستند"
دیگر
echo "رشته ها برابر نیستند"
فی

کد: همه $ ./statement.sh را انتخاب کنید
هر دو رشته برابر هستند

11. بررسی فایل ها

B نام فایل Block فایل ویژه
-c نام فایل فایل کاراکتر ویژه
-d نام دایرکتوری وجود دایرکتوری را بررسی کنید
-e نام فایل وجود فایل را بررسی کنید
-f نام فایل وجود فایل معمولی را بررسی کنید نه دایرکتوری
-نام فایل G بررسی کنید آیا فایل وجود دارد و متعلق به شناسه گروه موثر است.
-g نام فایل true اگر فایل وجود داشته باشد و set-group-id باشد.
-k نام فایل Sticky bit
-L نام فایل پیوند نمادین
-O نام فایل True اگر فایل وجود داشته باشد و متعلق به شناسه کاربر موثر باشد.
-r نام فایل بررسی کنید که آیا فایل قابل خواندن است یا خیر
نام فایل -S بررسی کنید که آیا فایل سوکت است یا خیر
نام فایل -s بررسی کنید که آیا اندازه فایل غیرصفر است
-u نام فایل بررسی کنید که آیا فایل set-ser-id بیت تنظیم شده است
-w نام فایل بررسی کنید آیا فایل قابل نوشتن است یا خیر
-x نام فایل بررسی کنید که آیا فایل قابل اجرا است یا خیر

#!/bin/bash
file="./file"
اگر [ -e $file ]; سپس
echo "فایل وجود دارد"
دیگر
echo "فایل وجود ندارد"
فی

کد: همه $ ls را انتخاب کنید
file.sh
$ ./file.sh
فایل موجود نیست
فایل لمسی $
$ls
فایل file.sh
$ ./file.sh
فایل وجود دارد

به طور مشابه، به عنوان مثال، ما می توانیم از حلقه های "while" برای بررسی اینکه آیا فایل وجود ندارد استفاده کنیم. این اسکریپت تا زمانی که فایل وجود داشته باشد، می‌خوابد. به نفی کننده Bash "!" توجه کنید. که گزینه -e را نفی می کند (معکوس می کند).

12. چرخه ها
12.1. برای حلقه

#!/bin/bash
# برای حلقه
برای f در $(ls /var/); انجام دادن
پژواک $f
انجام شده

اجرای یک حلقه for از خط فرمان bash:

کد: همه $ را برای f در $ (ls /var/) انتخاب کنید. انجام echo $f; کد done: همه $ را برای f در $ (ls /var/) انتخاب کنید. انجام echo $f; انجام شده
پشتیبان گیری
حافظه پنهان
تصادف در
بازی ها
lib
محلی
قفل کردن
ورود به سیستم
پست الکترونیکی
انتخاب کردن
اجرا کن
قرقره
tmp
www

12.2. در حالی که حلقه

#!/bin/bash
COUNT=6
حلقه # while
در حالی که [ $COUNT -gt 0 ]; انجام دادن

اجازه دهید COUNT=COUNT-1
انجام شده

کد: همه $ ./while_loop.sh را انتخاب کنید
مقدار شمارش: 6
مقدار شمارش: 5
مقدار شمارش: 4
مقدار شمارش: 3
مقدار شمارش: 2
مقدار شمارش: 1

12.3. تا حلقه

#!/bin/bash
COUNT=0
# تا حلقه
تا [$COUNT -gt 5 ]; انجام دادن
echo مقدار شمارش: $COUNT است
اجازه دهید COUNT=COUNT+1 باشد
انجام شده

کد: همه $ ./until_loop.sh را انتخاب کنید
مقدار شمارش: 0 است
مقدار شمارش: 1
مقدار شمارش: 2
مقدار شمارش: 3
مقدار شمارش: 4
مقدار شمارش: 5

12.4. حلقه هایی با شرایط ضمنی
در مثال زیر شرط حلقه while وجود ورودی استاندارد است.
تا زمانی که چیزی برای تغییر مسیر از خروجی استاندارد به دستور خواندن وجود داشته باشد، بدنه حلقه اجرا خواهد شد.

#!/bin/bash
# این اسکریپت فضاها را جستجو و حذف می کند
# در فایل‌ها، جایگزین کردن آن‌ها با زیرخط
DIR="
کنترل یک حلقه با دستور خواندن با تغییر مسیر خروجی درون حلقه.
$DIR -type f | را پیدا کنید هنگام خواندن فایل؛ انجام دادن
# از کلاس POSIX [:space:] برای یافتن فاصله در نام فایل ها استفاده کنید
اگر [[ "$file" = *[[:space:]]* ]]; سپس
# فاصله ها را با زیرخط جایگزین کنید
mv "$file" `echo $file | tr ""_"
fi;
انجام شده

کد: همه $ ls -1 را انتخاب کنید
script.sh
$ "فایل با فاصله" را لمس کنید
$ls -1
فایل با فاصله
script.sh
$ ./script.sh
$ls -1
file_with_spaces
script.sh

13. توابع

#!/bin/bash
# توابع را می توان به هر ترتیبی اعلام کرد
تابع تابع_B(
عملکرد اکو B.
}
تابع تابع_A (
اکو 1 دلار
}
تابع تابع_D(
عملکرد اکو D.
}
تابع تابع_C(
اکو 1 دلار
}
# توابع تماس
# پارامتر را به تابع A ارسال کنید
function_A "عملکرد A."
function_B
# پارامتر را به تابع C منتقل کنید
function_C "عملکرد C."
function_D

کد: همه $ ./functions.sh را انتخاب کنید
تابع A.
تابع B.
تابع C.
تابع D.

14. عملگر انتخاب - انتخاب کنید

#!/bin/bash
PS3 = "یک کلمه را انتخاب کنید: "
#انتخاب کنید
کلمه را در "linux" "bash" "اسکریپت نویسی" "آموزش" انتخاب کنید
انجام دادن
echo "کلمه ای که انتخاب کرده اید این است: $word"
# لغو کنید، در غیر این صورت حلقه بی پایان خواهد بود.
زنگ تفريح
انجام شده
خروج 0

کد: همه $ ./select.sh را انتخاب کنید
1) لینوکس
2) بش
3) اسکریپت نویسی
4) آموزش
یک کلمه را انتخاب کنید: 4
کلمه ای که انتخاب کرده اید این است: آموزش

15. اپراتور انتخاب - مورد

#!/bin/bash
echo "زبان برنامه نویسی / برنامه نویسی ترجیحی شما چیست"
اکو "1) bash"
اکو "2)perl"
اکو "3) فیتون"
اکو "4) c++"
پژواک "5) من نمی دانم!
خواندن مورد;
# ساختار انتخاب مورد ساده
# توجه داشته باشید که در این مثال $case فقط یک متغیر است
# و لازم نیست به این نام خوانده شود. این فقط یک مثال است
مورد $case در
1) echo "شما bash را انتخاب کردید"؛;
2) echo "شما پرل را انتخاب کردید"؛;
3) اکو "شما فیتون را انتخاب کردید"؛;
4) echo "شما c++ را انتخاب کردید"؛;
5) خروج
اساک

کد: همه $ ./case.sh را انتخاب کنید
زبان برنامه نویسی / برنامه نویسی ترجیحی شما چیست؟
1) بش
2) پرل
3) فیتون
4) c++
5) نمی دانم!
4
شما c++ را انتخاب کردید

———————————————————————————-

اطلاعات دقیق تر را می توان از منابع مختلف به دست آورد، به عنوان مثال در اینجا
اصلی: https://www.linuxconfig.org/Bash_scripting_Tutorial
https://ruslandh.narod.ru/howto_ru/Bash-Prog-Intro/
https://bug.cf1.ru/2005-03-17/programmin… -book.html

https://ubuntologia.ru/forum/viewtopic.php?f=109&t=2296

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

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

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

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

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

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

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

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

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

اسکریپت های راه اندازی سرویس ها در لینوکس اوبونتو در /etc/init.d قرار دارند

برای اینکه اسکریپت به طور خودکار در هنگام راه اندازی سیستم اجرا شود، باید یک پیوند نمادین به اسکریپت ایجاد کنید و آن را در پوشه /etc/rc.d/rcN.d قرار دهید، جایی که N سطح اجرای اسکریپت است.

سطح 0

توقف سیستم (توقف) - عملیات سیستم باید متوقف شود.

سطح 1

حالت عملکرد تک کاربر - کنسول بازیابی.

سطح 2

حالت چند کاربره - کاربران می توانند در پایانه های مختلف کار کنند.

سطح 3

حالت شبکه چند کاربر - شبکه پیکربندی شده و خدمات شبکه راه اندازی می شود.

سطح 4

عملا استفاده نمی شود

سطح 5

راه اندازی زیرسیستم گرافیکی X11 - ورود به سیستم قبلاً در حالت گرافیکی انجام شده است.

سطح 6

اغلب، سطوح بوت 3 یا 5 در هنگام بوت شدن سیستم استفاده می شود.

نام پیوند در دایرکتوری /etc/rc.d/rcN.d معنای خاصی دارد، به عنوان مثال: اگر پیوندهای /etc/rc.d/rcN.d/@K99cpu_t و /etc/rc.d/ rcN.d/@S00cpu_t به همان فایل /etc/init.d/cpu_t نشان می دهد، سپس اسکریپت @K99cpu_t یک بلوک کد مربوط به خاموش شدن سیستم را در cpu_t اجرا می کند و اسکریپت @S00cpu_t در cpu_t یک بلوک اجرا می کند. کد مربوط به شروع سیستم، دو رقم در ابتدای نام پیوندهای نمادین ترتیب اجرای اسکریپت ها در دایرکتوری /etc/rc.d/rcN.d را مشخص می کند.

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

#!/bin/sh # chkconfig: - 98 02 # توضیحات: توضیحات فرآیند # نام فرآیند: نام فرآیند # کتابخانه تابع منبع. اگر [ -f /etc/init.d/functions] ; سپس. /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions] ; سپس. /etc/rc.d/init.d/functions else exit 0 fi KIND="ServiceName" start() (echo -n $"Starting $KIND services: " daemon /usr/local/sbin/executable echo ) stop() ( echo -n $"خاموش کردن خدمات $KIND: " killproc executable echo ) restart() ( echo -n $"راه اندازی مجدد خدمات $KIND: " killproc executable daemon /usr/local/sbin/executable echo ) مورد "$1" در شروع) شروع ;; ایست ایست ؛؛ راه اندازی مجدد) راه اندازی مجدد ;; *) echo $"استفاده: $0 (شروع|توقف|راه اندازی مجدد)" خروج 1 esac خروج $؟

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

# chkconfig: - 98 02

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

به عبارت ساده تر، این اسکریپت در 98 به ترتیب صف ها راه اندازی می شود و در رتبه دوم متوقف می شود.

حالا برای کارگاه

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

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

2. اسکریپت اجرایی را در /etc/rc.d/init/ قرار دهید

3. دستور chkconfig --add executable_script را اجرا کنید

4. دستور setup یا servicevonf را اجرا کنید (بسته به اینکه در حالت گرافیکی یا کنسول کار می کنید) و سرویسی را انتخاب کنید که نام آن executable_script خواهد بود.

اجرای یک اسکریپت زمانی که شبکه روشن/خاموش است

یک دایرکتوری /etc/network/ با زیر شاخه های if-down.d، if-pre-up.d، if-post-down.d، if-up.d وجود دارد. اگر اسکریپت را در یکی از این زیر شاخه ها قرار دهید، به ترتیب هنگام خاموش کردن، قبل از روشن کردن، پس از خاموش کردن یا هنگام روشن کردن شبکه اجرا می شود.

راه دیگر این است که یکی از دستورات زیر را در فایل /etc/network/interfaces مشخص کنید: up, pre-up, post-up, down, pre-down, post-down. مثلا خط

post-up /path/to/script.sh

پس از روشن کردن شبکه، اسکریپت script.sh را اجرا می کند. می توانید در رابط های man بیشتر بخوانید.

در هر صورت، اسکریپت باید دارای حقوق اجرایی تنظیم شده باشد، در غیر این صورت قادر به اجرا نخواهد بود.

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

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

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

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

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

بنابراین، یک ویرایشگر متن باز کنید 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) برای انجام به روز رسانی سیستم:


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

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

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

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

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

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

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

به روز رسانی 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و غیره، تا بتوانید خودتان در هر زمان از اسکریپت استفاده کنید یا به دوستان یا اقوام خود در راه اندازی سیستم کمک کنید.



 


خواندن:



رتبه بندی بهترین هدفون های بی سیم

رتبه بندی بهترین هدفون های بی سیم

آیا می توان گوش های یونیورسال را با قیمت ارزان خریداری کرد؟ 3000 روبل - آیا می توان برای چنین پولی هدفون های باکیفیت خریداری کرد؟ همانطور که معلوم شد، بله. و گفتار...

دوربین اصلی موبایل معمولاً در پشت بدنه قرار دارد و برای گرفتن عکس و فیلم استفاده می شود

دوربین اصلی موبایل معمولاً در پشت بدنه قرار دارد و برای گرفتن عکس و فیلم استفاده می شود

نسخه به روز شده تبلت با ویژگی های بهبود یافته و استقلال بالا. گوشی های هوشمند ایسر به ندرت بازدید می شوند...

چگونه با حفظ شماره خود به اپراتور دیگری سوئیچ کنید

چگونه با حفظ شماره خود به اپراتور دیگری سوئیچ کنید

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

بررسی یک فبلت، گران، اما بسیار شایسته

بررسی یک فبلت، گران، اما بسیار شایسته

نقد و بررسی یک فبلت گران قیمت اما بسیار شایسته 1394/03/20 من تنها کفاش در جهان بدون چکمه، منتقد گوشی هوشمند بدون گوشی هوشمند خودم هستم ....

فید-تصویر RSS