За информацията в тази статия или раздел не са посочени източници. Въпросната информация може да е непълна, неточна или изцяло невярна.Имайте предвид, че това може да стане причина за изтриването на цялата статия или раздел.

Bash е UNIX shell написан от Брайън Фокс за проекта GNU като свободен софтуер, който да замести Bourne shell (sh).

Самото име е едновременно акроним, игра на думи и описание. Като акроним произлиза от Bourne-again shell „възродена обвивка“ или „отново обвивка на Борн“.

Въведение

В UNIX-базираните системи командният интерпретатор изпълнява функцията на преводач между потребителя и ядрото на операционната система. Дълго време това е бил основният и най-добър начин за работа с UNIX. За разлика от създадените много по-късно системи с графичен интерфейс като Windows и MacOS, работата с командните интерпретатори се осъществява посредством текстови команди. Те могат да бъдат външни (в отделни изпълними файлове) или вградени в интерпретатора (builtins).

Предшественици

Един от първите командни интерпретатори за UNIX е Bourne shell (sh). Той носи името си от своя създател Стивън Борн и е бил включен в UNIX Версия 7 през 1979 година. Друг широко разпространен интерпретатор е C shell (csh), написан от Бил Джой в Калифорнийския университет в Бъркли като част от операционната система BSD. Със синтаксис подобен на езика C, C shell е изключително удобен и лесен за научаване от UNIX програмисти. Той е несъвместим с Bourne shell. Първият съществен опит за подобряване на възможностите на Bourne shell е интерпретаторът ksh (Korn Shell). Той съчетава нови възможности и съвместимост с Bourne shell.

Роден отново

Създаден като част от проекта ГНУ, Bash (Bourne-Again Shell) е един от най-популярните командни интерпретатори в UNIX. Базира се на небезизвестния sh (Bourne Shell) като също така заимства функционалност от ksh (Korn Shell) и csh (C Shell).

Официално е започнат през 10 януари 1988 г. от Брайън Фокс към който по-късно се присъединява и Чет Рами. През 1995 г. Чет започва работа над Bash 2.0 официално обявен на 23 декември 1996 г. Bash посредством своя синтаксис и вградени команди предоставя възможност за програмиране. Той може да изпълнява команди както от командния ред, така и от външен файл. Синтаксисът му е един и същ независимо от къде чете командите. Мощта на програмирането на Bash не се състои толкова в ключовите му думи и конструкции, колкото в набора от десетките програми като sed, awk, grep, cut и др. които са незаменима част от UNIX.

Клавишни комбинации

Следните клавишни комбинации работят при употребата на настройки под подразбиране на (Emacs).

Забележка: За тези случаи, при които се включва бутона Alt, може да използвате и Esc.


Навигация в Bash

Съществуват някои основни принципи в навигацията на шела, които след заучаването важат и за множество текстови редактори и други *nix програми. За командите man и less, както и vi важат следните клавиши.

Примери за синтаксиса на Bash скриптове

Преди да започване редакцията на файл, които ще представлява изпълним скрипт съдържащ поредица от команди на Операционната система трябва да се окаже изпълнимостта му. Т.е. ако името на файла е myFirstScript.sh, следната команда изпълнена в директорията на скрипта ще го направи изпълним:

chmod u+x myFirstScript.sh

Това може да бъде лесно проверено с командата ls -al

В случай, че се зарежда изпълним файл които съдържа Bash код, в началото му трябва да се укаже пътя към интерпретатора по следния начин:

#!/път/към/bash

За разлика от езици като C, C++, Java и др. при Bash кода не се компилира, а се интерпретира така както е подаден. Типичен пример за една Bash програма е следният:

 #!/usr/local/bin/bash
 echo "Здравей, Свят!"

Кодът може да се коментира с # например:

echo „hello“ # Отпечатай hello
# прекъсни програмата
exit

В Bash може да се създават променливи и функции. Типът на променливите не е задължителен, но при нужда може да се укаже посредством вградената команда declare. Променлива се декларира по следния начин:

ime_promenliva="stoinost na promenlivata"

И се достига със знака за низ $ в началото и. Например:

echo $ime_promenliva

Има няколко начина за създаване на фунции. Единият е чрез ключовата дума function:

function ime_funciq {
  # kod na funciq
}

Или със скоби по следния начин:

ime_funciq() {
  # kod na funciq
}

Функциите се извикват само с името им, без скоби или допълнителни символи в началото, например:

ime_funciq „параметър 1“ „параметър 2“ три четири 5

Параметрите подадени на функцията се разполагат от $1 до $n, където n е число и е последен параметър. Те могат да се изместват с вградената команда shift, например:

echo $1
shift 2
# $3 става $1

Логика и изрази в синтаксиса Bash

Цифрови сравнения

За простота е използвано честото съкращение int, което произлиза от англ. integer – цяло число:

int1 -eq int2	Връща True ако int1 е равно на int2
int1 -ge int2	Връща True ако int1 е по-голямо или равно на int2.
int1 -gt int2	Връща True ако int1 е по-голямо от int2.
int1 -le int2	Връща True ако int1 е по-малко или равно от int2
int1 -lt int2	Връща True ако int1 е по-малко от int2
int1 -ne int2	Връща True ако int1 не е равно на int2

Сравнения на низове

На английски string, което се съкращава str, означава низ.

str1 = str2	Връща True ако str1 е идентична на str2.
str1 != str2	Връща True ако str1 не е идентична на str2.
str	        Връща True ако str не е null (т.е. празен)
-n str	        Връща True if дължината на str е по-голяма от null
(null означава липса на стойност или нищо)
-z str	         Връща True ако дължината на str е равна на 0. (0 е различна от null)

Външни препратки