Редовни изрази Bash: Ръководство за създаване, използване, примери

Редовните изрази на командната обвивка Bash са предназначени за един от основните инструменти, които позволяват взаимодействие между потребителя и операционната система. Чрез обвивката, потребителят може да управлява файловете и директориите, присъстващи във файловата система на машината, да обработва тяхното съдържание и да изпълнява други приложения, използвайки клавиатурата на техния терминал като входен блок и буквено-цифров терминален екран като изходно устройство.

История на командния език

Редовни изрази Bash са разработени от Брайън Фокс за проекта GNU като алтернативна промяна за обвивката на Bourne. Командният език е издаден през 1989 г. и е широко разпространен като стандартна входна обвивка за Linux дистрибуции и MacOS чрез Apple (преди OS X). Версията е достъпна и за Windows 10 и е обвивка по подразбиране за Solaris 11.


Bash е инструкторски процесор, който традиционно работи в текстово базиран терминал, където разработчикът стартира действия. Редовните Bash изрази се четат и изпълняват от файл с име shell shell script. Заедно с Unix, той разпознава имената на файловете (сравнение на символни символи), протоколите, документите, подмяната на директиви и управленската структура за тестови критерии. В основните думи синтаксисът и другите ключови индивидуалности на езика се възпроизвеждат от csh и ksh. Bash е POSIX-съвместима черупка, но с някои разширения. Името на обвивката е стенография от обвивката на Борн. Брайън Фокс започва да кодира "Баша" на 10 януари 1988 г.след като Ричард Столман беше недоволен от липсата на напредък в разработването на безплатен корпус, който да може да изпълнява съществуващите сценарии. Fox пусна Bash като бета на 8 юни 1989 г. и остава основният разработчик на проекта от средата на 1992 г. до средата на 1994 г., след което е освободен от FSF, а Chet Rami заема неговото място.


През този период Bash е най-популярната програма сред потребителите на Linux, превръщайки се в интерактивна обвивка по подразбиране в различни дистрибуции на тази операционна система, както и MacOS от Apple. Баш също е вграден в Microsoft Win от Cygwin, в DOS с DJGPP проект и Android с различни приложения за емулация на терминали. В началото на септември 2014 г. достойният пробив на сигурността в Bashe версия 103, издаден през август 1989 г., получи името Shellshock, което доведе до редица атаки през интернет. Грешката се смяташе за сериозна, тъй като CGI скриптовете, използващи Bash, станаха уязвими, което позволява изпълнението на произволен код. Кръпките за грешки станаха достъпни веднага след като бяха открити, но не всички компютри бяха обновени.

Bash синтактични характеристики

Bash е изобилие от команди на Bourne shell и използва разширения за скоби, завършване на командния ред, основно отстраняване на грешки и обработка на изключения, използвайки капани между други функции. Изпълнява повечето от скриптовете на Bourne непроменени, с изключение на сценарии, които се интерпретират по различен начин или се опитват да изпълнят системна команда. Редовни изрази Bash grep, както и GNU инструментиизползвайте компресиран начин за сканиране на грешки и задайте статус на изход, който позволява на конците да мигрират към традиционните дестинации.
Ако разработчикът кликне върху раздела с раздели в черупката, Bash автоматично прилага прекратяването на командния ред, за да съответства на въведените имена на програми, файлове и променливи. Прекратяването на командния ред е безкрайно гъвкаво и управляемо и често се състои от функции, които съхраняват аргументи и имена на файлове за конкретни програми и задачи. Синтаксисът Bash има достатъчен брой разширения, които липсват в обвивката на Bourne. Редовни Bash изрази: Извършвайки изчисления на аритметична оценка с цели числа, използвайте командата (()) и синтактичния аргумент $ (()), което опростява пренасочването на входно-изходния сигнал. Например, той има способността да пренасочва изхода (stdout) и грешката (stderr) синхронно с поддръжката на & amp; & gt; оператора. По-лесно е да въведете от еквивалента на командата на Борн & gt; файл 2 & amp; 1 '. Bash използва подмяната на процеса със синтаксиса на регулярните изрази "Linux" и замества изхода на командата (input), традиционно прилага името на файла. Когато използвате ключовата дума "функция", Bash рекламите са несъвместими със скриптовете на Bourne и Korn, тъй като обвивката на Korn има същия проблем с "функцията", но приема същия синтаксис за деклариране на функции като горните черупки, отговарящи на POSIX.
Поради тези и други различия, сценариите рядко се изпълняват от преводачите от Борн и Корн, освен ако не са специално написани въз основа на товасъвместимост, която трябва да вземете под внимание, когато планирате работата с регулярни изрази Bash. Асоциативните масиви позволяват фалшива поддръжка за индексирани масиви, подобно на AWK. Bash 4.x не е интегриран в новата версия на MacOS поради лицензионни ограничения. Пример за асоциативен масив.

Команда за режими на работа

Черупката има два режима на изпълнение на команди: batch и parallel. Екипите в пакетния режим са разделени от символ ";". Редовен израз Bash, пример:
  • command1;
  • command2.
  • В този пример, когато команда 1 е завършена, се изпълнява команда 2. По същия начин е възможно да се изпълни командата за фон от команда 1, като се използва (символ &) в края на процеса, процесът ще се изпълни във фонов режим, връщайки незабавно контрола на обвивката и позволявайки на потребителя да приложи изпълнени команди.
    За едновременното изпълнение на команди 1 и 2, те трябва да бъдат изпълнени в черупката, както следва:
  • command1 & amp; command2.
  • В този случай, команда 1 се изпълнява във фона & amp; символ, връщайки незабавно контрола на черупката, която изпълнява команда 2 на преден план. Редовните изрази Bash grep могат да бъдат спрени и да се завъртят контролите чрез въвеждане на Ctrl + z, докато процесът се изпълнява на преден план. Списъкът на всички процеси, както във фонов режим, така и в режим стоп, може да бъде постигнат чрез стартиране на задачи.

    Състоянието на процеса може да се променя, като се използват различни команди. Командата "fg" извежда процеса на преден план, а "bg" -настройките спира процеса на работа във фонов режим. Bg "и" fg "могат да приемат идентификатора на заданието като своя собственапървият аргумент, който показва в кой процес да се действа. Без това те използват процеса по подразбиране, маркиран със знака плюс в изхода на "заданията". Командата "kill" може да се използва за приключване на процеса преждевременно чрез изпращане на сигнал до него. Идентификаторът на задачата трябва да бъде зададен след знака за процента:
  • убива SIGKILL% 1 или да убие -9%.
  • Баш доставя "условно" на разделителите на командите, които изпълняват командите "условно" според кода на изхода, определен от командата за предшестващо действие. Външен екип, наречен "bashbug", съобщава за грешки в обвивката. Когато командата се извика, тя стартира редактор по подразбиране за потребителя с попълнения формуляр. Формулярът се изпраща на страните в Bash или евентуално на други имейл адреси, което гарантира глобалната подмяна на обикновени изрази Bash. Запазени Баш променливи.

    Скриптове за стартиране на интерактивна среда

    Когато Баш започва да функционира, той изпълнява различни точкови файлове. Дори за подобни команди на скрипт, които имат разрешение да изпълнят инструкция на преводач, например:
  • #! /Bin /bash.
  • Файловете за инициализация, използвани от изразите Bash с присвояването, не изискват това. Процедура за изпълнение на файл:
  • При изпълнение на shell [edit], той чете и изпълнява /etc /profile, ако има такива.
  • Този файл инициира /etc/bash.bashrc.
  • След като дефинира този файл, той ще потърси ~ /.bash_profile чрез четене и изпълнение на 1, съществуващ и четим.
  • Ако черупката идва от [edit], тя дефинира и изпълнява ~ /.bash_logout.
  • Когато се стартира като черупка [edit], тя определя иизпълнява /etc/bash.bashrc и след това ~ /.bashrc.
  • Това има възможност да забрани чрез опцията "--norc".
  • Параметърът на файла --rcfile причинява Bash да го чете и изпълнява.
  • Сравнение с обвивката на Борн и стартирането на csh [edit], излиза от черупката "Born" и csh. Те ви позволяват да стесните споделянето на файлове от Bourne и да разрешите индивидуални стартиращи функции, известни на csh потребителите.
  • Преносимост на стандарта POSIX 1003.2

    Извикването на Bash с опцията -posix или посочващия набор -o posix в скрипта прави правилния израз за екраниране Bash много точно съвпадащ със стандарта POSIX 1003.2. Скриптовете на Shell, предназначени за преносимост, трябва поне да вземат под внимание обвивката на Bourne, която възнамерява да замени. Bash има някои характеристики, които липсват в традиционната обвивка на Bourne. Те включват:
  • Някои разширени опции за повикване.
  • Замяна на команди с нотация $ (). Тази функция е част от стандарта POSIX 1003.2.
  • Разширяване на скобите.
  • Някои операции с масиви и асоциативни масиви.
  • Разширяване на дизайна на изпитването с две скоби.
  • Аритметично-оценителната конструкция на регулярни изрази на Баш в "if".
  • ​​
  • Някои операции за манипулиране на линии.
  • Подмяна на процеса.
  • Оператор за съвпадение на регулярни изрази.
  • Специфични вградени копроцеси "Баш".
  • Баш аритметичните изрази използват "readline" за предоставяне на команди за бърз достъп и редактиране на командния ред с помощта на клавишни връзки по подразбиране (Emacs). Vi-bindings могат да бъдат активирани, когато стартирате "set -o vi".

    Разширяване на скобите от заместване

    Подмяната на скоби, наричана също променлива, е функция, копирана от черупката "C". Той генерира набор от алтернативни комбинации. Генерираните резултати не е задължително да съществуват под формата на файлове. Резултатите от всеки разширен низ се сортират и съхраняват в реда на дясно. Потребителите не трябва да използват разширения за скоби в преносими скриптове, защото обвивката на Bourne не произвежда един и същ изход. Когато разширенията на скобите се комбинират с буквите на знаците, скобите се разширяват първо, след което получените символи се заменят със символи. В допълнение към редуването, разширяването на скобата може да се използва за последователни диапазони между две цели числа или символи, разделени от двойни точки. По-новите версии на използването на обикновени изрази Bash позволяват на третото цяло число да показва прираст. Когато разширяването на скобата е комбинирано с променливо разширение, то се изпълнява след разширяването на скобата, което в някои случаи може да изисква използването на "eval", вграден, като по този начин:
  • $ start = 1;
  • end = $ 10 echo {$ start $ end} # не може да се разшири в реда на оценяване {110};
  • Продължава разширяването на $ eval echo {$ start $ end} #, след което се оценява полученият низ: 123 456 789 10.
  • Синтактични аспекти на езика Баша

    Скриптовете на Shell трябва да се съхраняват в ASCII текстов формат, създаден с помощта на програмата "editor", която не въвежда допълнителни символи или последователности за форматиране на текста. Например, редакторите, които са подходящи за създаване на скриптове, саvi или Emacs, достъпни в UNIX /Linux, или програми като Notepad, TextEdit и UltraEdit в Microsoft Windows. Добра практика е да вмъкнете в първия ред на всеки редовен скрипт на Баш, последователността "#! /Bin /bash ", което показва абсолютния път на програмата във файловата система на машината, на която да се изпълни скрипта. По този начин той може да бъде стартиран директно в командния ред, без да се указва името на файла като аргумент за командата "bash". Инструкцията на преводаческата програма, използвана от операционната система за превод и изпълнение на инструкциите на скрипта, се дава в първия ред на самия скрипт, непосредствено след последователността от символи "#!". Смята се, че изпълнимият интерпретиращ файл е в директорията /bin, но в различни системи може да бъде инсталиран в други директории, например:
  • /usr /bin, /usr /local /bin.
  • В общия случай символът "#" може да се използва за писане на коментар в източника на скрипта. Всеки символ в реда на скрипта след символа "#" се игнорира от командния интерпретатор. Всъщност, често се използва за вмъкване на коментари в източника на скрипта, за да опише работата му или да обясни въздействието на специфични команди. Както при вмъкването на команди в интерактивен режим, дори и при кодиране на скрипт, всяка програмна инструкция може да бъде записана на един ред или разделена на няколко реда, и завършва с всеки ред, с изключение на последния, със символа "". Допълнителни инструкции могат да бъдат докладвани на същия ред, като се използва ";". Инструкциите на програмата могат да бъдат "отстъп", за да се чете изходния код, но трябва да се обърне вниманиеизползване на пропуски. Интерпретаторът Bash е "четлив" от други преводачи или съставители и в някои случаи не е позволено да се въвеждат произволни интервали между членовете, инструкциите за компонентите, в други случаи използването на пространството е важно за правилното тълкуване на инструкцията. Няма знаци за разделяне на блоковете от инструкции, поставени в управляващата структура, например, които трябва да се повторят в структурата на итеративния контрол. От друга страна, има ключови думи за съответните езици, които ви позволяват правилно да идентифицирате началото и края на блока. Тези ключови думи варират в зависимост от инструкциите, използвани за контрол на потока на програмата. В синтаксиса на "съвпадение" на екземплярите на регулярните изрази на Bash, някои символи имат специално значение, тоест, ако присъстват в символен низ или като аргумент на команда, тогава те изпълняват много точна функция.

    Интерактивно стартиране

    С минимална простота можем да кажем, че обвивката е програма, която взаимодейства с една и съща операция по всяко време. Той очаква командата да бъде въведена като вход, оценява го, за да се увери, че командата е синтактично правилна и я изпълнява, след което се връща в изчакване за следващата команда. Този процес приключва, когато черупката получи сигнал, показващ, че входът е завършен и няма да бъдат изпращани други команди към него. В този момент програмата на обвивката завършва, освобождавайки разпределената памет и други ресурси на машината, достъпни за операционната система. Скриптът се стартираавтоматично от операционната система, когато потребителят влезе в самата система, т.е. може да бъде изпълнена от потребителя чрез команда, зададена на вече отворена обвивка или използваща специални графични инструменти, ако работи с графична система на потребителски интерфейс. Например, можете да използвате командната обвивка на Apple Macintosh компютър, работещ под Mac OS X, като изпълните помощната програма Terminal, намираща се в помощната програма в папката Attachments. На десктоп Linux с графичен десктоп мениджър, като GNOME или KDE, можете да отворите черупка, като изберете приложението Терминал от менюто Програми - & gt; Аксесоари ». След активирането на командната обвивка можете да видите името на използваната от нас обвивка чрез изпълнение на следните команди:
  • $ echo;
  • $ SHELL /bin /bash.
  • Ако обвивката по подразбиране не е Bash, можете да проверите дали тя е налична в системата в една от директориите, изброени в променливата на PATH, като използвате командата "which" и я изпълнете с командата "bash":
  • $ echo $ SHELL /bin /tcsh $ който bash /bin /bash $ bash bash-203 $.
  • Затова черупката работи интерактивно, като получава входни данни за всяка отделна команда и параметрите, зададени в командния ред, и изпълнява самата команда. Изходът се показва в същия терминален прозорец. Всяка команда, предадена на черупката, завършва с извикване на клавиша Invio /Enter. Можете да освободите няколко команди в един ред, като ги разделите един от друг с символа ";". Възможно е също да се раздели вмъкването на команда в два или повече реда, завършвайки с всяко междинно съединениеред със знака "".

    Апикални, двойни и задни крака

    Обикновено в езиците за програмиране кавичките и двойните кавички се използват за разграничаване на низовете, а използването на един или друг знак зависи от синтаксиса, приет на даден език. В скриптовите езици използването на кавички и препратки има различно значение и Bash не е изключение в това. Единични кавички се използват за разграничаване на символните низове. Преводачът не е част от съдържанието на реда и просто използва последователност от символи, разделени с кавички. По този начин символите, които по друг начин приемат различна стойност, също могат да бъдат част от линията. Единственият символ, който не може да се използва в цитиран низ, е същите кавички. За да се дефинира такава линия е необходимо да се определи с лапи. Двойни линии се използват за разграничаване на линиите, но ако низът е ограничен до този знак, интерпретаторът извършва така наречената "интерполация" и позволява стойността на всякакви променливи в регулярните изрази на Bash в реда. На практика, ако низ, съдържащ се в двойни кавички, съдържа препратка към променлива, то името на променливата в низ се заменя с неговата стойност. За да отпечатате знаци, като двойни кавички или долари, които иначе биха се интерпретирали и да вземете друга стойност, трябва да предпишете префикса на всеки от тях като обратен наклонена черта. За да отпечатате обратен наклонена черта в ред, ограничен от двойни лапи, трябва да обърнете двете обратни наклонени черти. Характерът на обратното е най-характерното поведение,типични за скриптовите езици и липсващи в основните езици за програмиране на най-високо ниво. Долен колонтитул ви позволява да ограничите низ, който се интерпретира от Bash като команда и трябва да се изпълни чрез връщане на стойността на изхода към същия канал на изходния канал.

    Примери на команди

    Ако искате да изпълните черупката, така че да обработва последователността от команди, показани в ASCII текстовия файл:
  • $ pwd;
  • echo $ SHELL;
  • hostaname /home /marco /bin /bash aquilante $ echo & gt; $ SHELL /bin /bash
  • Ако искате да подготвите файл, наречен "script.sh", който се съхранява в домашната директория, съдържанието на файла може да бъде както следва:
  • echo -n "Oggi e" il "2 date +% d /% m /% Y ,
  • Стартирайте този много прост скрипт, като посочите името на файла в командния ред, от който се нарича shell:
  • $ bash script.sh Oggi e 'il 10/6/2011.
  • Черупката може също така да приеме поредица от команди, които да се изпълняват чрез канал, който пренасочва изхода на друга команда към стандартното Bash login:
  • $ cat script.sh | bash oggi e 10/6/2011.
  • Можете да изберете ред от регулярни изрази на Bash програмата с означението "#!". Абсолютният път на интерпретатора, който да се използва за изпълнение на скрипта, се изпълнява директно без операционната система, като се изпълнява Bash и се предава скрипта на входа:
  • $ cat script.sh #! d /% m /% Y $ chmod 755 script.sh $ ls -l скрипт.sh -rwxr-xr-x 1 потребители на marco 4918 Apr 23:58 script.sh $ ./script.sh Oggi e 10/6 /2011
  • В последната команда от предишния пример, той директно извиква изпълнението на скрипта, който се съхранява във файла "script.sh", присъстващ в текущата директория, относителният път "./" е зададен за името на файла.Трябва да укажете пътя до директорията, в която се намира изпълним скрипт, защото по причини, свързани със сигурността, текущата директория не е в списъка на директориите, в които обвивката трябва да търси външни изпълними команди. Списъкът на такива директории се съхранява в регулярни променливи изрази Bash.

    Предимства на операционната система Bash

    Това е най-ефективният език на скрипта. Той дава на потребителя лесен начин за автоматизиране на работата, ако вече е запознат с приложението на черупката в интерактивен режим. Ако разработчикът програмира системата, той трябва да знае как работи обвивката. Ако сравните скриптовете с изучаването на конфигурацията или системата за автоматизация "yaml" или "json", те са много по-гъвкави. Bash скриптовете са по-прости, защото скриптът работи по подразбиране. Bash е по-прост език и принуждава разработчиците да се съсредоточат върху други сложности на системата. Bash работи чудесно за писането на черупки. Всичко останало използва или черупка за команди, или изпълнява своя собствена черупка, като копира добрите части от нея. Освен това има добри конструктори на регулярни изрази на Bash, които значително опростяват работата с черупката. С Bash, разработчиците могат да използват интерактивни уеб преживявания, използвайки опита на командния ред на Linux без граници на време и пространство. За да използвате тази функция, не се нуждаете от строги правила и усилия, а потребителите могат да имат достъп до удостоверената от работната станция, с едно кликване ресурсите и средата на Azure, дори когато я използват.Мобилни прикачени файлове за Azure, Azure Portal и Azure Mobile Documentation. За разлика от традиционната среда на командния ред, няма нужда да инсталирате и избирате инструменти преди да започнете работа и можете да спестите време и усилия с Bash. Всички CLI инструменти като текст, монтаж, контейнери и изходни данни са налични в Bash и можете да използвате сигурни и лесни инструменти за удостоверяване с CLI 2.0. Прегледахме примери за обикновени изрази Bash. Успех в овладяването!

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