Редовните изрази на командната обвивка 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, но в различни системи може да бъде инсталиран в други директории, например: