|
@@ -0,0 +1,150 @@
|
|
|
+# Терминал
|
|
|
+
|
|
|
+Командная оболочка Bash является одним из нескольких главных компонентов в дистрибутивах Linux. Она позволяет читать и запускать команды, выполнять скрипты, работать с файлами. Наличие Bash не менее важно для полноценного функционирования операционных систем семейства Linux, чем ядро или рабочее окружение.
|
|
|
+
|
|
|
+Рассмотрим, как и для чего был создан программный продукт, разберем его преимущества, области применения и расскажем о начале работы с Bash. Обзор будет полезен всем, кто начинает свое практическое знакомство с Linux, а также тем, кто хочет иметь под рукой удобную шпаргалку с основным функционалом командного интерпретатора.
|
|
|
+
|
|
|
+**Что такое Bash**
|
|
|
+
|
|
|
+**Bash** (Bourne again shell или «возрождённый» shell) – это модифицированная версия программной оболочки Bourne-shell (sh или «Оболочка Борна»). Она является командным процессором, работающим интерактивно в текстовом окне. Bash нужен для приема команд пользователя и их отправки операционной системе для последующей обработки.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+**Bash** – это универсальный инструмент для выполнения различных задач, который в некоторых случаях позволяет избежать установки специализированного программного обеспечения. Одновременно, это скриптовый язык программирования, позволяющий создавать сценарии для автоматизации различных операций.
|
|
|
+
|
|
|
+**История создания**
|
|
|
+
|
|
|
+Предшественница Bash – Bourne-shell (sh, «Оболочка Борна») была одной из первых оболочек для операционных систем Unix. Ее создал в 1978 году британский ученый Стивен Борн, давший Bourne-shell свое имя.
|
|
|
+
|
|
|
+Изначально оболочка sh обладала относительно небольшим набором функций. Но в 1987 году Bourne-shell заинтересовался программист Брайан Фокс, сумевший доработать и значительно расширить ее функционал. В 1989 году Брайан создал бета-версию Bash и продолжал поддерживать свое детище вплоть до 1993 года.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Брайан Фокс — создатель оболочки Bash.
|
|
|
+
|
|
|
+Основные команды, правила их написания и прочие особенности Bash были перенесены из sh. Прочие возможности, включая историю, позаимствованы из Korn Shell и C Shell (других вариаций Bourne-shell). Bash практически полностью соответствует стандартам POSIX.
|
|
|
+
|
|
|
+Сегодня оболочка Bash предустановлена в большей части дистрибутивов Unix/Linux. Взаимодействие оболочки и операционной системы обеспечивается с помощью специальной программы – терминала (например, lxterm, xterm, eterm, gnome-terminal).
|
|
|
+
|
|
|
+**Синтаксис**
|
|
|
+
|
|
|
+Правила написания Bash представляют собой расширенный синтаксис Bourne-shell. Узнать подробности про основы взаимодействия с оболочкой, а также спецификации конкретных команд можно в руководстве [Bash Reference Manual](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html), распространяемом GNU. Это полезная шпаргалка для начинающих, позволяющая быстрее сориентироваться в оболочке.
|
|
|
+
|
|
|
+**Пример скрипта**
|
|
|
+
|
|
|
+Ниже рассмотрен пример самого простого скрипта, выводящего надпись «Hello world».
|
|
|
+
|
|
|
+#!/usr/bin/env bash
|
|
|
+
|
|
|
+**echo** 'Hello World!'
|
|
|
+
|
|
|
+Данный сценарий состоит из двух строк, где первая указывает операционной системе, что файл должен запускаться при помощи оболочки Bash. Во второй строчке указывается действие – его и должен выполнить скрипт. Это действие должно напечатать в окне терминала соответствующую надпись.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+**Отличие Bash от Bourne-shell**
|
|
|
+
|
|
|
+Bash в Linux способна выполнять практически все важные сценарии Bourne-shell без внесения дополнительных изменений. Исключение составляют те, где необходимо ссылаться на спецпеременные Bourne-shell или, где применяются ее встроенные команды.
|
|
|
+
|
|
|
+В синтаксисе Bash применяются приемы из Korn Shell и C Shell:
|
|
|
+
|
|
|
+- редактирование командной строки;
|
|
|
+- вывод истории команд;
|
|
|
+- создание стеков директорий;
|
|
|
+- правила замены команд «$(…)»;
|
|
|
+- переменные «$PPID» и «$RANDOM».
|
|
|
+
|
|
|
+Используя консоль Bash в качестве интерактивного интерпретатора, можно прибегать к автодополнению названий файлов, программ, переменных и команд нажатием клавиши Tab (↹).
|
|
|
+
|
|
|
+**Для чего нужен Bash**
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+**Основные преимущества**
|
|
|
+
|
|
|
+На данный момент разработано множество различных вариаций Bourne-Shell. Но, по сравнению с ними, командный интерпретатор Bash обладает рядом преимуществ.
|
|
|
+
|
|
|
+- Позволяет работать со структурами «[[» (в sh доступна только «[» с ограничениями).
|
|
|
+- Поддерживает работу с массивами в Линуксе.
|
|
|
+- Доступно множество расширений, выполненных по стандартам C, включая циклы с тремя аргументами «for((i=0;i<=3;i++))», возможность присваивать инкремент «+=» и многое другое.
|
|
|
+- Поддерживает синтаксис «<<<‘here strings’».
|
|
|
+- Работает с расширениями «.{png,jpg}».
|
|
|
+- Доступны алиасы для перенаправления, подобно «Csh», подобно «&|» для «2>&1 |» и «&>» для «> … 2>&1».
|
|
|
+- Поддерживает сопроцессы с перенаправлением «<>».
|
|
|
+- Огромный комплект расширений нестандартных конфигураций, включая изменение регистра.
|
|
|
+- Существенно увеличены возможности арифметики (правда, нет поддержки чисел с плавающей точкой).
|
|
|
+- Переменные «$RANDOM», «$SECONDS», «$PIPESTATUS[@]» и «$FUNCNAME» в Bash являются расширениями.
|
|
|
+- Доступно огромное количества функций, обеспечивающих работу в интерактивном режиме. Хотя на поведение скриптов они не влияют.
|
|
|
+
|
|
|
+*Примечание. Чем новее интерпретатор, тем больше функций он предоставляет. Узнать версию Bash в Linux можно командой:*
|
|
|
+
|
|
|
+**$SHELL** --version
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+**Примеры применения**
|
|
|
+
|
|
|
+- Вывести указанное количество строчек из лога.
|
|
|
+- Найти и составить выборку ключевых слов, сохранив их в новом файле.
|
|
|
+- Очистить экран терминала.
|
|
|
+- Приостановить работающие задачи и перезапустить ранее приостановленные.
|
|
|
+- Создать архив директории с файлами и отправить его на другой компьютер в одной сети через определенный сетевой протокол.
|
|
|
+- Произвести настройку системы создания резервных копий файлов баз данных, используя дампинг.
|
|
|
+- Послать запрос о конфигурации других компьютеров в сети. Отправить файл с собранной информацией на электронную почту.
|
|
|
+- Найти на диске дублированные файлы, отобразить их список и выполнить запрос их удалить.
|
|
|
+- Рекурсивно заменить владельцев указанных файлов и папок.
|
|
|
+
|
|
|
+**Как работать с Bash**
|
|
|
+
|
|
|
+Рассмотрим, как пользоваться Bash на примере подключения к веб-серверу (где находятся файлы сайта) с установленным дистрибутивом Linux через протокол SSH с нуля.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Для этого можно воспользоваться любым предпочитаемым [способом](https://eternalhost.net/base/vps-vds/ssh-podklyuchenie). В данном случае рассматривается веб-сервер с Ubuntu, хотя в других дистрибутивах принцип остается тем же.
|
|
|
+
|
|
|
+1. После успешного ввода логина и пароля программа Терминал Linux в автоматическом режиме запустит Bash. Собственно, пользователь уже подключится к системе и увидит приглашение на ввод команд.
|
|
|
+
|
|
|
+2. Приглашение отображается относительно стандартно и имеет следующий вид:
|
|
|
+
|
|
|
+<имя пользователя>@<имя компьютера>:<текущий каталог><знак>.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+В примере:
|
|
|
+
|
|
|
+- размытием закрыто имя пользователя;
|
|
|
+- «vPro» – название компьютера;
|
|
|
+- графема тильда (~) в Линуксе обозначает домашнюю папку пользователя в сокращенном виде (/home/user). Она в Bash по умолчанию является текущей
|
|
|
+- знак доллара ($) указывает, что пользователь не имеет прав администратора. Работая как администратор, вместо знака доллара отображается знак решетки (#).
|
|
|
+
|
|
|
+3. Когда приглашение выполнено, терминал автоматически поставит пробел и будет находиться в ожидании ввода команд. На предложенном изображении была нажата кнопка «Enter». В следующей строчке введена команда «cd» перейти в существующий каталог «/opt». Еще ниже отображается результат вывода – рабочей папкой стала «/opt» и это показано в приглашении.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+4. Командная строка Linux позволит запускать любое установленное в системе приложение. Как правило, каталоги со списком исполняемых программ расположены в папках «/bin, /usr/bin». Проверяемые каталоги интерпретатор сохраняет в переменной «$PATH». Просмотреть их список можно командой:
|
|
|
+
|
|
|
+**echo** **$PATH**
|
|
|
+
|
|
|
+5. Далее можно воспользоваться командой «ls» и добавить к ней один из каталогов, найденных в «$PATH», чтобы увидеть список доступных программ. Например:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+6. Если приложение консольное, Bash произведет его запуск в терминале. Ниже показан пример запуска редактора Nano.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+7. Bash также позволяет осуществлять запуск приложений в фоновом режиме. Для запуска в фоне, после ввода названия программы в конце следует добавить знак амперсанда (&).
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Здесь строка «[2] 23258» – это номер и PID процесса. При этом nano находится в фоновом режиме. Вернуться к нему можно командой «fg» (добавив номер задачи, если их запущено несколько) или «jobs».
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Поскольку в фоне может работать достаточно много команд, проверить номер требуемой можно командой «bg». Она отобразит список активных задач.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#Cписок использованной литературы:
|
|
|
+
|
|
|
+https://eternalhost.net/blog/sistemnoe-administrirovanie/linux-bash-chto-eto#p0
|