Bash: различия между версиями
| Langator (обсуждение | вклад) м | Langator (обсуждение | вклад)  | ||
| (не показано 8 промежуточных версий этого же участника) | |||
| Строка 4: | Строка 4: | ||
| | screenshot             = [[Image:Bash demo.png|250px]] | | screenshot             = [[Image:Bash demo.png|250px]] | ||
| | caption                = Изображение bash и sh сессии | | caption                = Изображение bash и sh сессии | ||
| − | | author                 =  | + | | author                 = Brian Fox | 
| | released               = {{start date and age|1989|6|7}} | | released               = {{start date and age|1989|6|7}} | ||
| | frequently updated     = yes | | frequently updated     = yes | ||
| − | | programming language   =  | + | | programming language   = Cи | 
| − | | operating system       =  | + | | operating system       = Cross-platform | 
| − | | platform               =  | + | | platform               = GNU | 
| − | | language               = English, multilingual  | + | | language               = English, multilingual | 
| | status                 = Active | | status                 = Active | ||
| − | | genre                  =  | + | | genre                  = Unix shell | 
| − | | source model           =  | + | | source model           = Free software | 
| − | | license                =  | + | | license                = GPLv3 | 
| | website                = [http://www.gnu.org/software/bash/ Bash GNU project home page] | | website                = [http://www.gnu.org/software/bash/ Bash GNU project home page] | ||
| }} | }} | ||
| + | |||
| + | '''Bash''' - это ''POSIX shell'' написанный в рамках проекта GNU. Является самым распространенным командным интерпретатором, используется по умолчанию в подавляющем количестве дистрибутивов GNU/Linux. | ||
| '''Bash''' — это акроним от ''Bourne-again-shell'', «ещё-одна-командная-оболочка-Борна». Название — игра слов: Bourne-shell — одна из популярных разновидностей командной оболочки для UNIX (sh), автором которой является Стивен Борн (1978), усовершенствована в 1987 году Брайаном Фоксом. Фамилия Bourne (Борн) перекликается с английским словом born, означающим «родившийся», отсюда: рождённая-вновь-командная оболочка. | '''Bash''' — это акроним от ''Bourne-again-shell'', «ещё-одна-командная-оболочка-Борна». Название — игра слов: Bourne-shell — одна из популярных разновидностей командной оболочки для UNIX (sh), автором которой является Стивен Борн (1978), усовершенствована в 1987 году Брайаном Фоксом. Фамилия Bourne (Борн) перекликается с английским словом born, означающим «родившийся», отсюда: рождённая-вновь-командная оболочка. | ||
| − | + | ==Особенности== | |
| − | + | Синтаксис bash является расширенным вариантом синтаксиса Bourne shell (часто просто sh по имени исполняемого файла). Подавляющее большинство скриптов sh могут выполняться bash`ем без изменений. Bash включает в себя идеи ksh и csh такие как история команд, редактор командной строки, переменные <tt>$RANDOM</tt>, <tt>$PPID</tt> и <tt>$(…)</tt>. При использовании в качестве интерактивной оболочки и двойном нажатии клавиши tab происходит автоматическое дополнение команд, имен файлов и переменных.   | |
| − | ==  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Bash имеет много возможностей, которых не хватает в Bourne shell. Например, bash может выполнять вычисления с целыми числами без порождения внешних процессов. Bash упрощает перенаправление ввода/вывода способами, которые невозможны в традиционных шелах Борна. Например, Bash может перенаправить стандартный вывод (STDOUT) и  стандартная ошибка (STDERR) используя оператор <tt>&></tt>. Это проще напечатать, чем эквивалентная команда в  Bourne Shell. | |
| + | <source lang="bash">command > file 2>&1</source> | ||
| − | + | При использовании функций (function) bash не совместим с Bourne/Korn/POSIX шелами, но понимает их синтаксис. В силу этих и других различий, bash скрипты редко работоспособной под sh и ksh, если намеренно написаны с совместимостью. Но в режиме POSIX, соответствие POSIX является почти идеальным. | |
| − | |||
| − | + | С версии 2.05b bash может перенаправлять стандартный ввод (stdin)  используя оператор <tt>'''<'''</tt>. | |
| − | + | В bash 3.0 появилась поддержка регулярных выражений Perl. | |
| − | Bash 4.0  | + | Bash 4.0 поддержка массивов аналогичных awk: | 
| <source lang="bash"> | <source lang="bash"> | ||
| Строка 46: | Строка 43: | ||
| </source> | </source> | ||
| − | === | + | ===Выражения со скобками=== | 
| − | + | Выражения со скобками, которые также называются чередованием, были скопированы из C shell и генерирует набор различных комбинаций. Строки не сортируются и обрабатываются в порядке слева направо: | |
| <source lang="bash"> | <source lang="bash"> | ||
| Строка 54: | Строка 51: | ||
| echo {a,b,c}{d,e,f} # ad ae af bd be bf cd ce cf | echo {a,b,c}{d,e,f} # ad ae af bd be bf cd ce cf | ||
| </source> | </source> | ||
| − | + | ||
| + | Чередование не должно использоваться в портативных скриптах, т.к. Bourne shell его не поддерживает. | ||
| <source lang="bash"> | <source lang="bash"> | ||
| − | |||
| echo a{p,c,d,b}e # a{p,c,d,b}e | echo a{p,c,d,b}e # a{p,c,d,b}e | ||
| </source> | </source> | ||
| − | + | Когда чередование комбинируется со знаками подстановки, первым используется чередование, а затем символы заменяются в обычном режиме. Таким образом, список JPEG и PNG изображений в текущей директории может быть получен так: | |
| <source lang="bash"> | <source lang="bash"> | ||
| − | ls *.{jpg,jpeg,png}  | + | ls *.{jpg,jpeg,png} # заменяется на *.jpg *.jpeg *.png - после чего обрабатываются шаблоны | 
| − | |||
| </source> | </source> | ||
| − | === | + | ===Стартовые скрипты=== | 
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Bash при запуске вызывает множество команд и различных скриптов. | |
| − | ''' | + | Когда Bash вызывается как интерактивная оболочка, первым делом он читает и вызывает команды из файла {{Path|/etc/profile}}. После чтения этого выполняются следующие файлы: {{Path|~/.bash_profile}}, {{Path|~/.bash_login}}, и {{Path|~/.profile}}. При выходе Bash выполняет команды из файла {{Path|~/.bash_logout}}. | 
| + | Также Bash использует файл {{Path|~/.bashrc}}. Это может быть отменено опцией ''--norc''. Опция ''--rcfile'' заставит Bash использовать команды из {{Path|~/.bashrc}}. | ||
| − | == | + | ==Комбинации клавиш== | 
| {{Key|'''ctrl+u'''}}  удалить все символы от курсора до начала строки | {{Key|'''ctrl+u'''}}  удалить все символы от курсора до начала строки | ||
Текущая версия на 02:53, 16 марта 2012
|  Изображение bash и sh сессии | |
| Автор | Brian Fox | 
|---|---|
| Первая версия | 7, 1989 | 
| Статус разработки | Active | 
| Написана на | Cи | 
| ОС | Cross-platform | 
| Платформа | GNU | 
| Язык | English, multilingual | 
| Тип | Unix shell | 
| Лицензия | GPLv3 | 
| Website | Bash GNU project home page | 
Bash - это POSIX shell написанный в рамках проекта GNU. Является самым распространенным командным интерпретатором, используется по умолчанию в подавляющем количестве дистрибутивов GNU/Linux.
Bash — это акроним от Bourne-again-shell, «ещё-одна-командная-оболочка-Борна». Название — игра слов: Bourne-shell — одна из популярных разновидностей командной оболочки для UNIX (sh), автором которой является Стивен Борн (1978), усовершенствована в 1987 году Брайаном Фоксом. Фамилия Bourne (Борн) перекликается с английским словом born, означающим «родившийся», отсюда: рождённая-вновь-командная оболочка.
Особенности
Синтаксис bash является расширенным вариантом синтаксиса Bourne shell (часто просто sh по имени исполняемого файла). Подавляющее большинство скриптов sh могут выполняться bash`ем без изменений. Bash включает в себя идеи ksh и csh такие как история команд, редактор командной строки, переменные $RANDOM, $PPID и $(…). При использовании в качестве интерактивной оболочки и двойном нажатии клавиши tab происходит автоматическое дополнение команд, имен файлов и переменных.
Bash имеет много возможностей, которых не хватает в Bourne shell. Например, bash может выполнять вычисления с целыми числами без порождения внешних процессов. Bash упрощает перенаправление ввода/вывода способами, которые невозможны в традиционных шелах Борна. Например, Bash может перенаправить стандартный вывод (STDOUT) и стандартная ошибка (STDERR) используя оператор &>. Это проще напечатать, чем эквивалентная команда в Bourne Shell.
command > file 2>&1
При использовании функций (function) bash не совместим с Bourne/Korn/POSIX шелами, но понимает их синтаксис. В силу этих и других различий, bash скрипты редко работоспособной под sh и ksh, если намеренно написаны с совместимостью. Но в режиме POSIX, соответствие POSIX является почти идеальным.
С версии 2.05b bash может перенаправлять стандартный ввод (stdin) используя оператор <.
В bash 3.0 появилась поддержка регулярных выражений Perl.
Bash 4.0 поддержка массивов аналогичных awk:
declare -A a         # declare an associative array 'a'
i=1; j=2             # initialize some indices
a[$i,$j]=5           # associate value "5" to key "$i,$j" (i.e. "1,2")
echo ${a[$i,$j]}     # print the stored value at key "$i,$j"
Выражения со скобками
Выражения со скобками, которые также называются чередованием, были скопированы из C shell и генерирует набор различных комбинаций. Строки не сортируются и обрабатываются в порядке слева направо:
echo a{p,c,d,b}e # ape ace ade abe
echo {a,b,c}{d,e,f} # ad ae af bd be bf cd ce cf
Чередование не должно использоваться в портативных скриптах, т.к. Bourne shell его не поддерживает.
echo a{p,c,d,b}e # a{p,c,d,b}e
Когда чередование комбинируется со знаками подстановки, первым используется чередование, а затем символы заменяются в обычном режиме. Таким образом, список JPEG и PNG изображений в текущей директории может быть получен так:
ls *.{jpg,jpeg,png} # заменяется на *.jpg *.jpeg *.png - после чего обрабатываются шаблоны
Стартовые скрипты
Bash при запуске вызывает множество команд и различных скриптов. Когда Bash вызывается как интерактивная оболочка, первым делом он читает и вызывает команды из файла /etc/profile. После чтения этого выполняются следующие файлы: ~/.bash_profile, ~/.bash_login, и ~/.profile. При выходе Bash выполняет команды из файла ~/.bash_logout. Также Bash использует файл ~/.bashrc. Это может быть отменено опцией --norc. Опция --rcfile заставит Bash использовать команды из ~/.bashrc.
Комбинации клавиш
ctrl+u удалить все символы от курсора до начала строки
ctrl+k удалить все символы от курсора до конца строки
ctrl+w удалить слово перед курсором
ctrl+b переместить курсор на один символ влево
ctrl+f переместить курсор на один символ вправо
ctrl+t поменять местами символ слева от курсора и под курсором
ctrl+h удалить символ слева от курсора
ctrl+a переместить курсор в начало строки
ctrl+e переместить курсор в конец строки
ctrl+p предыдущая команда в истории bash
ctrl+n следующая команда в истории bash
ctrl+r реверсивный поиск команд в истории bash
ctrl+y вставляет последнюю удаленную с помощью ctrl+u или ctrl+k строку
ctrl+m выполнение команды, аналог [Enter]
ctrl+o выполняет команду, при этом оставляя ее в командной строке для дальнейшего использования.
ctrl+l очистить экран
ctrl+s стоп режим. Блокирует вывод на консоль. При этом все данные отображенные на экране остаются не измененными.
Tab+Tab выводит список команд. При наличии какого нибудь символа(-ов) выводит команды по введенным символам.
ctrl+q выход из стоп-режима.
ctrl+d выйти из терминала
ctrl+c отменить последнюю введенную команду
ctrl+x,ctrl+v показать версию bash