23Aug
Термин "схелл сцриптинг" се често помиње у Линук форумима, али многи корисници нису упознати са тим.Учење овог лака и моћна метода програмирања може вам помоћи да уштедите време, научите командну линију боље и избаците муцне задатке управљања датотекама.
Шта је Скриптирање Схелл-а?
Као корисник Линука, играте се са командном линијом.Као и то или не, постоје само неке ствари које се много лакше обављају преко овог интерфејса него што су показивали и кликнули.Што више користите и научите командну линију, то што више видите његов потенцијал.Па, командна линија је програм: схелл.Већина Линук дистрибуција данас користи Басх, и то је оно у шта стварно уносите команде.
Сада, неки од вас који су користили Виндовс пре коришћења Линука могу запамтити серијске датотеке.Ово су биле мале текстуалне датотеке које бисте могли попунити командама за извршавање и Виндовс би их покренуо заузврат.Био је паметан и уредан начин да направите неке ствари, као што су покрените игре у рачунарској лабораторији у средњој школи када нисте могли отворити системске фолдере или направити пречице.Батцх фајлови у Виндовсу, док су корисни, су јефтина имитација скриптова.
Схелл скрипти нам омогућавају програмирање команди у ланцима и да их систем извршава као скриптовани догађај, баш као и батцх фајлови.Они такође омогућавају далеко више корисних функција, као што је замјена за команду.Можете позивати команду, као и датум, и користити је излаз као део шеме за именовање датотека.Можете аутоматизовати сигурносне копије и свака копирана датотека може имати тренутни датум додан на крај свог имена.Скрипте нису само позив на команде.Они су програми сами.Скриптовање вам омогућава да користите функције програмирања - као што су "за" петље, ако су изјаве /then/ и сл. - директно у интерфејсу вашег оперативног система.И, не морате да научите други језик зато што користите оно што већ знате: командну линију.
То је заправо моћ сценарија, мислим.Добићете програм са командама које већ знате, док сте учили главне језике већине главних програмских језика.Морате учинити нешто понављање и досадне?Скриптирај то!Треба вам пречица за заиста замућену команду?Скриптирај то!Желите ли направити једноставан за кориштење интерфејс командне линије за нешто?Скриптирај то!
Пре него што започнете
Пре него што започнемо нашу серију скриптова, покривамо неке основне информације.Користићемо басх схелл, коју већина Линук дистрибуција користи природно.Басх је доступан за Мац ОС кориснике и Цигвин на Виндовсу.Будући да је тако универзалан, требали би бити у могућности да скриптирате без обзира на вашу платформу.Поред тога, докле год постоје све команде које се реферишу, скрипте могу радити на више платформи са малим и без твеакинга.
Скриптовање може лако користити привилегије "администратор" или "суперусер", тако да је најбоље провјерити скрипте пре него што их ставите на посао.Такође користите здрав разум, као што ћете бити сигурни да имате сигурносне копије датотека на којима ћете покренути скрипту.Такође је веома важно користити одговарајуће опције, као што је -и за команду рм, тако да је потребна ваша интеракција.Ово може спречити неке гадне грешке.Као такав, прочитајте скрипте које преузимате и будите пажљиви са подацима које имате, само у случају да ствари иду наопако.
У свом језгру, скрипте су само обични текстуални фајлови.Можете да користите било који текст едитор да бисте их написали: гедит, емацс, вим, нано. .. Ова листа се наставља.Само обавезно га чувајте као обичан текст, не као богат текст или Ворд документ.Пошто волим једноставност коришћења коју нано пружа, користићу то.
Дозволе и називи скрипте
Скрипте се извршавају као програми, а како би се то десило, они морају имати одговарајуће дозволе.Можете извршити скрипте извршавањем помоћу следеће команде на њему:
цхмод + к ~ /somecrazyfolder/ сцрипт1
Ово ће омогућити било кому да покрене тај одређени скрипт.Ако желите да ограничите његову употребу само на свог корисника, можете га користити:
цхмод у + к ~ /somecrazyfolder/ скрипт1
Да бисте покренули ову скрипту, морали бисте да унесете одговарајући директоријум, а затим покрените скрипту овако:
цд ~ / сомецразифолдер
. /сцрипт1
Да би ствари биле повољније, можете да поставите скрипте у директоријум "бин" у вашем кућном директоријуму:
~ / бин
У многим модерним дистрибуцијама, ова фасцикла се више не креира по подразумеваној вредности, али можете га креирати.Ово је обично где се извршавају датотеке које се налазе на вашем кориснику, а не другим корисницима.Постављањем скрипти овде, можете их једноставно покренути тако што ћете унети своје име, баш као и друге команде, умјесто да морате преснимавати и користити префикс './'.
Пре него што наведете скрипту, требало би да следите следећу команду да проверите да ли имате инсталиран програм који користи то име:
који [команда]
Многи људи именују своје ране скрипте "тест" и када покушавајупокрените га у командној линији, ништа се не дешава.То је зато што се сукобљава са тест командом, која не чини ништа без аргумената.Увек проверите да ли се имена ваших скрипта не сукобљавају са наредбама, у супротном можда ћете наићи на ствари које не намеравате учинити!
Упутство за скрипте
Као што сам раније поменуо, свака датотека скрипта је у суштини обичан текст.То не значи да можете писати оно што желите све воље-нилав, ипак.Када се покушава извршити текстуална датотека, гранате ће их раздвојити за индикације да ли су скрипте или не, и како све правилно поступати.Због тога имате неколико смерница које треба да знате.
- Свака скрипта би требало да буде са "#!/bin/ басх "
- Свака нова линија је нова команда
- Линије за коментаре почињу са #
- Команде су окружене()
Хасх-Банг Хацк
Када се схелл анализира кроз текстуалну датотеку, најсирег начин да идентификује датотеку каоскрипта је стварањем прве линије:
#!/bin/ басх
Ако користите другу љуску, замијените свој пут овде.Линије за коментаре почињу са хешицама( #), али додају банг( !) И путању шкољке након што је то врста хакова који ће заобићи правило овог коментара и приморати скрипту да изврши са схелл-ом на коју указује ова линија.
Нова линија = Нова команда
Свака нова линија треба сматрати новом командом или компонентом већег система.Ако изјаве /then/ другог, на примјер, преузеће више линија, али свака компонента тог система је у новој линији.Немојте дозволити да се наредба укрсти у следећу линију, јер то може скратити претходну наредбу и дати вам грешку на сљедећој линији.Ако ваш текстовни едитор то ради, требало би да искључите пребацивање текста да буде на сигурној страни.Можете да искључите уклањање текста у нано битном притиску на АЛТ + Л.
Коментар Често са #с
Ако покренете линију са #, линија се занемарује.Ово претвара у линију коментара, на којој се можете подсетити на то какав је резултат из претходне наредбе или шта ће наредна наредба учинити.Опет, искључите обележавање текста или прекидате коментар на више линија које сви почињу са хеш.Коришћење пуно коментара је добра пракса за одржавање, јер вам омогућава да вам и другим људима лакше подесите своје скрипте.Једини изузетак је горе поменути Хасх-Банг хацк, па немојте пратити #с са! С.;-) Команде
окружене округлим столовима
У старијим данима командне замене су извршене са једним ознакама тикета( `, дели ~ кључ).Нећемо још додиривати ово, али пошто већина људи пада и истражује након упознавања са основама, вероватно је добра идеја да напоменете да би требало да користите заграде.Ово је углавном зато што када заглавите команде унутар других команди - заграде боље функционишу.
Ваш први скрипт
Почнимо са једноставном скриптом која вам омогућава да копирате датотеке и додате датуме до краја имена фајла.Назовимо га "датецп".Прво, проверимо да ли се то име сукобљава са нечим:
Можете видети да нема излаза из команде, тако да смо сви намијењени да користимо ово име.
Креирајте празну датотеку у фолдеру ~ / бин:
додирните ~ /bin/ датецп
И, променимо сада дозволу, пре него што заборавимо:
Почнимо са изградњом наше скрипте.Отворите ту датотеку у свом текстуалном едитору по избору.Као што сам рекао, мени се свиђа једноставност нано-а.
нано ~ /bin/ датецп
И, идемо напред и поставимо прву линију предуслова, и коментар о томе шта ова скрипта ради.
Даље, пријавимо променљиву.Ако сте икада узимали алгебру, вероватно знате шта је то.Променљива нам омогућава да сачувамо информације и радимо ствари с њим.Варијабле се могу "ширити" када се помињу на другим местима.То јест, умјесто приказивања њиховог имена, они ће приказати свој спремљени садржај.Касније можете да кажете ту исту варијаблу за чување различитих информација, а свака наредба која се дешава након тога ће користити нове информације.То је стварно фенси.
Шта ћемо ставити у варијаблу?Па, хајде да сачувамо датум и време!Да бисте то урадили, позвалићемо команду датума.
Погледајте слику у наставку како бисте изградили излаз команде датума:
Можете видети да додавањем различитих варијабли које почињу са%, можете промијенити излаз команде на оно што желите.За више информација, можете погледати страницу са упутствима за команду датума.
Користимо то последњу итерацију команде датума, "дате +% м_% д_% и-% Х.% М.% С" и користите то у нашој скрипти.
Ако бисмо сада хтели да сачувамо ову скрипту, могли бисмо да га покренемо и то би нам дало излаз команде датума као што смо очекивали:
Али, урадимо нешто другачије.Дајте име променљиве, као датум дате_форматтед овој команди.Права синтакса за ово је следећа:
варијабла = $( команда-опције аргумената)
И за нас, ми ћемо га направити овако:
дате_форматтед = $( датум +% м_% д_% и-% Х.%М.% С)
То је оно што називамо супституцијом наредбе.Ми у суштини кажемо басх да кад год се појави варијабла "дате_форматтед", покреће команду унутар заграда.Затим, било који излаз који даје команде треба да буде приказан уместо имена променљиве, "дате_форматтед".
Ево примера скрипте и његовог излаза:
Имајте на уму да у излазу постоје два размака.Простор унутар цитата ехо команде и простора испред варијабле су оба приказана.Немојте користити просторе ако не желите да се појаве.Такође, имајте на уму да без ове додате линије "ецхо", скрипта неће дати апсолутно никакав излаз.
Вратимо се на наш сценарио.Хајде да додамо у део за копирање команде.
цп -ив $ 1 $ 2. $ дате_форматтед
Ово ће покренути наредбу копирања, са опцијама -и и -в.Први ће вас замолити за верификацију прије преписивања датотеке, а други ће приказати оно што се налази на командној линији.
Следеће, можете видети да сам додао опцију "$ 1".Када скриптирање, долар знак( $) праћен бројем означава тај нумерирани аргумент скрипте када се позове.На примјер, у сљедећој наредби:
цп -ив Трогдор2.мп3 рингтоне.мп3
Први аргумент је "Трогдор2.мп3", а други аргумент је "рингтоне.мп3".
Осврћући се на нашу скрипту, можемо видети да референцурамо два аргумента:
Ово значи да када покренемо скрипту, мораћемо да обезбедимо два аргумента да се скрипта правилно покреће.Први аргумент, $ 1, је датотека која ће бити копирана, и замењује се као први аргумент "цп -ив" наредбе.
Други аргумент, $ 2, ће деловати као излазна датотека за исту наредбу.Али, такође можете видети да је другачије.Додали смо период и ми смо референцирали варијаблу "дате_форматтед" одозго.Занимљиво шта то ради?
Ево шта се догађа када се скрипт покрене:
Можете видети да је излазна датотека наведена као оно што сам унела за $ 2, након чега следи период, а затим излаз датума команде!Има смисла, зар не?
Сада када покренем наредбу датецп, она ће покренути ову скрипту и дозволити ми да копирам било коју датотеку на нову локацију, а аутоматски додам датум и време до краја датотеке.Корисно за архивирање ствари!
Схелл скриптовање је у срцу стварања вашег оперативног система за рад за вас.Не морате да научите нови програмски језик како бисте то учинили.Испробајте скрипте са неким основним командама код куће и почните да размишљате о чему можете да користите.
Да ли сте сценарија?Имате ли савет за новинаре?Делите своје мисли у коментарима!Још у овој серији!