среда, 24 априла, 2024
Сам свој мајстор

Писање скрипти у Бешу (1. део) – Увод

Аутор: Никола Тодоровић

Овим чланком започињемо серијал о вештини за коју смо сигурни да може бити од велике користи за напредније кориснике линукс оперативних система. Писање скрипти у Бешу (енг. Bash) је моћна и корисна вештина која нам омогућава да аутоматизујемо велики број радњи. Иако је ова вештина неизоставна за неког ко жели да буде систем администратор, овај серијал ће бити оријентисан ка почетним корисницима који се до сада нису сусретали са писањем скрипти, али је неопходно да су упознати са основама програмирања и основним командама у Бешу, о којима можете прочитати у другом серијалу који је обављен у овом часопису.

За почетак, унутар директоријума по избору, командом mkdir ћемо направити нови радни директоријум у којем ћемо до краја серијала обављати све радње. Унутар новонаправљеног директоријума направићемо неколико фајлова са различитим екстензијама и унутар тих фајлова са едитором по избору унети неки текст, није неопходно да текст буде повезан са екстензијом фајла.

Mkdir radni_dir
touch vebsajt.html
touch program.c
touch beleske.txt
touch lista_poslova.txt

У наставку ћемо командом ls излистати фајлове, али оно што вам је можда ново јесте додатак *.txt који команди ls говори да излиста све фајлове који се завршавају са “.txt”. Следећа команда, stat, ће нам дати основне податке о фајлу као што су величина фајла, права приступа, када је последњи пут измењен и слично.

ls *.txt
stat program.c
wc -l vebsajt.html

Команда wc (скр. Word count) уз додат параметар -l ће исписати број линија унутар фајла. Ова команда има могућност да испише број линија, карактера, бајтова или речи, како бисмо знали које су ознаке за флегове који се прослеђују овој команди. Битно је да се добро сналазите у документацији која долази уз Беш команде, односно да знате да користите ime_komande –help за основну документацију и man ime_komande за опширнију документацију.

Добили смо задатак да проследимо колеги у једном фајлу послове које ћемо данас обавити и желимо да му пошаљемо првих пет послова са листе послова. Уместо да отворимо фајл, ископирамо првих пет редова, па онда креирамо нови фајл у који ћемо убацити првих пет послова, сав овај посао може се обавити у једној линији. Командом head (глава) ћемо узети првих неколико линија, а додатком -n5 ћемо назначити команди да узме првих пет из фајла lista_poslova.txt и онда уз помоћ оператора >, оно што нам враћа команда head ћемо проследити у фајл danasnji_poslovi.txt, и том приликом није потребно да креирамо тај фајл већ се то аутоматски одради уколико је фајл прослеђен оператору > не постоји у радном директоријуму. Након тога ћемо командом cat само приказати садржај нове листе.

Head -n5 lista_poslova.txt > danasnji_poslovi.txt
cat danasnji_poslovi.txt
Tail -n1 lista_poslova.txt >> danasnji_poslovi.txt
cat danasnji_poslovi.txt

Насупрот команди head, имамо команду tail (Реп), којом можемо узети последњих неколико линија из фајла, само овај пут уместо да пребацимо у нови фајл, знаковима », ми ћемо надовезати последњу линију на већ постојећи фајл. У случају да смо сад користили знак >, претходни садржај фајла би био обрисан и у њега смештен нови.

Уколико би постојала потреба да се сваког дана пошаљу обављени послови, било би добро да се цео процес учини мало ефикаснијим, па да се уместо уношењем 4 команде све обави уношењем једне. Иако би вештијим читаоцима одмах било уочљиво да се претходних неколико команди може обавити једном мало комплекснијом командом, то ћемо оставити за неки од наредних делова серијала, а у наставку овог ћемо претходно написане команде претворити у скрипту. Оно што нам Беш омогућава јесте да низ команди ставимо у фајл и да он потом изврши те команде, а да би тај фајл постао скрипта потребно је да у првој линији има путању и назив интерпретера за скрипту, #!/bin/bash.

#!/bin/bash
Head -n5 lista_poslova.txt > danasnji_poslovi.txt
Tail -n1 lista_poslova.txt >> danasnji_poslovi.txt
cat danasnji_poslovi.txt

Изнад се налази цео изглед наше прве мале скрипте. Команду cat коју смо два пута извршавали први пут, сада смо ставили да се извршава само једном јер са сигурношћу знамо шта ће урадити команде па нема потребе за приказивањем међурезултата. Након што откуцамо скрипту , потребно ју је сачувати и доделити одговарајући назив. Иако је у овом случају прва ствар која нам пада на памет код именовања скрипте назив prva_skripta.sh, предлог је да будемо мало практичнији и дамо скрипти назив који ће нас асоцирати на то шта заправо скрипта ради, тако да би у овом случају било добро да скрипту назовемо obavljeni_poslovi.sh.

Када се заврши део састављања скрипте, у директоријуму у ком се налази скрипта потребно је доделити јој могућност извршавања, а то се постиже командом:

chmod +x obavljeni_poslovi.sh

А сам позив скрипте се обавља на следећи начин:

./obavljeni_poslovi.sh

У овом уводном делу прошли смо кроз неколико команди, које су можда биле нове за неке читаоце, и на крају саставили прву скрипту. Охрабрујемо читаоце да по истом принципу као што смо саставили ову скрипту, направе своју скирпту као низ неколико команди које већ знају и чије заједничко извршавање им може бити од неке користи. У наредном делу ћете имати прилику да научите много више нових ствари.