Почетна » како да » Водич за почетнике за Схелл Сцриптинг Основе

    Водич за почетнике за Схелл Сцриптинг Основе

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

    Шта је скриптирање љуске?

    Бити Линук корисник значи да се играте са командном линијом. Свидјело вам се то или не, постоје само неке ствари које се много лакше обављају преко овог сучеља него помоћу показивања и кликања. Што више користите и научите командну линију, то више видите њен потенцијал. Па, сама командна линија је програм: љуска. Већина Линук дистроса данас користи Басх, и то је оно у шта заиста уносите команде.

    Сада, неки од вас који су користили Виндовс пре коришћења Линука могу запамтити командне датотеке. То су били мали текстуални фајлови које можете попунити командама за извршавање и Виндовс их покреће редом. То је био паметан и уредан начин да се неке ствари ураде, као што су трчање игара у компјутерској лабораторији у средњој школи када нисте могли да отворите системске фасцикле или креирате пречице. Батцх датотеке у Виндовсу, иако корисне, су јефтина имитација скрипти.

    Схелл скрипте дозвољавају нам да програмирамо команде у ланцима и да их систем извршава као скриптовани догађај, баш као и батцх фајлови. Они такође омогућавају много корисније функције, као што је замена команди. Можете позвати команду, као датум, и користити је као део шеме за именовање датотека. Можете аутоматизирати сигурносне копије и свака копирана датотека може имати тренутни датум на крају имена. Скрипте нису само позиви команди. Они су сами по себи програми. Скриптовање вам омогућава да користите функције програмирања - као што су 'за' петље, иф / тхен / елсе изјаве, и тако даље - директно у интерфејсу вашег оперативног система. И не морате да учите други језик зато што користите оно што већ знате: командна линија.

    То је стварно моћ скриптовања, мислим. Можете да програмирате са командама које већ знате, док учите споне већине главних програмских језика. Требате учинити нешто понављајуће и заморно? Сцрипт ит! Треба вам пречица за стварно заплетену команду? Сцрипт ит! Желите да направите заиста једноставан интерфејс командне линије за нешто? Сцрипт ит!

    Пре него што почнете

    Пре него што почнемо са скриптовањем, покрићемо неке основне информације. Користићемо басх схелл, који већина Линук дистрибуција користи нативно. Басх је доступан и за кориснике Мац ОС-а и за Цигвин на Виндовс-у. Пошто је толико универзалан, требало би да можете да скриптујете без обзира на вашу платформу. Осим тога, све док постоје све наредбе које се референцирају, скрипте могу радити на више платформи са мало или нимало потребних подешавања.

    Скриптовање може лако да користи привилегије „администратора“ или „суперкорисника“, тако да је најбоље тестирати скрипте пре него што их ставите на посао. Такође, користите здрав разум, као што сте били сигурни да имате резервне копије датотека на којима желите да покренете скрипту. Такође је веома важно користити праве опције, као што је -и за рм наредбу, тако да је ваша интеракција потребна. То може да спречи неке гадне грешке. Као такав, прочитајте скрипте које преузимате и будите опрезни са подацима које имате, само у случају да ствари крену наопако.

    У својој суштини, скрипте су само обични текстуални фајлови. Можете користити било који текст едитор да бисте их написали: гедит, емацс, вим, нано… Ова листа се наставља. Само га сачувајте као обичан текст, а не као богати текст или Ворд документ. Пошто ми се свиђа лакоћа употребе коју нано пружа, користит ћу то.

    Дозволе и имена скрипте

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

    цхмод + к ~ / сомецразифолдер / сцрипт1

    Ово ће омогућити свакоме да покрене тај скрипт. Ако желите да ограничите његову употребу само на корисника, можете да га користите уместо тога:

    цхмод у + к ~ / сомецразифолдер / сцрипт1

    Да бисте покренули ову скрипту, морали бисте да уђете у одговарајући директоријум и да покренете скрипту на следећи начин:

    цд ~ / сомецразифолдер

    ./ сцрипт1

    Да би ствари биле практичније, можете поставити скрипте у “бин” фасциклу у вашем хоме директоријуму:

    ~ / бин

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

    Пре него што именујете скрипту, требало би да наредите следећу команду да проверите да ли имате инсталиран програм који користи то име:

    које [команду]

    Многи људи своје ране скрипте називају „тест“, а када покушају да га покрену у командној линији, ништа се не дешава. То је зато што је у конфликту са тест командом, која не ради ништа без аргумената. Увек будите сигурни да имена скрипти нису у сукобу са командама, јер у супротном можете пронаћи ствари које не желите да урадите!

    Смернице за писање скрипти

    Као што сам већ споменуо, сваки скрипт фајл је у суштини обичан текст. То не значи да можете написати оно што желите, свеједно. Када се покуша извршити текстуална датотека, љуске ће их анализирати за трагове о томе да ли су оне скрипте или не, и како да све исправно обраде. Због тога постоји неколико смерница које треба да знате.

    1. Свака скрипта би требала бити са "#! / Бин / басх"
    2. Свака нова линија је нова команда
    3. Линије коментара почињу са #
    4. Команде су окружене са ()

    Хасх-Банг Хацк

    Када љуска анализира кроз текстуалну датотеку, најизравнији начин идентификације датотеке као скрипте је израда прве линије:

    #! / бин / басх

    Ако користите другу љуску, замените њен пут овде. Линије коментара почињу са хасхес (#), али додајући банг (!) И путању шкољке након што је нека врста хака који ће заобићи ово правило коментара и приморат ће скрипту да се изврши са љуском коју ова линија указује на.

    Нова линија = Нова команда

    Свака нова линија треба да се сматра новом командом или компонентом већег система. На пример, ако / / / / наредбе преузимају више редова, али свака компонента тог система је у новој линији. Не дозволите да наредба искрца у следећи редак, јер то може скратити претходну команду и дати вам грешку у следећем реду. Ако ваш уређивач текста то ради, требали бисте искључити преношење текста да бисте били сигурни. Можете искључити преламање текста у нано-битном притиску АЛТ + Л.

    Коментар често са #с

    Ако покренете линију са #, линија се игнорише. Ово га претвара у коментарску линију, где можете да се подсетите шта је излаз из претходне команде, или шта ће наредна наредба да уради. Опет, искључите преламање текста или прекините коментар у више редака који почињу са хасхом. Коришћење много коментара је добра пракса, јер омогућава вама и другим људима да лакше подесите ваше скрипте. Једини изузетак је горе поменути Хасх-Банг хак, тако да не следите #с са! С. ;-)

    Команде су окружене заградама

    У старијим данима, замене команди су извршене са једним квачицама (', дели ~ кључ). Нећемо још ово да дирамо, али како већина људи одлази и истражује након учења основних информација, вероватно је добра идеја споменути да уместо тога треба користити заграде. Ово је углавном зато што када ставите команде унутар других команди - заграде раде боље.

    Ваш први скрипт

    Почнимо са једноставним скриптом која омогућава копирање датотека и додавање датума на крај имена датотеке. Назовимо га "датецп". Прво, проверите да ли је то име у сукобу са нечим:

    Видите да нема излаза наредбе, тако да смо сви спремни да користимо ово име.

    Креирамо празну датотеку у фасцикли ~ / бин:

    додирните ~ / бин / датецп

    А сада промијенимо дозволу, прије него што заборавимо:

    Хајде да онда почнемо да градимо нашу скрипту. Отворите ту датотеку у свом уређивачу текста по избору. Као што сам рекао, свиђа ми се једноставност нано-а.

    нано ~ / бин / датецп

    И, хајде да наставимо и ставимо предуслов прве линије, и коментар о томе шта ради овај скрипт.

    Следеће, прогласимо варијаблу. Ако сте икада узели алгебру, вероватно знате шта је то. Варијабла нам омогућава да сачувамо информације и радимо ствари са њим. Варијабле могу "проширити" када се спомињу негдје другдје. Наиме, уместо да приказују своје име, они ће приказати свој ускладиштени садржај. Касније можете рећи тој истој варијабли да похрањује различите информације, и сваку инструкцију која се појављује након тога ће користити нове информације. То је стварно фанци плацехолдер.

    Шта ћемо ставити у варијаблу? Па, чувајмо датум и време! Да бисмо то урадили, позват ћемо наредбу дате.

    Погледајте слику испод како да направите излаз команде дате:

    Можете видјети да додавањем различитих варијабли које почињу са%, можете промијенити излаз наредбе на оно што желите. За више информација, можете погледати ман страницу за наредбу дате.

    Користимо ту последњу итерацију команде дате, „дате +% м_% д_% и-% Х.% М.% С“, и користимо то у нашој скрипти.

    Ако бисмо сада спремили ову скрипту, могли бисмо је покренути и она би нам дала излаз команде датума као што бисмо очекивали:

    Али, урадимо нешто другачије. Дајемо име променљиве, као дате_форматтед овој команди. Одговарајућа синтакса за ово је следећа:

    вариабле = $ (аргументи -оптионс аргумента)

    И за нас, направили бисмо га овако:

    дате_форматтед = $ (датум +% м_% д_% и-% Х.% М.% С)

    То је оно што ми зовемо замена команди. Ми у суштини говоримо басх да кад год се појави варијабла "дате_форматтед", покренути команду унутар заграда. Онда, било који излаз који команде дају треба да буде приказан уместо имена променљиве, "дате_форматтед".

    Ево примера скрипте и његовог излаза:

    Имајте на уму да у излазу постоје два размака. Приказује се простор унутар наводника команде ецхо и простора испред варијабле. Не користите размаке ако не желите да се појаве. Такође имајте на уму да без ове додане “ецхо” линије, скрипта не би дала апсолутно никакав излаз.

    Вратимо се на наш сценарио. Следеће додамо у део за копирање команде.

    цп -ив $ 1 $ 2. $ дате_форматтед

    Ово ће позвати команду копирања, са -и и -в опцијама. Први ће вас питати за верификацију пре преписивања датотеке, а она ће приказати шта се налази у командној линији.

    Затим видите да сам додао опцију "$ 1". Када скриптовање, знак долара ($) праћен бројем означава тај нумерички аргумент скрипте када је био позван. На пример, у следећој команди:

    цп -ив Трогдор2.мп3 рингтоне.мп3

    Први аргумент је "Трогдор2.мп3" и други аргумент је "рингтоне.мп3".

    Осврћући се на нашу скрипту, можемо видјети да упућујемо на два аргумента:

    То значи да када покренемо скрипту, морат ћемо дати два аргумента за исправно покретање скрипте. Први аргумент, $ 1, је датотека која ће бити копирана и замењена је као први аргумент команде "цп -ив".

    Други аргумент, $ 2, ће деловати као излазна датотека за исту наредбу. Али, такође можете видети да је то другачије. Додали смо период и референцирали смо варијаблу “дате_форматтед” одозго. Занима ме шта ово ради?

    Ево шта се дешава када се скрипта покрене:

    Можете видети да је излазна датотека наведена као оно што сам унела за $ 2, након чега следи период, затим излаз команде дате! Има смисла, тачно?

    Сада када покренем команду датецп, покренут ће ову скрипту и дозволити ми да копирам било коју датотеку на нову локацију и аутоматски додам датум и време на крај имена датотеке. Корисно за архивирање ствари!


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

    Имате ли скрипту? Имате ли неки савет за почетнике? Поделите своје мисли у коментарима! У овој серији има још тога!