Bash Scripting: Ръководство за създаване

Скриптовете за скриптове на Bash се използват от системни администратори, програмисти, мрежови инженери, учени и практически всеки, който редовно използва Linux /Unix. Независимо от това, което той прави и какво е цялостното му овладяване на компютърните умения, той може да намери правилния начин да използва Bash скриптове. Макар и правилно, те се наричат ​​shell-скриптове, но повечето програмисти се отнасят към техните скриптове Bash. Като интерактивна обвивка, това е кратък език за иницииране и управление на изчисления. Като скриптов език, той е език, специфичен за домейна, за управление и подреждане на процеси и файлове.

Дефиниция на Bash скрипт

Bash scripting - интерпретатор на команден език. Той е широко достъпен в различни операционни системи и е команден анализатор по подразбиране за повечето GNU /Linux системи. Това е съкращението "Bourne Again SHell".


Други определения:
  • Shell е макропроцесор, който ви позволява да извършвате интерактивно или неинтерактивно изпълнение на команди.
  • Скриптовете ви позволяват да конфигурирате автоматичното изпълнение на команди, които иначе биха действали интерактивно едно след друго.
  • Bash скриптовете са по подразбиране в много GNU /Linux системи, така че скриптът работи дори без да го дефинира като интерпретатор. За да разберете какво се изпълнява командата по подразбиране, напишете: $ echo $ SHELL /bin /bash. Има и други интерпретации на черупки, като Korn, C и много други. Поради тази причина се препоръчва да се определиинтерпретатор на черупки, който ще се използва специално за съдържанието на скрипта.


    Сега всички скриптове ще включват дефиницията на интерпретатора на обвивката: #! /Bin /bash. По-конкретно, това е написано в специалната литература Advanced Bash scripting guide.

    Файлови имена и разрешения

    За да изпълни скрипт на обвивката, файлът трябва да бъде изпълним, изпълнен с командата "chmod + x FILENAME". По подразбиране всички новосъздадени файлове не се изпълняват независимо от суфикса на файловото разширение. Всъщност, най-новата функция в GNU /Linux системите всъщност няма никакво значение. Когато изпълнявате командата "ls" за изброяване на всички файлове и директории, веднага става ясно, че. За повече информация относно файловите разширения на този език вижте ръководството за разширени скриптове на Bash. В GNU /Linux файлове командата може да се използва за идентифициране на типа на файла. Както може да се види от примера по-долу, разширението на файла няма значение и интерпретаторът на обвивката в този случай е по-важен.
    Така името на скрипта "0_xyz" работи добре, въпреки че програмистите се опитват да го избегнат колкото е възможно повече.

    Командата на черупката PATH

    Когато разработчикът въведе команда в черупката, Bash разглежда определени директории, за да разбере дали може да го намери. Следователно, според ръководството за скриптове на Bash, ако въведете "ls" в черупката, той ще изпълни само командата, ако е на пътя му. Операцията ще завърши с грешка, ако е таканяма да бъде в една от директориите, които са част от маршрута. Ако на пътя има съвпадение в повече от една директория, той избира първия. Можете да намерите маршрута, като изпълните:
    echo $ PATH. На екрана ще видите нещо подобно: /home /jzb /bin: /usr /local /bin: /usr /bin: /bin: /usr /bin /x11: /usr /X11R6 /bin: /usr /игри: /usr /lib /jvm /jre /bin.

    Правилният път към началната директория

    Всяка директория, в която изглежда Bash, е разделена с двоеточие. В този случай първият ще провери директорията "bin", а след това /usr /local /bin, /usr /bin. Ако потребителят влезе като root, той трябва да види друг набор от директории, включително /usr /local /sbin, /usr /sbin. Можете да ги добавите в движение или да редактирате, като редактирате файловете: ~ /.bashrc и ~ /.bash_profile. Например: PATH = "$ HOME /bin: $ PATH". Можете леко да промените това правило и да инсталирате разширен скрипт на Bash. PATH "=" казва на Bash, че ще зададе пътя, и "$ HOME /bin" го кани да добави bin директорията, а след "$ PATH" препоръчва да добави всичко, което вече е на маршрута. Параметърът «:» е разделител между елементите. Разработчикът ще види нещо подобно на този на екрана на монитора си: ако [-d "$ HOME /bin"]; след това PATH = "$ HOME /bin: $ PATH" fi. Това правило ще провери дали в домашната директория има директория "bin" и след това я добавете към пътя, за да продължите правилно "run bash script" операцията.

    Псевдоним на ред

    Псевдонимът е низ, в който Bash ще бъде заменен от друг екип. Един прост пример: alias ls = 'ls - color = auto'. Това му казва, че когато стартирате "ls", трябва да стартирате "ls - color = auto", без набор от всичко останало. Можете да задавате псевдоними в командния ред и това е добро за тестване.
    Има смисълзадайте псевдоними на "~ /.bash_profile и ~ /.bashrc". Или създайте нещо като "~ /.aliases" и го извикайте от конфигурационните файлове по следния начин: if [-f ~ /.bash_aliases]; след това. ~ /.bash_aliases fi За да видите вече съществуващи псевдоними, просто го стартирайте в черупката. По подразбиране е посочено в дистрибуцията. Например настройката по подразбиране е openSUSE 11.2 без никакви промени.
    Като тест можете да видите, че той вече е инсталиран в дистрибуцията и се опитват да направят няколко от собствените си опции.

    Разширяване на корпуса

    Преди Bash да изпълни команда, той оценява влизанията и "разширява" псевдоними и други изрази, когато е необходимо. Той има няколко знака, които задължително се разпростират, за да съответстват на един или повече символи, и те се наричат ​​"обобщаващ символ". Такова сравнение на моделите може да бъде наистина полезно. Например, ако искате да видите всички JPEG файлове в директорията, стартирайте "ls * jpg", при условие че JPEG файловете са маркирани като "jpg", а Bash ще го разшири, за да съответства на всяко име на файл, което завършва с jpg.

    Ако трябва само да комбинирате 1 знак, използвайте "?". Това ще покаже един знак, така че "е?" .Jpg "ще съвпада само с имена на файлове, като" 1.jpg "или" a.jpg ", а не с" 01.jpg ". Bash също ви позволява да съвпадате с диапазоните на знаците с помощта на скоби. Използването на [abc12] ще съответства на един от символите в разширението. Така че, работата с "ls -lh [abc12] .jpg" ще бъде свързана с a.jpg, b.jpg, c.jpg, 1.jpg и 2.jpg, но не и 12.jpg или abc.jpg. Можете да нулирате шаблона с префикс "bang" (!), Например: ls -lh [! Ab12] .jpgще съвпадне c.jpg или 3.jpg, но не 2.jpg и т.н. Друг удобен трик е да се разшири скобата, когато става въпрос за организиране на документи по години и дати. Ако например директорията ~ /Documents има каталог 2010 с поддиректории от 01 до 12 и не е необходимо да печата от 01 до 12, направете Bash вместо: mkdir 2010 /{0112}. Когато чете правило, той разширява това, което е в скобите от 01 до 12. Той също работи с букви, така че ако имате нужда от поддиректории през z, можете да стартирате mkdir {az} и той ще създаде директории през z. Може да работи и с главни букви.

    Изпълнение на скрипт

    Съществува алтернативен начин за изпълнение на скриптове на Bash. В много опростена презентация неговият скрипт не е нищо друго освен текстов файл, съдържащ инструкции, които трябва да се изпълняват последователно отгоре надолу. Начинът, по който се тълкуват инструкциите, зависи от конкретната схема или начина на изпълнение на скрипта.
    Друг метод за прилагане на скриптове е изрично да извика своя интерпретатор, например $ bash date.sh. Следователно, скриптът ще работи без да е необходимо да стартира скрипта на обвивката и без да обявява shebang, директно в схемата на операционната система, като извиква изпълнимия двоичен bash файл. Така съдържанието на файла date.sh ще бъде заредено и интерпретирано като Bash Shell Script.

    Относителна и абсолютна пътека

    Преди да можете да програмирате официален скрипт на обвивката, като например скрипт за изход Bash, трябва да определите навигация с него и да зададете разликата между относителния и абсолютен път до файла. Вероятно най-добрата аналогия, която обяснява относителния и абсолютен път към файла, евизуализирайте файловата система GNU /Linux като многоетажна сграда. Основната директория е входната врата на сградата, маркирана с позиция, осигурява вход към цялата файлова система на "структура", следователно дава достъп до всички директории - "етажи" и "стаи" - и файлове - на "жителите". Например, за да отидете в стая 1 на 3-ти етаж, първо трябва да влезете в главната врата и след това да отидете на 3-ти етаж (ниво 3) и след това да влезете в стая (стая1). Така че, абсолютният път към тази конкретна стая на пода в сградата "/level3 /room1". Следователно, ако искате да посетите стая 2 също на ниво 3, първо намерете текущото местоположение, което е стаята 1, като въведете "/", и след това, като включите името на стаята за стая "room2". Това отнема относителния път до стаята 2, която в този случай е "/room2". Тъй като в този пример потребителят вече е на трето ниво, той не трябва да напуска цялата сграда и да премине абсолютния път през главния вход /ниво3 /стая2. За щастие, GNU /Linux има прост инструмент за компас, който помага на програмиста да премине през файловата система като команда "pwd". Тази команда винаги ще отпечатва текущото местоположение, когато се изпълни. Следващият пример ще използва командите "cd" и "pwd" за навигиране на файловата система GNU /Linux, използвайки абсолютни и относителни пътища.
    По-нататъшно продължение.
    Изпълнете команда "cd" без никакви аргументи за незабавно придвижване до домашната директория на потребителя от всяко място. Както можете да видите, навигирането през файловата система GNU /Linux е едновременно просто и в същото време много объркващотема.

    Понятия за променливи

    Почти всеки програмен език има понятието за променливи - символично име за част от паметта, която може да бъде присвоена стойност, четена и манипулирана с нейното съдържание. Например, за пример на Bash скрипт, Hello World може да се направи с помощта на променливи. Имайте предвид, че около знака "=" не трябва да има интервали:
  • VAR = стойност работи;
  • VAR = стойността не работи.
  • В първия случай, черупката вижда символа "=" и обработва командата като присвояване на променливата. Във втория случай, черупката приема, че VAR трябва да е име на команда и да се опитва да я изпълни. Въведете следния код в var.sh.
    Това присвоява променливата "Hello World" на променливата MY_MESSAGE. Това изисква цитати около низ World Hello и променливата може да съдържа само 1 стойност, така че редът с интервали трябва да се показва, така че черупката да знае, че всичко се счита за едно. В противен случай, черупката ще се опита да изпълни командата "Светът" след присвояването на "MY_MESSAGE = Hello". Черупката не изисква много видове променливи, те могат да съхраняват низове, цели числа, валидни числа - всичко, което потребителят харесва. Опитни програмисти обръщат внимание на факта, че специалните знаци трябва да бъдат добре защитени. Това се прави с помощта на командата shell-builtin, read, която чете низ от стандартния вход към предоставената променлива. Ако му дадеш пълното име и не използваш двойните кавички на командата "ехо", той все още се показва правилно. Повечето езици имат концепция за цикли, ако трябва да повторите задачата двадесет пъти, е малко вероятно потребителят да иска да въведе кода 20 пъти, а вероятно ис грешки За това има черупки "за" и "време" в черупката на Борн. Това дава малко по-малко възможности от другите езици, но никой не твърди, че програмирането на черупката има силата на C. За-цикълът се повтаря чрез набор от стойности, докато списъкът не се изчерпи, ghb 'njv стойностите могат да бъдат всякакви.

    Първият сценарий

    За първия скрипт на обвивката можете просто да напишете скрипт, който казва "Hello World". Създайте файла (first.sh) както следва: first.sh Първият ред казва на Unix, че файлът трябва да бъде стартиран /bin /sh. Това е стандартното оформление на обвивката за почти всяка Unix система. Ако използвате Linux Bash скрипт, тогава GNU /Linux /bin /sh обикновено е символична препратка към bash, или тирето е станало по-често. Вторият ред започва със специален символ "#". Той отбелязва реда като коментар, напълно се игнорира от обвивката. Единственото изключение е, когато започва първият ред на файла "#!". Това е специална директива, която Unix третира конкретно и означава, че дори ако използвате "csh", "ksh" или нещо друго като интерактивна обвивка, след това по-нататъшно тълкуване от Bourne. По същия начин Perl може да започне с низ: #! /Usr /bin /perl Това ще каже на интерактивната обвивка, че следващата команда трябва да бъде изпълнена perl. За програмирането на обвивката на Борн обикновено се използват следните: #! /Bin /sh. Третият ред изпълнява командата "echo" с два параметъра или аргумента: първият е "Hello"; Вторият е "Светът". Обърнете внимание, че "echo" автоматично ще зададе едно пространство между неговите параметри. Символът все още отбелязва # коментара и всичко останалоследното се игнорира от обвивката.

    Тест на сценарий на изпитване

    ​​Тестът се използва за почти всеки писмен скрипт. В този случай "тестът" не се нарича директно, по-често, използвайте нотацията "[". Това е символична връзка на тази дума, която прави черупковите програми по-четливи.Обикновено това означава, че обвивката на обвивката на Bash ще бъде интерпретирана като "[" като стойност на теста, дори ако Unix средата е конфигурирана по различен начин. Това означава, че "[" е всъщност програма като "ls" и други, така че трябва да бъде заобиколена от интервали: ако [$ foo = "bar"] няма да работи, тъй като се интерпретира като: ако тест $ foo = "bar"], което е "]" без началото на "[". В този случай поставете пространства около всички оператори и изберете задължителното пространство "SPACE", като го замените с действителното пространство, в противен случай, ако няма място, няма да работи: ако SPACE [SPACE] $ foo "SPACE = SPACE" бар SPACE] Някои черупки приемат "==" за сравняване на низове. За последното е най-добре да се използват единични "" или "-eq" за цели числа. Както можете да видите, тестът е прост, но мощен инструмент за сравнение, който е необходим, за да работи черупката. Разбира се, всеки няма да се превърне в гуру-баш в края на четенето на статията, но ще бъде по-уверен и въоръжен с необходимите знания и умения за лесно изпълнение на работата си.

    Свързани публикации