Аппараттық және бағдарламалық қамтамасыз етуді орнату

Барлық жағдайларға арналған қабық сценарийлерінің таңдауы. Linux жүйесінде өз сценарийіңізді (скрипт сценарийін) қалай жасауға болады Shell linux жүйесінде дайын сценарийлер

Жүйе әкімшілері мен қарапайым Linux пайдаланушылары қоғамында белгілі бір мақсаттарды іске асыруды жеңілдету және жеңілдету үшін Bash сценарийлерін жазу өте танымал тәжірибе болып табылады. операциялық жүйе linux. Бұл мақалада біз Bash тілінде сценарий жазуды қарастырамыз, негізгі операторларды, сондай-ақ олардың қалай жұмыс істейтінін, былайша айтқанда, bash сценарийлерін нөлден бастап қарастырамыз. Қарапайым тілмен айтқанда, сіз бір рет орындау қажет оқиғалардың ретін жаздыңыз, деректерді бояңыз және т.б., содан кейін бір шағын команданы оңай және қарапайым жазасыз және барлық процедуралар қажет болған жағдайда орындалады.

Одан әрі баруға және сценарий-a-ны автоматты түрде орындауға жоспарлауға болады. Егер сіз әлдеқашан тәжірибелі пайдаланушы болсаңыз, терминал арқылы әртүрлі әрекеттерді жиі жасайсыз. Бұл жай ғана мысал және мұндай әрекеттер өте көп, тіпті сақтық көшірме жасау және көшірілген файлдарды қашықтағы серверге жүктеп салу. Көбінесе бірнеше командаларды кезекпен орындау қажет тапсырмалар бар, мысалы, жүйені жаңарту үшін алдымен репозиторийлерді жаңарту керек, содан кейін ғана пакеттердің жаңа нұсқаларын жүктеп алу керек.

Бұл жоғары жылдамдықта басталатын және әртүрлі жұмыстарды жемісті орындайтын әртүрлі командаларды шығару мүмкіндігіне ие болатын командалық қабық. Linux ОЖ-нің барлық күші терминалды пайдалануда. Сондықтан бір пәрмендерді бірнеше рет термеу үшін сценарийлерді пайдалануға болады. Бұл өте ыңғайлы, сіз белгілі бір әсер ететін бірнеше пәрмендерді біріктіресіз, содан кейін оларды бірдей пәрменмен немесе тіпті төте жолмен орындаңыз. Linux операциялық жүйесі үшін әртүрлі командалық қабықшаларда орындалатын көптеген сценарийлер жасалған. Негізінде, сіз мұны түсінгеніңіз анық.

Амалдық жүйе орындалатын сипаттама тағайындалған файлдарды ғана орындалатын деп санайды. Ал қазірдің өзінде интерпретатор бір қатарда жолды айтады және файлда бар барлық директиваларды орындайды. Бірақ егер олар үшін орындалу сипаттамасы орнатылған болса, онда мамандандырылған компьютерлік бағдарлама- аудармашы, атап айтқанда, bash қабығы. Біз оны терминал сервері арқылы кез келген басқа бағдарлама сияқты іске қоса аламыз немесе қабықты орындап, қай файлды орындау керектігін айта аламыз.

Бұл жағдайда сізге орындалатын жалау да қажет емес. Оның орнына файлды бастау қолтаңбалары мен арнайы жалаушалар қолданылады. Бізде сценарийді жасаудың бірнеше түрлі әдістері бар - Linux операциялық жүйесінде қосу. Linux жүйесінде файл кеңейтімі оның түрін жүйелік деңгейде анықтау үшін іс жүзінде қолданылмайды. Файл менеджерлері мұны істей алады, бірақ әрқашан емес. Амалдық жүйе орындалатын сипаттама тағайындалған файлдарды ғана орындалатын деп санайды. Бұл мәтінді қамтитын қарапайым файлдар.

Bash сценарийлері манекендерге арналған Linux

Bash құрылымын ұқсас түрі бар 7 міндеттемеде сипаттауға болады: "қабық шақыруы - bash сценарийінің денесі - сценарийдің соңы". Сценарийлер әртүрлі мәтіндік редакторлардың қолдауымен жазылады, олар мәтіндік компьютер деректері ретінде сақталады. Бірақ оны ыңғайлы ету үшін мен оларды «*.sh» кеңейтімімен бірге сақтаймын. Бірақ мұның бәрін нақты мақсат тұрғысынан қарастырайық. Сипаттамалардың жеткілікті үлкен жиынтығымен іске қосылуды қажет ететін пайдалану бар. Сізге жиі бастау керек болады, және сіз осы сипаттамаларды енгізуге тым жалқаусыз. Нақтырақ болу үшін, бұл әсердің қалай көрінетінін көрейік:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u пайдаланушы -c 100

Бұл сценарий-a үшін bash интерпретаторын қолданайық. Біз үшін негізгі процесс - аудармашыны шақыру. Мәтіндік редакторды ашып, кодты жазыңыз.

Енгізілген айнымалыларды ескере отырып, бұл операцияны қосамыз:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u $user -c $cash

Біз журналдарға енгізетін мәтін келесідей болады: text = ««пайдаланушы» пайдаланушының балансы бір уақытта «қолма-қол» рубльмен толықтырылды»

Мәтіндік аргумент пайдаланушы айнымалыларына, ақша мен уақытқа байланысты өзгереді

егер [ -e /home/Admin/scripts/sgconf/sgconf.log] болса, мәтінді жаңғырық >> /home/Admin/scripts/sgconf/sgconf.log басқа мәтінді жаңғырық > /home/Admin/scripts/sgconf/sgconf.logfi

Енді біреуге ақша салу керек болғанда, біз сценарийді «sh sgconf.sh» пәрменімен іске қосамыз, төлеушінің атын және төлем сомасын енгіземіз. Ұзақ сызықтар, үнемі бірдей мәндерді енгізу арқылы бас ауруы жоқ.

Linux операциялық жүйесінде bash сценарийін жасаңыз

Тапқыр bash сценарийін жазу үшін бізге қарапайым процедураларды орындау керек. Linux пәрмен жолында бос файл жасаңыз (біз оны үлгі үшін firstscript деп атаймыз) және оны таңдаулы файлда өңдеу үшін ашыңыз мәтіндік редактор(vi/vim, nano, gedit және т.б.). Сценарийді әзірлеу үшін сізге көп стресс қажет емес, бірақ сценарийді (бағдарламаны) сызу үшін әртүрлі көмекші әдебиеттерді оқу керек. Біз ең қарапайым сценарийлерді сипаттайтын боламыз, сондықтан бастайық, бірақ терминалдың не екенін және оны қалай пайдалану керектігін білмесеңіз, онда сіз осындасыз. Ең басында, bash жазу үшін біз сценарийлер үшін каталогты және біз бәрін жазатын файлды жасауымыз керек, ол үшін терминалды ашамыз және каталог жасаймыз.

Жаңадан жасалған каталогқа ауысыңыз

Және файл жасаңыз

sudo geditscript.sh

Менің мысалда мен жүйені жаңарту сценарийін жасаймын, оны осы файлға жазамын. біз gedit мәтіндік редакторын ашамыз, маған vim көбірек ұнайды, бірақ ол сіз үшін жалпы қабылданбайды, сондықтан мен оны стандартты нұсқада көрсетемін.

sudo apt жаңарту;sudo apt толық жаңарту;

Сценарий файлын орындалатын етіп жасаңыз (егер ол әлі жоқ болса). Пәрмен жолынан sh сценарийлерін іске қосу оңай. Linux bash сценарийін іске қосыңыз.

chmod +x script.sh

Сценарийді оған жолды көрсету арқылы іске қосыңыз:

path/to/script.sh

Егер сценарий ағымдағы каталогта болса, сценарий файл атауының алдында ./ көрсету керек:

Кейде сценарийді іске қосу үшін суперпайдаланушы құқықтары талап етіледі, содан кейін сценарий алдында sudo пәрменін жазыңыз:

sudo./script.shsudo path/to/script.sh

Әрине, сценарийді аудармашыны тікелей тағайындау арқылы бастауға болады: sh, bash және т.б.

bash script.shsh path/to/script.sh

Көріп отырғаныңыздай, сіз терминалмен әлі таныс болмасаңыз да, Linux жүйесінде sh сценарийін бастау өте кең таралған тапсырма болып табылады. Шынында да көптеген сценарийлер бар және олардың кейбірін орындау қажет болуы мүмкін. Бұл нұсқаулықта біз Linux ОЖ пайдалану кезінде пайдалануға болатын кейбір пайдалы Linux bash сценарийлерін қарастырдық. Бұл мақалада біз жүйемен жұмыс істеу кезінде пайдалануға болатын пайдалы linux bash сценарийлерін қарастырдық. Олардың кейбіреулері бірнеше жолдан тұрады, бірнешеу бір жолға орналастырылады. Скрипттерде пайдалануға болатын шағын үзінділер де, консоль арқылы олармен жұмыс істеуге арналған толыққанды диалогтық сценарийлер де бар.

Linux консолі - Windows жүйесіндегі пәрмен жолы рұқсат етпейтін манипуляцияларды орындауға мүмкіндік беретін құрал, Linux консолі UNIX-тің айрықша белгісі болып табылады. Бүгін материал сценарийлерді қалай жазу керектігі туралы емес, жоқ, мен сізге қалай, нені және неге үйретпеймін. Біз әр түрлі тапсырмаларды шешу үшін күнделікті қолдануға болатын пайдалы сценарийлердің шағын таңдауын қарастырамыз, мысалы, бірнеше күндік ауа-райын алдын ала қарау, бір жолда веб-серверге арналған сценарийлер, бот жазу. Twitter және кез келген торрент клиентін автоматты түрде іске қосатын сценарий үшін.

Бұл материал сізге шамандықпен айналысу үшін жазылмаған, мен сізді консольде отыруға және графикалық интерфейсте тінтуірді тінтуірдің үстіне апару арқылы орындауға болатын кейбір әрекеттерді орындау үшін жүздеген таңбаларды теруге шақырмаймын. қажет. Бірақ бір нәрсе бар, бірақ әрқашан графикалық интерфейс ең жақсы шешім емес, көбінесе көптеген мәселелерді шешу үшін консоль мен сценарийлер тапсырманы графикалық интерфейсі бар қолданбаларға қарағанда әлдеқайда жақсы шешеді, сондықтан сценарийлер туралы ұмытпау керек, өйткені олар көптеген күнделікті жұмыстарды графикалық құралдарға қарағанда жақсырақ шешеді. Сондай-ақ, кез келген DE консольді ашпай-ақ оңай іске қосуға болатын сценарийлер үшін белгішені жасауға мүмкіндік беретінін айта кеткен жөн.

Қарапайым мысалдардан бастайық

Төмендегі пәрмен сыртқы IP-ді көрсетеді - бұл желіге маршрутизатор арқылы кіретін болсаңыз өте қолайлы. Бұл пәрмен ifconfig.co серверін шақырады, ол сізге қажет емес қосымша сызуларсыз IP мекенжайын бір жолда қайтарады.

ifconfig.com сайтын бұраңыз

Иә, бұл сценарий емес, бұл шағын команда, бірақ бұл пәрменді сценарийге айналдырғыңыз келсе, оны жай ғана енгізуіңіз керек. мәтіндік файл, соңында біз кішкентай bash сценарийін аламыз:

#!/bin/bash curl ifconfig.co

Сценарийді ~/bin каталогына сақтаңыз және орындау рұқсаттарын беріңіз:

Chmod +x ~/bin/yourip.sh

Дерлік аяқталды, сценарийді yourip.sh пәрменін пайдаланып пәрмен жолынан орындауға болады.

C ip аяқталды, консольден ауа-райын көрейік.

#!/bin/sh curl -4 wttr.in/Kiev

Бұл сценарий төрт күн бойы ауа райы туралы есеп алуға мүмкіндік береді, бұл жағдайда Киев қаласының ауа-райы.

#!/bin/sh dig +қысқа txt $1.wp.dg.cx

Жоғарыда сіз қалай алуға болатынының мысалын көресіз қысқаша сипаттамасыВикипедиядағы кез келген нәрсе, біздің жағдайда веб-сервердің орнына DNS сұрауын қолданамыз. Консоль арқылы веб-серверді жасау өте оңай:

#!/bin/sh while (nc -l 80< file.html >:) ; істеу: ; орындалды

Жоғарыдағы сценарий көбінесе швейцариялық армия пышағы деп аталатын netcat (nc) утилитасына негізделген, өйткені ол желілік операциялар үшін көптеген амалдарды жасауға мүмкіндік береді. Сценарий қарапайым, ол nc командасын орындайтын циклды бастайды, ол қазірдің өзінде 80-ші портты тыңдап жатыр және сұрауға жауап ретінде береді file.html, жіберілген сұрауды ешқайда жіберу (таңба noop дегенді білдіреді, яғни бос операция).

Қарапайым сценарийлер мен командаларды пайдалана отырып, сіз интернет радиосын тыңдай аласыз:

#!/bin/sh mpv --volume=50 -ойнату тізімі ~/16bit.fm_128.m3u

Әрине, бұған дейін радиостанцияның веб-сайтынан M3U форматындағы радио ойнату тізімін жүктеп алу керек. MPlayer-ді аргумент арқылы іске қоссаңыз -input-ipc-server=/tmp/mpvsocket, оны файлға пәрмендер жазу арқылы басқаруға болады. Мысалы, дыбыс деңгейін реттеңіз:

echo "том +10" | socat - /tmp/mpvsocket

Біз екі сценарий жасаймыз: біріншісі іске қосылады, екіншісі радионы тоқтату үшін (осында killall mpv жолын жазамыз), содан кейін оны жұмыс үстеліне іліп, ойнатуды басқару үшін DE жылдам пернелерін орнатыңыз. Аяқтадыңыз, сізде Интернет радиосын тыңдауға болатын ойнатқыш бар.

Біз желілік операциялармен айналысып кеттік, енді жергілікті операцияларға көшейік.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Бұл сценарий ағымдағы каталог үшін tar.gz мұрағатын жасайды. Ағымдағы каталогқа ($PWD айнымалы) толық жолды алатын $(PWD##*/) конструкциясына ерекше назар аудару керек, содан кейін бірінші бөлікті соңғы қиғаш сызыққа дейін алып тастайды, тек каталог атын қалдырады және қосады. tar.gz кеңейтімі. Егер сіз осындай конструкциялар туралы қосымша ақпаратты білгіңіз келсе, оны консольде man bash деп теру арқылы оқуға болады.

#!/bin/sh шын болса; inotifywait -r -e ДИРЕКТОРДЫ ӨЗГЕРТУ && СІЗДІҢ_БҰРЫМДАР орындалды

Жоғарыдағы сценарий каталогтағы файлдардың өзгеруіне жауап ретінде пәрменді іске қосады. Сіз оны әртүрлі мақсаттарда пайдалана аласыз, мысалы автоматты іске қосу MP3 файлын сақтау кезінде ойнатқыш. Немесе, мысал ретінде, notify-send пәрменін пайдаланып жұмыс үстелінде хабарландыруды көрсетіңіз:

Хабарландыру-жіберу «Файл өзгертілді»

Жұмыс үстелі

Төменде сіз Reddit тұсқағаз арнасында жарияланған кездейсоқ тұсқағаздарды жүктейтін сценарийдің мысалын көресіз:

#!/bin/bash wget -O - http://www.reddit.com/r/wallpaper |\ grep -Eo "http://i.imgur.com[^&]+jpg" |\ shuf -n 1 |\ xargs wget -O background.jpg feh --bg-fill background.jpg

Барлығы өте қарапайым жұмыс істейді. Wget утилитасын пайдалана отырып, сценарий www.reddit.com/r/wallpaper бетін жүктейді, содан кейін оны imgur сілтемелерін іздеп жатқан grep-ке жібереді және shuf көмегімен кездейсоқ біреуін таңдап, wget көмегімен жүктеп алып, орнатады. feh пәрменін пайдаланып жұмыс үстеліне тұсқағаз ретінде (бұл алдымен орнату керек миниатюралық кескінді қарау құралы). Бұл сценарийді мен жоғарыда сипаттағандай кәдімгі мәтіндік файлға қосуға, оны sh пішімінде сақтауға, оны орындалатын етіп жасауға, оған белгіше қосуға және оны басқанда жұмыс үстелінен іске қосуға болады, сонда сіздің тұсқағазыңыз өзгереді.

#!/bin/sh state=`синклиент | grep Сенсорлы тақта өшірулі | кесу -d "=" -f 2` егер [ $state = "1" ]; содан кейін синклиент TouchpadOff=0 басқа синклиент TouchpadOff=1 fi

Жоғарыдағы сценарий ноутбуктің сенсорлық тақтасын қосу және өшіру үшін пайдаланылады: өшірілген болса қосыңыз және керісінше. Дұрыс жұмыс істеу үшін ол көбінесе Synaptics шығаратын сенсорлық тақталарды басқаруға мүмкіндік беретін синклиент утилитасын пайдаланады, бұл 90%, мүмкін одан да көп. Утилитаны іске қосқаннан кейін көптеген ақпаратты, сондай-ақ қосылса TouchpadOff = 1, ал өшірілген болса TouchpadOff = 2 жолын көрсетеді. Сценарий бұл мәндерді оқиды және сенсорлық тақтаның күйіне байланысты оны қосады немесе өшіреді.

!#/bin/bash mpv tv:// -кадрлар 3 -vo jpeg mv 00000003.jpg фото.jpg rm -f 0000*.jpg

Жоғарыдағы сценарийді пайдаланып, веб-камера арқылы суретке түсіруге болады. Сценарий камера түсірген алғашқы үш кадрды файлдарға жазатын mpv бейне ойнатқышын пайдаланады jpeg пішімі 0000000.jpg, 00000002.jpg, 00000003.jpg, т.б. атаулары бар болса, үшінші суреттің аты photo.jpg болып өзгертіліп, қалғандары жойылады. Үш оқ не үшін қолданылады? Олар камераның баптандыруға уақыты болуы үшін қажет, егер сіз алғашқы екі кадрды пайдалансаңыз, әдетте қара сурет аласыз. Сондай-ақ орналасу оқиғалары бар, фотосуретті төңкеріп қоюға болады; мұны болдырмау үшін mpv -vf флип жалаушасымен іске қосылуы керек:

Mpv tv:// -кадрлар 3 -vf flip -vo jpeg

Пайдаланушы тінтуірді түрткен кезде ғана суретке түсіретін қауіпсіздік камерасын жасау үшін бірдей пәрменді пайдалануға болады:

#!/bin/bash шын болса; sudo cat /dev/input/mouse0 | жасаңыз оқу -n1 mpv tv:// -кадрлар 3 -vo jpeg mv 00000003.jpg `дата +%F-%H-%M`.jpg rm -f 0000*.jpg ұйқы 10 орындалды

Жоғарыдағы сценарий /dev/input/mouse0 деректерін алатын шексіз циклды пайдаланады. Егер деректер болса, онда тінтуір жылжытылды немесе оның түймелерінің бірі басылды. Осыдан кейін mpv үш суретті жасау үшін пайдаланылады, үшінші суретке ағымдағы күннің аты беріледі және алғашқы екеуі жойылады.

Толық бейнені веб-камерадан жазғыңыз келсе, мысал ретінде келесідей сценарийді пайдалануға болады:

#!/bin/bash mencoder tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:adevice=hw.2, 0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame -lameopts cbr=128 -o video.avi

Нәтижесінде сіз MPEG4 форматындағы video.avi деп аталатын файлды, 1800 бит жылдамдығын және 128 биттік MP3 аудио файлын аласыз.

#!/bin/bash ffmpeg -f x11grab -r 25 -с 1366x768 -i:0,0 screencast.mpg

Жоғарыдағы сценарийді пайдалану арқылы толық скринкастты жазуға болады. 1366×768 – жұмыс үстелінің ажыратымдылығы, оны өзіңіз үшін реттеуге болады. Жеке терезенің скриншотын алу үшін импорттау пәрменін пайдалануға болады:

скриншот.png импорттау

Жоғарыдағы пәрменді орындасаңыз, тінтуір курсорының белгішесі крестке өзгереді, оның көмегімен экранның аумағын таңдауға болады, мысалы, үшінші тарап қолданбалары немесе кеңейтімдері арқылы скриншоттарды түсірген кезде. Егер сіз бұл пәрменді жылдам пернелердің біріне іліп қойсаңыз, сіз скриншоттарды жасау үшін тамаша дерлік жүйеге ие боласыз және бұл комбинация сізді жемейді. Жедел Жадтау Құрылғысыбұл үлкен плюс етеді.

Сондай-ақ консоль арқылы сыртқы мониторды орнатуға болады:

#!/bin/sh егер [ -z "$1" ]; онда fi шығу, егер [ $1 == "өшіру" ]; онда xrandr --шығару VGA-0 --off xrandr -s 0 басқа болса, [ $1 == "қосулы"]; содан кейін xrandr --шығару LVDS --авто --бастапқы --шығару VGA-0 --авто --LVDS-тің сол жағы xrandr --жаңа режим "1920x1080" 173.00 1920 2048 2248 2576 1080 108dr x 108cx --шығ. қосу режимі VGA-0 1920x1080 xrandr --шығару VGA-0 --режим 1920x1080 fi xrandr --dpi 96

Бұл сценарий LVDS деп аталатын негізгі мониторға және VGA-0 деп аталатын сыртқы мониторға негізделген. Бұл барлық ноутбуктер үшін стандартты жағдай; егер сенімді болмасаңыз, сценарийге дәлелді беру кезінде xrandr: пәрменін іске қосу арқылы тексеруге болады. өшіруліол сыртқы мониторды, аргументті өшіреді қосулы, өз кезегінде, оны негізгінің сол жағына орналастырады (аргумент -LVDS сол жағыбірінші командада). Сценарий 1920 x 1080 ажыратымдылығы бар монитор үшін жаңа конфигурацияны жасап, оны іске қосқаннан кейін. Соңында сценарий әдепкі DPI мәнін орнатады - себебі мониторды басқа ажыратымдылықпен қосқанда, ол жиі істен шығады.

Көп жағдайда командалар xrandr-newmode...және xrandr -addmode ...қажет емес, өйткені Xorg EDID көмегімен монитор конфигурациясын және ажыратымдылығын алады. Кейде, алайда, бұл болмайды және конфигурация жолы аргументтен кейін көрсетіледі -жаңа режим, cvt құралын пайдаланып оны өзіңіз жасауыңыз керек:

Cvt 1920 1080

cvt құралын пайдаланып, әдепкі монитор қолдамайтын реттелетін ажыратымдылықтарды жасай аласыз.

Пәрмен жолынан Google іздеу

Қайта оралайық желі қызметтері. Google-да алғашқы 10 іздеу нәтижесін қалай алуға болады? Төмендегі сценарийді қараңыз:

#!/bin/bash Q=" " URL="https://www.google.de/search?tbs=li:1&q=" AGENT="Mozilla/4.0" ағыны=$(curl -A "$AGENT" -skLm 10 "$(GOOG_URL)$(Q//\ /+)" | grep -oP "\/url\?q=.+?&" | sed "s|/url?q=||; s| &||") echo -e "$(ағын//\%/\x)"

Бұл сценарий curl арқылы Google-ға сұрау жібереді, іздеу жолындағы бос орындарды плюспен ауыстырады. Осыдан кейін HTML жауапында сілтемелер пайда болады

YouTube қызметінің мысалы:

#!/bin/bash mpv -fs -үнсіз `youtube-dl -g "$1"`

Жоғарыдағы мысалдағы сценарий mpv ойнатқышы арқылы аргументте көрсетілген идентификаторы бар бейнені ойнатады. Алдымен youtube-dl орнатуыңыз керек.

Twitter-мен жұмыс істеудің бірнеше мысалдары. Төменде пәрменді енгізу ретінде қабылдайтын, оны пәрменді интерпретатор арқылы орындайтын және нәтижені көрсетілген пайдаланушыға жіберетін толыққанды бот сценарийін көресіз.

#!/bin/bash USER="Лақап атыңыз" шын болса; істеу CMD=`echo "/dma +1" | ttytter-скрипт | sed "s/\[.*\]\ //" егер [ $CMD != $OLD_CMD ]; содан кейін REPL=`$CMD` echo "/dm $USER $(REPL:0:140)" | ttytter -script CMD = $OLD_COMD fi ұйқы 60 орындалды

Сценарий пайдаланады консоль клиенті ttytter, тікелей хабарламаның соңғы мәнін циклден оқиды, содан кейін ол осы команданың орындалғанын тексереді, егер орындалмаса, оны орындайды және оны 140 таңбаға дейін қысқартып, USER айнымалысымен көрсетілген пайдаланушыға жібереді.

Барлығы жұмыс істеуі үшін ttytter утилитасын орнату керек, оны іске қосыңыз, содан кейін жасалған сілтемені консольден көшіріп, оны қойыңыз. мекенжай жолағышолғыш, растауды тапсырыңыз, келісіңіз, аутентификация кілтін алғаннан кейін оны ttytter ішіндегі консольге көшіріп, қойыңыз. Әрине, мұның алдында жеке пайдаланушыны қосып, оның тіркелгісіне кірген жөн.

Сіз Twitter-ді бот жасау үшін ғана емес, сонымен қатар машинаны бақылау үшін пайдалана аласыз. Төмендегі сценарий құрылғының күйі (хост аты, жұмыс уақыты, жүктеме, бос жад және процессордың жүктемесі) туралы ақпаратпен арнаға хабарлама жібереді:

#!/bin/bash HOST=`хост аты -s` UP=`жұмыс уақыты | кесілген -d" " -f4,5 | кесу -d"," -f1` LOAD=`uptime | кесу -d":" -f5,6` MEM=`ps aux | awk "( сома += $4 ); END (басып шығару сомасы )"` CPU=`ps aux | awk "( сома += $3 ); END (басып шығару сомасы )"` tweet="Хост: $(HOST), жұмыс уақыты: $(UP), процессор: $(CPU)%, жад: $(MEM)%, жүктелу $(LOAD)" егер [ $(echo "$(tweet)" | wc -c) -gt 140 ]; содан кейін жаңғырық "ӨЛІМІ: Твит 140 таңбадан ұзын!" шығу 1 fi echo $tweet | ttytter-скрипт

Соңында біз төмендегі сценарийді қарастырамыз, бұл сценарий компьютеріңіз жұмыс істемей тұрғанда торрент клиентін бастау және тоқтату үшін пайдаланылады:

#!/bin/bash IDLE=600000 STOPCMD="transmission-remote -S" STARTCMD="transmission-remote -s" STOPED="иә" шын болғанда; егер [ `xprintidle` -gt $IDLE ] орындаңыз; онда егер [ $STOPPED = "иә" ]; онда $STARTCMD STOPPED="жоқ" fi else егер [ $STOPPED = "жоқ" ]; содан кейін $STOPCMD STOPPED="иә" fi fi ұйқы 60 аяқталды

Әр минут сайын сценарий шексіз циклге өтеді және пайдаланушы соңғы әрекетті орындағаннан бері миллисекундтарда қанша уақыт өткенін тексереді (осы мақсат үшін xprintidle пайдаланылады). Егер 600 000 мс (он минут) өтсе, сценарий STARTCMD айнымалысында көрсетілген пәрменді орындайды. Әйтпесе, STOPCMD пәрмені орындалады, бірақ STARTCMD оның алдында орындалған болса ғана. Қарапайым тілмен айтқанда, сіз он минут бойы компьютерде ештеңе істемейсіз, STARTCMD іске қосылғаннан кейін, біздің жағдайда бұл Transmission ішіндегі барлық жүктеулерді бастайтын пәрмен, олай болмаса, барлық жүктеулер тоқтатылады. Transmission клиенті ұнамай ма? Біз су тасқыны үшін пәрмендерді қолданамыз, төменде қараңыз:

STOPCMD="deluge-console кідірту \*" STARTCMD="deluge-console резюме \*"

Қорытынды

Linux-тағы графикалық интерфейс қаншалықты қарапайым болса да және қанша функция бар болса да, терминал арқылы шешуге ыңғайлы тапсырмалар бар. Біріншіден, ол жылдамырақ болғандықтан, екіншіден, барлық машиналарда графикалық интерфейс жоқ, мысалы, серверлерде есептеу ресурстарын үнемдеу үшін барлық әрекеттер терминал арқылы орындалады.

Егер сіз әлдеқашан тәжірибелі пайдаланушы болсаңыз, онда сіз жиі орындайтын шығарсыз әртүрлі тапсырмалартерминал арқылы. Көбінесе бірнеше командаларды кезекпен орындау қажет тапсырмалар бар, мысалы, жүйені жаңарту үшін алдымен репозиторийлерді жаңарту керек, содан кейін ғана пакеттердің жаңа нұсқаларын жүктеп алу керек. Бұл жай ғана мысал және мұндай әрекеттер өте көп, тіпті сақтық көшірме жасау және көшірілген файлдарды қашықтағы серверге жүктеп салу. Сондықтан бір пәрмендерді бірнеше рет термеу үшін сценарийлерді пайдалануға болады. Бұл мақалада біз Bash тілінде сценарий жазуды қарастырамыз, негізгі операторларды, сондай-ақ олардың қалай жұмыс істейтінін, былайша айтқанда, bash сценарийлерін нөлден бастап қарастырамыз.

Сценарий немесе оны басқаша айтқанда, скрипт - интерпретатор бағдарламасымен кезекпен оқылатын және орындалатын командалар тізбегі, біздің жағдайда бұл командалық жол бағдарламасы - bash.

Сценарий - бұл біз қолмен енгізуге дағдыланған әдеттегі пәрмендерді, сондай-ақ оларды орындайтын бағдарламаны тізімдейтін қарапайым мәтіндік файл. Сценарийді орындайтын жүктеуші ортаның айнымалы мәндерімен қалай жұмыс істеу керектігін білмейді, сондықтан ол іске қосылатын бағдарламаға нақты жолды беруі керек. Содан кейін ол сіздің сценарийіңізді осы бағдарламаға береді және орындау басталады.

Bash қабығына арналған сценарийдің қарапайым мысалы:

!/bin/bash
жаңғырық «Сәлем әлем»

Echo утилитасы оған берілген жолды экранға параметр ретінде басып шығарады. Бірінші жол арнайы, ол командаларды орындайтын бағдарламаны көрсетеді. Жалпы айтқанда, біз кез келген басқа бағдарламалау тілінде сценарий жасай аламыз және қажетті интерпретаторды көрсете аламыз, мысалы, python тілінде:

!/usr/bin/env питон
басып шығару («Сәлем әлем»)

Немесе PHP тілінде:

!/usr/bin/env php
жаңғырық «Сәлем әлем»;

Бірінші жағдайда біз тікелей командаларды орындайтын бағдарламаны көрсеттік, келесі екеуінде біз бағдарламаның нақты мекенжайын білмейміз, сондықтан env утилитасынан оны аты бойынша тауып, оны іске қосуды сұраймыз. Бұл тәсіл көптеген сценарийлерде қолданылады. Бірақ бұл бәрі емес. Linux жүйесінде жүйе сценарийді орындауы үшін онымен файлға орындалатын жалаушаны орнату керек.

Бұл жалауша файлдың өзінде ештеңені өзгертпейді, ол тек жүйеге бұл жай ғана мәтіндік файл емес, бағдарлама екенін және оны орындау, файлды ашу, интерпретаторды табу және орындау қажет екенін айтады. Ешбір аудармашы көрсетілмесе, пайдаланушының аудармашысы әдепкі бойынша пайдаланылады. Бірақ бәрі бірдей bash қолданбайтындықтан, мұны нақты көрсету керек.

Жүгіру:

chmod ugo+x script_file

Енді біз кішкентай бірінші бағдарламамызды іске қосамыз:

./script_file

Бәрі жұмыс жасап жатыр. Сіз, айталық, жаңарту үшін шағын сценарий жазуды білесіз. Көріп отырғаныңыздай, сценарийлерде терминалда орындалатын бірдей командалар бар, оларды жазу өте оңай. Бірақ қазір біз тапсырманы аздап күрделендіреміз. Сценарий программа болғандықтан, ол өз бетінше кейбір шешімдер қабылдауы, командалардың орындалу нәтижелерін сақтауы және циклдарды орындауы қажет. Мұның бәрін Bash қабығымен жасауға болады. Рас, мұнда бәрі әлдеқайда күрделі. Қарапайым бастайық.

Сценарийлердегі айнымалылар

Bash тілінде сценарийлерді жазу уақытша деректерді сақтамай сирек аяқталады, бұл айнымалы мәндерді жасауды білдіреді. Бірде-бір бағдарламалау тілі айнымалыларсыз жұмыс істей алмайды, сонымен қатар біздің қарабайыр қабық тіліміз де.

Сіз бұрын орта айнымалы мәндерін кездестірген болуыңыз мүмкін. Сонымен, бұл бірдей айнымалылар және олар бірдей жұмыс істейді.

Мысалы, жол айнымалысын жариялайық:

string="Сәлем әлем"

Жолымыздың мәні тырнақшаға алынған. Бірақ іс жүзінде дәйексөздер әрқашан қажет емес. Мұнда bash-тың негізгі принципі сақталған - бос орын ерекше таңба, бөлгіш, сондықтан тырнақшаларды қолданбасаңыз, әлем қазірдің өзінде бөлек пәрмен болып саналады, сол себепті біз теңдіктің алдында және кейін бос орындарды қоймаймыз. белгісі.

$ символы айнымалының мәнін көрсету үшін қолданылады. Мысалға:

Сценарийді өзгертейік:

!/bin/bash
string1="сәлем"
string2=әлем
string=$string1$string2
echo $string

Және біз тексереміз:

Bash айнымалы типтерді тілдердегідей ажыратпайды жоғары деңгей, C++ сияқты, айнымалыға санды да, жолды да тағайындай аласыз. Сонымен қатар, мұның бәрі жол ретінде қарастырылады. Қабық тек жолды біріктіруді қолдайды, бұл үшін айнымалы атауларды қатарға жазыңыз:

!/bin/bash
string1="сәлем"
string2=әлем
string=$string1$string2\ және\ me
string3=$string1$string2"және мен"
echo $string3

Біз тексереміз:

Мен айтқанымдай, жолда арнайы таңбалар болмаса, тырнақшалар міндетті емес екенін ескеріңіз. Жолдарды біріктірудің екі әдісін де мұқият қарастырыңыз, тырнақшалардың рөлі де осында көрсетілген. Егер сізге жолдарды өңдеудің күрделі әдістері қажет болса немесе арифметикалық амалдар, бұл қабықтың мүмкіндіктеріне кірмейді, бұл үшін қалыпты утилиталар қолданылады.

Айнымалылар және пәрмен шығысы

Айнымалылар утилиталарды орындау нәтижесін сақтай алмаса, соншалықты пайдалы болмас еді. Ол үшін келесі синтаксис қолданылады:

$(команда)

Бұл құрылыммен команданың шығысы экранға емес, тікелей шақырылған жерге қайта бағытталады. Мысалы, күн утилитасы ағымдағы күнді қайтарады. Бұл командалар баламалы:

Сен түсінесің бе? Сәлем әлемі мен күні көрсетілетін сценарий жазайық:

string1="сәлем әлем"
string2=$(күн)

string=$string1$string2

Енді сіз айнымалылар туралы жеткілікті білесіз және сіз bash сценарийін жасауға дайынсыз, бірақ алда әлі көп нәрсе бар. Әрі қарай параметрлер мен басқару құрылымдарын қарастырамыз. Естеріңізге сала кетейін, бұлардың барлығы қарапайым bash пәрмендері және оларды файлға сақтаудың қажеті жоқ, оларды жолда бірден орындауға болады.

Сценарий параметрлері

Пайдаланушы енгізуіне тәуелді емес bash сценарийін жасау әрқашан мүмкін емес. Көп жағдайда пайдаланушыдан қандай әрекетті немесе қандай файлды пайдалану керектігін сұрау керек. Сценарийді шақырған кезде біз оған параметрлерді бере аламыз. Бұл параметрлердің барлығы сандар деп аталатын айнымалылар ретінде қол жетімді.

1 деп аталатын айнымалы бірінші параметрдің мәнін, айнымалы 2, екінші және т.б. Бұл bash сценарийі бірінші параметрдің мәнін шығарады:

!/bin/bash
жаңғырық $1

Сценарийлердегі басқару құрылымдары

Кейбір факторларды талдау және оларға жауап ретінде қажетті әрекеттерді орындау мүмкіндігінсіз bash сценарийін жасау соншалықты пайдалы болмас еді. Бұл өте күрделі тақырып, бірақ ол bash сценарийін жасау үшін өте маңызды.

Bash-та шарттарды тексеру пәрмені бар.Оның синтаксисі келесідей:

егер команда_шарт
содан кейін
команда
басқа
команда
fi

Бұл команда шарт командасының шығу кодын тексереді, ал егер 0 (сәтті) содан кейін команданы немесе сөзден кейін бірнеше командаларды орындаса, егер шығу коды 1 болса, else блогы орындалады, fi - блоктың аяқталуын білдіреді. командалар.

Бірақ бізді көбінесе команданың қайтару коды емес, жолдар мен сандарды салыстыру қызықтыратындықтан, орындауға мүмкіндік беретін [[ командасы енгізілді. әртүрлі салыстыруларжәне салыстыру нәтижесіне байланысты қайтару кодын береді. Оның синтаксисі:

[[ параметр1 оператор параметрі2 ]]

Салыстыру үшін біз бұрыннан таныс операторларды қолданамыз<,>,=,!= және т.б.. Егер өрнек ақиқат болса, команда 0 қайтарады, егер жоқ болса - 1. Оның әрекетін терминалда аздап тексеруге болады. Соңғы пәрменнің қайтару коды $? айнымалысында сақталады:

Енді осының барлығын біріктіре отырып, біз шартты өрнекпен сценарий аламыз:

!/bin/bash
егер [[ $1 > 2 ]]
содан кейін
echo $1" 2"-ден үлкен
басқа
echo $1" 2 немесе 2"-ден аз
fi

Әрине, бұл дизайнның күшті мүмкіндіктері бар, бірақ оларды осы мақалада қамту өте күрделі. Мүмкін бұл туралы кейінірек жазармын. Әзірге циклдарға көшейік.

Сценарийлердегі циклдар

Бағдарламалардың артықшылығы мынада, біз бірнеше жолдарда қандай әрекеттерді бірнеше рет орындау керектігін көрсете аламыз. Мысалы, бірнеше жолдардан тұратын, бірақ параметрлерді талдау және қажетті әрекеттерді орындау арқылы сағаттар бойы жұмыс істейтін bash сценарийлерін жазуға болады.

Алдымен қарастырайық цикл үшін. Міне, оның синтаксисі:

тізімдегі айнымалы үшін
істеу
команда
орындалды

Бүкіл тізімді қайталайды және тізімдегі мәнді айнымалыға кезекпен тағайындайды, әрбір тағайындаудан кейін ол орындау және орындалу арасында орналасқан пәрмендерді орындайды.

Мысалы, бес саннан астам қайталайық:

1 2 3 4 5 индексі үшін
істеу
echo $ индексі
орындалды

Немесе ағымдағы каталогтағы барлық файлдарды тізімдей аласыз:

файл үшін $(ls -l); «$файл» жаңғырығын жасаңыз; орындалды

Түсінгеніңіздей, сіз атауларды көрсетіп қана қоймай, сонымен қатар қажетті әрекеттерді орындай аласыз, бұл bash сценарийін жасау кезінде өте пайдалы.

Біз қарастыратын екінші цикл - бұл шарт командасы 0 кодын қайтарған кезде орындалатын уақытша цикл, сәтті. Синтаксисті қарастырыңыз:

командалық шарт
істеу
команда
орындалды

Мысал қарастырайық:

!/bin/bash
индекс=1
[[ $индекс< 5 ]]
істеу
echo $ индексі
"индекс=индекс+1" болсын
орындалды

Көріп отырғаныңыздай, бәрі орындалды, let командасы көрсетілген математикалық операцияны ғана орындайды, біздің жағдайда ол айнымалының мәнін бір көбейтеді.

Мен тағы бір нәрсені атап өткім келеді. while, for, if сияқты конструкциялар бірнеше жолға жазуға арналған және оларды бір жолға жазуға әрекеттенсеңіз, қате пайда болады. Бірақ соған қарамастан, бұл үшін жол үзілімі болуы керек жерде нүктелі үтірді «;» қоюға болады. Мысалы, алдыңғы цикл бір жол ретінде орындалуы мүмкін:

индекс=1; [[ $индекс< 5 ]]; do echo $index; let "index=index+1"; done;

Барлығы өте қарапайым, мен мақаланы қосымша bash терминдері мен мүмкіндіктерімен қиындатпауға тырыстым, тек ең негізгісі. Кейбір жағдайларда сізге bash сценарийі үшін gui жасау қажет болуы мүмкін, содан кейін сіз zenity немесе kdialog сияқты бағдарламаларды пайдалана аласыз, олардың көмегімен пайдаланушыға хабарламаларды көрсету және тіпті одан ақпаратты сұрау өте ыңғайлы.

қорытындылар

Енді сіз Linux жүйесінде сценарий жасаудың негіздерін түсіндіңіз және сізге қажет сценарийді жаза аласыз, мысалы, Резервтік көшірме. Мен bash сценарийлерін нөлден көруге тырыстым. Сондықтан барлық аспектілер қарастырылмаған. Мүмкін біз бұл тақырыпқа келесі мақалалардың бірінде қайта ораламыз.

Үшін қарапайым bash сценарийін жазубіз келесі қарапайым қадамдарды орындауымыз керек:

Мұның бәрі қалай жұмыс істейді:

Сценарийдің бірінші жолы біздің сценарий сәтті жұмыс істеуі үшін өте маңызды.

екінші жолда testdir каталогы жасалады

үшінші жол құрылған каталогқа өзгертуге мүмкіндік береді testdir

команда түртукелесі жол үш файлды жасайды

және біздің сценарий жолындағы соңғы пәрмен ағымдағы каталогтың мазмұнын көрсетуге мүмкіндік береді, онда алдыңғы жолдың арқасында үш бос файл пайда болды.

Көріп отырғанымыздай, біздің қарапайым сценарийбарлық командалар жаңа жолдан басталады. Сценарий іске қосылған кезде әрбір жол белгілі бір әрекеттерді орындай отырып, өз жұмысын дәйекті түрде орындайды.

Егер сіз күн сайын Linux жүйесінде бірнеше бірдей пәрмендер тізбегін (тұрақты параметрлері бар) іске қоссаңыз, сізге бірдей жазу мағынасы болуы мүмкін. қарапайым bash сценарийі, бұл сіздің уақытыңызды үнемдеуге және жұмысыңызды автоматтандыруға мүмкіндік береді.

Көбінесе кейбір әрекеттерді автоматтандыру қажет болады. Bash сценарийлері әрқашан көмекке келеді!
Сценарий іске қосылуы үшін файлды орындау мүмкіндігін қосып, оған кіру құқықтарын өзгерту керек екенін ұмытпаңыз.

1. Енгізу-шығару, қайта бағыттау

#!/bin/bash # Кез келген қабық сценарийі әрқашан #!/bin/bash (немесе #!/bin/sh) жолынан басталады # Түсініктемелер әрқашан # # әріпінен басталады. Хабарламаны көрсету үшін ECHO echo "hello," пәрменін пайдаланыңыз. әлем» # және бұл пішімделген шығыстың мысалы ...

дерлік C printf "пішімделген шығыс on=%d string=%s float=%f hex_number=0x%X\n" 10 "string" 11.56 234 # пернетақтадан енгізуді оқу мысалы A echo $A printf " сіз жаңа ғана сөз енгіздіңіз : %s\n" "$A" #қайта бағыттау, конвейерлер, басқа бағдарламаның шығысын алу #10 әріптік құпия сөзді жасау мысалы PASSWORD1=`cat /dev/urandom | tr -d -c ‘a-zA-Z0-9’ | бүктеу -w 10 | head -1` echo Password=$PASSWORD1 " пішімінің #тырнақшалары олардың ішіндегілердің экранына шығару нәтижесін береді (яғни, осындай тырнақшалардың ішінде жазылған бағдарлама немесе сценарий орындалады және олар #стандарттыда басып шығаратын нәтиже нәтиже береді. шығыс «кері тырнақшалар» операциясының нәтижесі болып табылады #бұл жағдайда нәтиже бірнеше бағдарламалардан конвейердің шығысы болып табылады.

Linux терминалының әуесқойлары үшін қызықты bash сценарийлері

#операция | конвейерді білдіреді. Анау. біздің мысалда: #cat /dev/urandom файлының мазмұнын /dev/urandom (жалған кездейсоқ сандарды генерациялауға арналған арнайы файл) stdout файлына шығарады #tr аударманы орындайды, яғни. кейбір байтты басқалармен ауыстырады (бұл құпия сөзде басып шығарылмайтын таңбалардың пайда болуын болдырмау үшін қажет) #fold std.in сайтында алғанын 10 таңбадан тұратын жолдарға бөледі және оны stdout файлына басып шығарады #head -1 бірінші басып шығарады стандартты енгізуде оған не келгенін сызыңыз. # немесе келесідей: PASSWORD2=`cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c10` echo Password=$PASSWORD2

2. Арифметикалық амалдар, рет саны бойынша циклдар

#!/bin/bash A="10" B="5" C=`expr $A + $B` printf "A=10 B=5 C=expr \$A + \$B C=%d \n" "$C" # цикл i мысалында I=0, ал [ $I -lt 15 ] printf "0x%02x " "$I" I=`expr $I + 1` орындалды echo

3.Тексерудің әртүрлі түрлері

#!/bin/bash # файлдың бар-жоғын тексерудің мысалы # файл жасау сынағы1 түрту сынағы1 # файлдың бар-жоғын тексеру1 егер [-f test1]; содан кейін echo "test1 файлы бар" fi # test2 файлының жоқтығын тексеріңіз, егер ! [-f test2]; онда echo "test2 файлы жоқ" fi # басқа пәрмен опцияларына қысқаша сілтеме # -d файл атауы каталогы бар # -f файл аты файл бар # -L файл атауының символдық сілтемесі бар # -r, -w, -x файлы оқылатын, жазылатын немесе do # -s файл атауы файл бар және нөлге тең емес ұзындығы бар # f1 -nt f2 f1 f2-ден жаңарақ # f1 -ot f2 f1 f2-ден ескі

Тегтер: bash, freebsd, shell

Пікір жазу арқылы:

Қарапайым bash сценарийін қалай жазуға болады

Бірнеше команданы ретімен немесе барлығын бір уақытта қалай орындауға болады? Егер сізге бірнеше пәрменді орындау қажет болса, онда « ; » метатаңба деп аталады.Синтаксис келесідей пәрмен1;команда2;команда3

"" арқылы бөлінген пәрмендер ; » ретімен орындалады. Қабық келесі пәрменді күтеді және соңғы пәрмен орындалғаннан кейін пәрмен жолының сұрауына оралады.

Бірнеше командаларды бір уақытта орындау

Пәрменнің соңына «&» белгісін қою арқылы бірден бірнеше пәрменді орындау үшін. Мысалы, сақтық көшірме сценарийінің басын қарастырыңыз:

# /root/ftpbackup.sh &

Сіздің терминалыңыз әрі қарай пайдалану үшін тегін, сізге /root/ftpbackup.sh сценарийінің орындалуын күтудің қажеті жоқ!

Барлығын бірге пайдалану

Сізде мыңдаған *.bak файлдары болуы мүмкін. Бірақ сізге қажет санаттарды тізімдеу және барлығын /tmp/list ішіне қою:

# d for "/home/sales /home/dbs /data1"; $d -iname "*.bak" >> /tmp/list табыңыз; орындалды &

Дереккөз

BASH тілін үйрену (негіздері)

Күні: 2012-12-10

Сценарий жазуды үйрену

Көп жағдайда барлық Linux сценарийлерден тұрады, сондықтан бұл тілді білу қажет.
Негізінде бұл әртүрлі құрылымдардың көмегімен ақылды және жақсы ойластырылған кодқа біріктірілген Linux командаларының жиынтығы ғана.

Бірінші сценарийді жасайық.
Ол үшін мәтіндік редакторды ашып, файлды келесімен толтырыңыз:

#!/bin/bash
ДДСҰ; күні

Мұнда бәрі қарапайым.
Негізінде хэш белгісі (#) әдетте түсініктеменің басы болып саналады, бірақ бұл жерде бірінші жолдан бастап ол bash аудармашысын пайдалану керектігін айтады.

1) Орындау құқығын беру қажет

chmod u+x bash1.sh

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/game

Және бұл файлды каталогтардың біріне жылжытыңыз, әрине, оған жай ғана аты бойынша сілтеме жасау қажет болмаса. толық орынорналасуы.

Мұнда біз сценарийдің қалай жасалғанын қарастырдық, содан кейін түсіну керек бірнеше нәрсе бар.

Сценарийлерді жазғанда біз айнымалыларды өңдейміз, кіріс пен шығысты қайта бағыттаймыз, құбырлармен жұмыс жасаймыз және математикалық есептеулерді орындаймыз.

Айнымалылар

Жаңа айнымалыны анықтау үшін мынаны айтыңыз:

#!/bin/bash
F=Иван
I=Иванов
О=Иванич
#Көрсетілген:
жаңғырық "FIO $F $I $O"

Нәтиже

sh bash2.sh
FIO Иван Иванов Иванич

Айнымалыларды көру;
# жиын

BASH=/bin/bash
HISTFILE=/root/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/root
SSH_CLIENT='192.168.200.3 9382 22'
SSH_CONNECTION='192.168.200.3 9382 192.168.200.252 22'

`` арқылы айнымалы мәнді орнатудың тағы бір өте қызықты және пайдалы тәсілі бар

#!/bin/bash
күн=`күн +%y%m%d`
# Болашақта $day айнымалысын сценарийге, мысалы, сақтық көшірмеге енгізуге болады

rsync -avz /root/data /root/backup.$day

Осындай сценарийді орындау нәтижесінде сақтық көшірме жасалған күннің анықтамасы бар сақтық көшірме пайда болады.

Кіріс пен шығысты қайта бағыттау.

> Файл мазмұнын толығымен қайта жазу арқылы файлға қайта бағыттау
>> Файлға, бұрыннан бар мазмұнның соңына қосу үшін қайта бағыттаңыз.
ls -al / > 123
Және пәрмен:
ls -al /home >> 123
Түбірдегі барлық файлдарды тізімдеңіз, содан кейін Home каталогының мазмұнын қосыңыз
бұл қайта бағыттау шығыс қайта бағыттау деп аталады
Енгізуді қайта бағыттау - мазмұн пәрменге қайта бағытталады.
сұрыптау< sort.txt
Сұрыптау пәрмені алфавит бойынша сұрыптайды, нәтижесінде кездейсоқ толтырылған sort.txt файлы сұрыптау бағдарламасына қайта бағытталғаннан кейін алфавит бойынша сұрыпталады.
сұрыптау< sort.txt | more — а построение в канал отобразит отсортированные данные постранично
сұрыптау< sort.txt | grep s | more — отсортирует и выведет все со знаком «S»

Білуге ​​болатын тағы бір пайдалы нәрсе - бір команданың нәтижесін екіншісіне немесе бірнешеуіне беру.
Бұған мысал бола алады:

cat /var/log/maillog | grep бұғатталған | Көбірек

1) cat - бүкіл журнал файлын көрсетеді
2) содан кейін бұл журнал файлы grep пәрменіне өңдеуге жіберіледі, ол тек Блокталғанмен көрсетіледі, бірақ мұндай күйі бар хабарламалар көп болғандықтан, оны көбірек пәрменге беру қажет.
3) көбірек - пейджинг деректері үшін қажет

Бұндай командалар тізбегі арнада жіберу деп аталады, бұл кезде бір командадан мәліметтер өңдеу үшін екіншісіне, ал басқалары басқаға және олар қажетті пішінді алғанша жалғаса береді.

Математикалық есептеулер

Linux жүйесінде математиканы орындаудың ең оңай жолы - bc пәрмені.
Бұл жағдайда масштабты пайдаланып жылжымалы нүктеден кейінгі ондық таңбалардың санын орнатуға болмайды

#!/bin/bash
var1=45
var2=22
var3=`echo "шкала=3; $var1/$var2" | bc`
echo $var3

Plutonit.ru - Әкімшілік, Linux орнатужәне Windows 2009 - 2018

Дерекқор қатесі: 'a111530_forumnew.rlf1_users' кестесі жоқ

Басты -> MyLDP -> Электронды кітаптар Linux ОЖ үшін

Сценарий құру және іске қосу

Сценарий жазыңыз және оған атау таңдаңыз

Қабық сценарийі - бұл бірнеше рет пайдалануға болатын пәрмендер тізбегі. Бұл реттілік әдетте пәрмен жолында сценарийдің атын теру арқылы орындалады. Сондай-ақ, cron көмегімен тапсырмаларды автоматтандыру үшін сценарийлерді пайдалануға болады. Сценарийлерді қолданудың тағы бір түрі - жүктеу және тоқтату процедурасы UNIX жүйелерідемон және қызмет әрекеттері init сценарийлерінде анықталғанда.

Қабық сценарийін жасау үшін өңдегіште жаңа бос файлды ашыңыз. Ол үшін кез келген мәтіндік редакторды пайдалануға болады: vim, emacs, gedit, dtpadжәне т.б.; кез келген жасайды. Дегенмен, сіз неғұрлым жетілдірілген редакторды таңдай аласыз, мысалы vimнемесе emacs, өйткені мұндай редакторлар қабықша мен Bash синтаксисін танитындай конфигурациялануы мүмкін және жақша мен нүктелі үтірді жабуды ұмытып кету сияқты жаңадан бастағандар жиі жіберетін қателердің алдын алуға жақсы көмекші бола алады.

UNIX пәрмендерін жаңа бос файлға пәрмен жолында тергендей теріңіз. Алдыңғы тарауда қарастырылғандай («Пәрменді орындау» бөлімін қараңыз) пәрмендер қабықша функциялары, кірістірілген командалар, UNIX пәрмендері немесе басқа сценарийлер болуы мүмкін.

Сценарийдің не істейтінін көрсететін мнемоникалық атауды таңдаңыз. Сценарий атыңыз қайшы келмейтініне көз жеткізіңіз бар командалар. Кез келген шатасуды болдырмау үшін сценарий атаулары жиі .sh кеңейтімімен аяқталады. Дегенмен, жүйеде сіз таңдаған атпен басқа сценарийлер болуы мүмкін. Командалар қай, қайдажәне басқалары үшін осы атаудағы бұрыннан бар бағдарламалар мен файлдар туралы ақпаратты іздеңіз:

қай -скрипт_атауы, онда скрипт_атауы скрипт_атын табу ( шамамен транс.

Linux жүйесінде сценарийлер жазу (мысалдар арқылы үйрену)

: сценарийіңіздің атымен ауыстырыңыз).

Сценарий script1.sh

Бұл мысалда біз пәрменді қолданамыз жаңғырық, Bash ішіне салынған, ол пайдаланушыға өнім шығарылғанға дейін не істеу керектігін хабарлайды. Пайдаланушыларға сценарийдің не істеп жатқаны туралы хабардар болуы өте ұсынылады Сценарий ештеңе істемегендей болып көрінсе, қобалжымады. Біз «Интерактивті сценарий жазу» 8-тарауындағы пайдаланушыларды ескерту тақырыбына қайта ораламыз.

2.1-сурет. Сценарий script1.sh

Дәл осындай сценарийді өзіңізге жазыңыз. Сценарийлеріңіз орналасатын каталогты жасау жақсы идея болар еді. Бұл каталогты айнымалының мазмұнына қосыңыз:

экспорттау PATH="$PATH:~/scripts"

Егер сіз Bash-те жаңа болсаңыз, әртүрлі қабық конструкциялары үшін әртүрлі түстерді пайдаланатын мәтіндік редакторды пайдаланыңыз. Синтаксисті бөлектеуге қолдау көрсетіледі vim, gvim, (x)emacs, жазужәне басқа да көптеген редакторлар үшін таңдаулы редакторыңыздың құжаттамасын қараңыз.

Сценарийдің орындалуы

Сценарий іске қосылуы үшін оның сәйкес пайдаланушылар үшін іске қосу құқықтары болуы керек. Рұқсаттарды орнатқаннан кейін, сізге қажет рұқсаттарды шынымен орнатқаныңызды тексеріңіз. Бұл орындалғаннан кейін, сценарийді кез келген басқа пәрмен сияқты іске қосуға болады:

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 The сценарий қазір басталады. Эй Вилли! Енді мен сізге қосылған пайдаланушылардың тізімін аламын: 18 күн бойы 15:38-ге дейін, 5:37, 4 пайдаланушы, орташа жүктеме: 0,12, 0,22, 0,15 USER TTY FROM [электрондық пошта қорғалған]ҚАЙСЫ JCPU PCPU ҚАНДАЙ түбір tty2 - Сенбі 14:00 4:25м 0,24с 0,05с -bash willy:0 - Сенбі 14:00 ? 0,00с? — willy pts/3 — сен 14:00 3:33 мин 36,39 с 36,39 с BitchX willy ir willy pts/2 — сен 14:00 3:33 м 0,13 с 0,06 с /usr/bin/screen Мен қазір екі айнымалы мәнді орнатып жатырмын. Бұл жол: қара Ал бұл сан: 9 Мен қазір сұрауыңызды қайтарып жатырмын. willy:~/scripts> echo $COLOUR willy:~/scripts> echo $VALUE willy:~/scripts>

Бұл ең көп әдеттегі жолсценарийді орындаңыз. Осындай сценарийлерді ішкі қабықшада орындаған дұрыс. Осы ішкі қабықшада жасалған айнымалылар, функциялар және бүркеншік аттар тек сол ішкі қабықтағы нақты bash сеансына ғана белгілі. Бұл қабықтан шыққанда және басқаруды ата-аналық қабықша қабылдағанда, барлық параметрлер тазаланады және сценариймен қабық күйінде жасалған кез келген өзгертулер ұмытылады.

Айнымалыда каталогтарды немесе (ағымдағы каталогты) көрсетпесеңіз, сценарийді келесідей белсендіруге болады:

./script_name.sh

Сондай-ақ, сценарийді бар қабықшаның ішінде орындауға болады, бірақ бұл әдетте алғыңыз келсе ғана жасалады. ерекше қабілеттер, мысалы, сценарийдің басқа қабықпен жұмыс істейтінін тексергіңіз келсе немесе жөндеу мақсаттары үшін кері бақылауды шығарғыңыз келсе ( шамамен транс.- оның орнына сценарийіңіздің атын көрсетіңіз):

rbash script_name.sh sh script_name.sh bash -x script_name.sh

Көрсетілген қабық ағымдағы қабықтың ішкі қабығы ретінде іске қосылады және сценарийді орындаңыз. Бұл сценарийдің нақты параметрлермен немесе сценарийдің өзінде көрсетілмеген белгілі шарттарда іске қосылуын қалаған кезде орындалады.

Жаңа қабықшаны іске қосқыңыз келмесе, бірақ сценарийді ағымдағы қабықшада орындағыңыз келсе, пәрменді пайдаланыңыз:

дереккөз script_name.sh

Бұл жағдайда сценарийге орындау рұқсаттары қажет емес. Пәрмендер ағымдағы қабықтың мәтінмәнінде орындалады, сондықтан ортаңызға жасалған кез келген өзгертулер сценарий орындалуды аяқтаған кезде көрінетін болып қалады:

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

Ең алдымен, не екенін түсінейік сценарийжәне ол не үшін.

Сценарийағылшын тілінен аударылған - сценарий. Барлығымыз фильм көреміз, көбіміз спектакль көреміз. Фильм/спектакль жасау үшін сценаристер оларға сценарий жазады, соның негізінде әртістер, сахна-сахна, фильм/спектакль қалыптасатын сахнада өз рөлдерін орындайды. Сценарий жасау жұмысы өте қиын, мұнда әр нәрсені ең кішкентай бөлшектерге дейін ескеру керек, нәтижесінде суретшілер сценарий авторының жоспарын орындай алады, ал көрермен біртұтас жұмысты көреді.

Сол сияқты, сценарийлер операциялық жүйеде оңай және жылдам жұмыс істеу үшін пайдаланушы біріктіретін (код) тапсырмалар тізімін орындау үшін жазылады. Қарапайым сценарийлерді жазу үшін бағдарламашы білімі болуы шарт емес.

Бастау үшін, ең көп, бұл екеуі де емес, ең қарапайымды жасайық сценарий-қабықжүйені жаңарту үшін.

Мен барлық әрекеттерді жүйемен орындаймын ubuntu, бірақ олар басқа жүйелерге де қолданылады. linux, алады ubuntu. Ол үшін бізге қажет: Мәтіндік редактороны сценарий (код) құруға қажетті тапсырмалармен толтыру және Терминал- cos орындау бұл сценарий. Бұл құралдар кез келген дистрибутивте орнатылады linuxәдепкі.

Сонымен, мәтіндік редакторды ашыңыз geditжәне оған атау астындағы бірінші қажетті таңбаларды енгізіңіз шебанг.
шебангбағдарламалауда бұл екі таңбаның тізбегі: хэш белгісі және леп белгісі ( #! ) сценарий файлының басында. Және бұл таңбаларға бос орынсыз қосыңыз /бин/ш- сценарий орындалатын аудармашы. /бин/ш- бұл әдетте Борн қабығынемесе өтетін үйлесімді пәрмен жолы интерпретаторы "жол/көлік/скрипт"бірінші параметр ретінде.
Сценарийдің бірінші қажетті жолы келесідей болады:

# Менің алғашқы Ubuntu жаңарту сценарийім

Жолдың ең басындағы фунт белгісі (#) интерпретаторға/терминалға бұл жолды оқуды және орындауды қажет етпейтінін айтады. Сценарийді жасаушының өзі кодтағы осы сегментте/сценада не орындайтынын білуі үшін, болашақта көп болатын кезде шатастырмау үшін сызық осы сценарийдің кодында қажет. осындай сызықтар. Фунт белгісі бар мұндай жолдар деп аталады - түсініктеме берді .

sudo apt жаңартуы
sudo apt жаңарту -y

екінші пәрменнің соңында аудармашыға/терминалға бұл әрекетті/пәрменді пайдаланушының пернені басу арқылы қосымша растауынсыз автоматты түрде орындау керектігін түсіндіреді. Енгізу. ж- ағылшын тілінен қысқаша иә, яғни. Иә.

Осымен болды. Сіздің бірінші сценарийіңіз жасалды. Сізде суреттегідей нәрсе болуы керек:


Жасалған файлды/скриптті сақтау және оны беру қалады Атысоңында міндетті ұзартумен - .sh. Кеңейтім .shорындалатын файлға тағайындалады.
мен оған бердім Аты - update.sh, үнемдеу үй қалтасыпайдаланушы:


Жасалған файл/скрипт орындалатын болуы үшін оған рұқсат беру керек. Мұны екі жолмен жасауға болады.

1. Терминалда келесі пәрменді іске қосыңыз:

sudo chmod +x update.sh

2. Немесе файл менеджерін ашыңыз үй қалтасы(құрылған сценарий сақталған жерде), файлды тінтуірдің оң жақ түймешігімен нұқыңыз контекстік мәзір - Қасиеттер - Рұқсаттаржәне элементті іске қосыңыз - Өнімділік: Файлды бағдарлама ретінде іске қосуға рұқсат беріңіз:


Құрылған сценарийді орындау үшін терминалды ашу керек (бұл туралы мен мақаланың басында жазғанмын, бұл терминал сценарийді орындау үшін қажетті атрибут/құрал), енгізіңіз. ш, бос орынмен бөлінген сценарий атауы - update.shжәне пернені басыңыз Енгізу:


Немесе терминалға енгізіңіз шжәне сүйреңіз файл менеджерісценарийі бар жасалған файл (сонымен қатар бос орынмен бөлінген):


Пәрменнен кейін файл жолы көрсетіледі шжәне бос орын болса, жай ғана пернені басыңыз ЕнгізіңізЖүйені жаңартуды орындау үшін (Enter):


Енді кез келген уақытта өз сценарийіңізбен жасалған жүйелік жаңартуды жасай аласыз.

Иә, біреу терминалда осы екі пәрменді орындау арқылы жүйені жаңарту қиын емес деп дауласуы мүмкін, неліктен сценарийлердің қандай да бір түрін жасау керек? Барлығы дұрыс. Бірақ бұл "қазанды құдай күйдірмейтінін" көрсету үшін қарапайым сценарий жасаудың мысалы 😃.

Қарапайым сценарийлерді жазуды және пайдалануды үйрене отырып, жүйені қайта орнату жағдайында желіде әр уақытта ұқсас параметрлері бар сайттарды іздемей-ақ, жасалған сценарийді пайдалануға болатындай жүйе конфигурациясының сценарийін жасай аласыз.

Сіздердің көпшілігіңіз келесі шығарылымнан кейін мен жариялағандар сияқты жүйені баптау сайттарын пайдаланасыз. ubuntu - Орнатқаннан кейін Ubuntuнемесе ұқсас сайттар. Осы сайттардың бірін ашыңыз: содан кейін сценарий жасау үшін мәтіндік редактор.
Мысалы, мен келесі бос орынды жасадым.

Мәтіндік редакторда бірінші қажетті жолды енгізіңіз:

# Ubuntu орнатуорнатудан кейін
# Жүйені жаңарту

Төменде жүйені жаңарту пәрмендері берілген:

sudo apt жаңартуы
sudo apt жаңарту -y

Сипаттама жолы: Репозиторийлерді қосу:

# Репозиторийлерді қосу

Бағдарламаны одан әрі орнату үшін қажетті репозиторийлерді қосыңыз:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) серіктес" -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 орнату, содан кейін бос орын арқылы берілген сызыққалағаныңызша көптеген бағдарламаларды қосыңыз, ең бастысы олардың дұрыс құрастырылғаны. Егер бағдарлама бірнеше сөзден тұратын болса, оның командасы монолитті болуы керек, яғни. ондағы барлық сөздерді сызықша арқылы енгізу керек, мысалы: бірлікті реттеу құралы:

sudo apt орнату my-weather-indicator telegram skype 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/appport"

Бәлкім, бәрі осы шығар. Бұл жасалған сценарий файлы келесідей болуы керек:


Оны сақтау керек (түймешігін басыңыз Сақтау) және беріңіз Атыұзартумен .sh. Мен оны шақырдым Setup\Ubuntu.sh(оны басқаша атауға болады, бірақ әрқашан .sh кеңейтімімен):


Құрылған сценарийді орындалатын етіп жасаймыз:

sudo chmod +x Орнату\ Ubuntu.sh

Жасалған сценарийді орындау үшін терминалға енгізіңіз шжәне бос орынмен бөлінген құрылған сценарий атауы немесе ш, бос орын қалдырыңыз және жасалған файлды ең қарапайым сценарийде бұрын түсіндірілгендей терминалға сүйреңіз және пернені басыңыз Енгізу, оны орындау үшін.

Ескерту. пәрмендегі кері қиғаш сызық Setup\Ubuntu.shекі бөлек сөз арасындағы терминал үшін файл атауында бос орын қалдырады.

Сценарий орындалғаннан кейін оны болашақта сақтаңыз, жүйені қайта орнату және қайта конфигурациялау үшін бұл қалтадағы f / дискінің бөлек бөлімінде жақсырақ. /үй. Егер жоқ болса, онда бұлттық қызмет (Бұлтты сақтаудеректер) түрі: DropBox, Cloud Mail.Ru, Mega.coкез келген уақытта сценарийді өзіңіз пайдалану немесе достарыңызға немесе туыстарыңызға жүйені орнатуға көмектесу үшін және т.б.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!