Bash: различия между версиями

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
м (Новая страница: «==Введение== '''Bash''' (Bourne-Again SHell) Самый распространенный командный интерпретатор, используем...»)
 
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
==Введение==
+
{{Infobox software
'''Bash''' (Bourne-Again SHell) Самый распространенный командный интерпретатор, используемый по умолчанию в подавляющем количестве дистрибутивов GNU/Linux.
+
| name                  = Bash
 +
| logo                  =
 +
| screenshot            = [[Image:Bash demo.png|250px]]
 +
| caption                = Изображение bash и sh сессии
 +
| author                = Brian Fox
 +
| released              = {{start date and age|1989|6|7}}
 +
| frequently updated    = yes
 +
| programming language  = Cи
 +
| operating system      = Cross-platform
 +
| platform              = GNU
 +
| language              = English, multilingual
 +
| status                = Active
 +
| genre                  = Unix shell
 +
| source model          = Free software
 +
| license                = GPLv3
 +
| 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 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 поддержка массивов аналогичных awk:
 +
 
 +
<source lang="bash">
 +
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"
 +
</source>
 +
 
 +
===Выражения со скобками===
 +
 
 +
Выражения со скобками, которые также называются чередованием, были скопированы из C shell и генерирует набор различных комбинаций. Строки не сортируются и обрабатываются в порядке слева направо:
 +
 
 +
<source lang="bash">
 +
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
 +
</source>
 +
 
 +
Чередование не должно использоваться в портативных скриптах, т.к. Bourne shell его не поддерживает.
 +
 
 +
<source lang="bash">
 +
echo a{p,c,d,b}e # a{p,c,d,b}e
 +
</source>
 +
 
 +
Когда чередование комбинируется со знаками подстановки, первым используется чередование, а затем символы заменяются в обычном режиме. Таким образом, список JPEG и PNG изображений в текущей директории может быть получен так:
 +
 
 +
<source lang="bash">
 +
ls *.{jpg,jpeg,png} # заменяется на *.jpg *.jpeg *.png - после чего обрабатываются шаблоны
 +
</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
Bash demo.png
Изображение bash и sh сессии
Автор Brian Fox
Первая версия 7, 1989; 35 {{{4}}} ago (1989-06-07)
Статус разработки Active
Написана на
ОС 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

Ссылки

Bash