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