Linux bash что означает

Основы работы с командной оболочкой bash в Linux

Командная оболочка 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, распространяемом GNU. Это полезная шпаргалка для начинающих, позволяющая быстрее сориентироваться в оболочке.

Пример скрипта

Ниже рассмотрен пример самого простого скрипта, выводящего надпись «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 &1 |» и «&>» для «> … 2>&1».
  • Поддерживает сопроцессы с перенаправлением «<>».
  • Огромный комплект расширений нестандартных конфигураций, включая изменение регистра.
  • Существенно увеличены возможности арифметики (правда, нет поддержки чисел с плавающей точкой).
  • Переменные «$RANDOM», «$SECONDS», «$PIPESTATUS[@]» и «$FUNCNAME» в Bash являются расширениями.
  • Доступно огромное количества функций, обеспечивающих работу в интерактивном режиме. Хотя на поведение скриптов они не влияют.

Примечание. Чем новее интерпретатор, тем больше функций он предоставляет. Узнать версию Bash в Linux можно командой:

Примеры применения

  • Вывести указанное количество строчек из лога.
  • Найти и составить выборку ключевых слов, сохранив их в новом файле.
  • Очистить экран терминала.
  • Приостановить работающие задачи и перезапустить ранее приостановленные.
  • Создать архив директории с файлами и отправить его на другой компьютер в одной сети через определенный сетевой протокол.
  • Произвести настройку системы создания резервных копий файлов баз данных, используя дампинг.
  • Послать запрос о конфигурации других компьютеров в сети. Отправить файл с собранной информацией на электронную почту.
  • Найти на диске дублированные файлы, отобразить их список и выполнить запрос их удалить.
  • Рекурсивно заменить владельцев указанных файлов и папок.
Читайте также:  Как правильно разбить ssd диск для windows 10

Как работать с Bash

Рассмотрим, как пользоваться Bash на примере подключения к веб-серверу (где находятся файлы сайта) с установленным дистрибутивом Linux через протокол SSH с нуля.

Для этого можно воспользоваться любым предпочитаемым способом. В данном случае рассматривается веб-сервер с Ubuntu, хотя в других дистрибутивах принцип остается тем же.

1. После успешного ввода логина и пароля программа Терминал Linux в автоматическом режиме запустит Bash. Собственно, пользователь уже подключится к системе и увидит приглашение на ввод команд.

2. Приглашение отображается относительно стандартно и имеет следующий вид:

В примере:

  • размытием закрыто имя пользователя;
  • «vPro» – название компьютера;
  • графема тильда (

) в Линуксе обозначает домашнюю папку пользователя в сокращенном виде (/home/user). Она в Bash по умолчанию является текущей

  • знак доллара ($) указывает, что пользователь не имеет прав администратора. Работая как администратор, вместо знака доллара отображается знак решетки (#).
  • 3. Когда приглашение выполнено, терминал автоматически поставит пробел и будет находиться в ожидании ввода команд. На предложенном изображении была нажата кнопка «Enter». В следующей строчке введена команда «cd» перейти в существующий каталог «/opt». Еще ниже отображается результат вывода – рабочей папкой стала «/opt» и это показано в приглашении.

    4. Командная строка Linux позволит запускать любое установленное в системе приложение. Как правило, каталоги со списком исполняемых программ расположены в папках «/bin, /usr/bin». Проверяемые каталоги интерпретатор сохраняет в переменной «$PATH». Просмотреть их список можно командой:

    5. Далее можно воспользоваться командой «ls» и добавить к ней один из каталогов, найденных в «$PATH», чтобы увидеть список доступных программ. Например:

    6. Если приложение консольное, Bash произведет его запуск в терминале. Ниже показан пример запуска редактора Nano.

    7. Bash также позволяет осуществлять запуск приложений в фоновом режиме. Для запуска в фоне, после ввода названия программы в конце следует добавить знак амперсанда (&).

    Здесь строка «[2] 23258» – это номер и PID процесса. При этом nano находится в фоновом режиме. Вернуться к нему можно командой «fg» (добавив номер задачи, если их запущено несколько) или «jobs».

    Поскольку в фоне может работать достаточно много команд, проверить номер требуемой можно командой «bg». Она отобразит список активных задач.

    Заключение

    Помимо вышеперечисленного в этой статье, интерпретатор имеет множество полезных встроенных команд. С их помощью можно выполнять весь спектр работы с веб-сервером. Часть этих команд используется для работы со строками и массивами текстовых данных в консольном окружении ОС семейства Unix.

    Оптимальное решение для размещения сайтов любого профиля и посещаемости — виртуальный сервер от Eternalhost. Оперативная техподдержка 24/7 и реально работающая бесплатная защита от DDoS.

    Источник

    Оболочка Bash — шпаргалка для начинающих

    В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.

    Оболочка Bash: введение

    Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как gnome-terminal, eterm, nxterm и т. п.

    В Linux файлы и каталоги имеют иерархическую организацию, то есть существует некий начальный каталог, называемый корневым. В нём содержатся файлы и подкаталоги, которые в свою очереди содержат файлы и свои подкаталоги.

    Команда pwd , сокращение от print working directory, отображает текущее местоположение в структуре каталогов.

    Команда cd позволяет перейти в новый каталог.

    Синтаксис Объяснение
    cd Перемещение в домашний каталог
    cd

    Перемещение в домашний каталог
    cd .. Перемещение на один уровень выше
    cd — Перемещение в предыдущий каталог
    cd Directory1 Перемещение в каталог Directory1
    cd Directory1/Directory2 Перемещение в каталог Directory2 по указанному пути

    mkdir

    Команда mkdir создаёт новый каталог в текущем каталоге.

    Основные команды

    Команда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat :

    Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов.

    Команда echo выводит свои аргументы по стандартному каналу вывода.

    Если вызвать echo без аргументов, будет выведена пустая строка.

    Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить:

    Команда tail работает аналогично команде head , но читает строки с конца:

    Также можно просматривать добавляемые к файлу строки в режиме реального времени при помощи флага -f :

    Команда less позволяет перемещаться по переданному файлу или куску текста, причём в обоих направлениях.

    Подробнее о назначении символа | будет рассказано ниже в разделе команды history .

    Обычные сочетания клавиш Описание
    G Перемещает в конец файла
    g Перемещает в начало файла
    :50 Перемещает на 50 строку файла
    q Выход из less
    /searchterm Поиск строки, совпадающей с ‘searchterm’, ниже текущей строки
    / Перемещает на следующий подходящий результат поиска
    ?searchterm Поиск строки, совпадающей с ‘searchterm’, выше текущей строки
    ? Перемещает на следующий подходящий результат поиска
    up Перемещает на одну строку выше
    down Перемещает на одну строку ниже
    pageup Перемещает на одну страницу выше
    pagedown Перемещает на одну страницу ниже

    Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха.

    false

    Команда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи.

    $? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается код возврата программы. 0 означает успешное выполнение программы, любое значение большее 0 отражает тот факт, что в процессе выполнения возникли некоторые ошибки. Кстати, именно поэтому в bash истинной (true) считается 0, а все, что не 0 — ложью (false):

    Команда grep занимается поиском переданной строки в указанном файле:

    grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.

    Обычные флаги Описание
    -i Отключение чувствительности к регистру
    -r Рекурсивный поиск по директориям
    -w Поиск только целых слов
    -c Вывод количества найденных элементов
    -n Вывод всей строки, содержащей запрос
    -v Вывод инвертированного совпадения

    Также можно ознакомиться с руководством по regex. У нас на сайте тоже есть руководство по «регуляркам» в Python для новичков.

    Команда sed — это потоковый редактор, преобразующий входные текстовые данные. Обычно её используют для замены выражений так: s/regexp/replacement/g . Например, следующий код заменит все слова «Hello» на «Hi»:

    Также вы можете ознакомиться с руководством по sed.

    history

    Команда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++ :

    Здесь также используется символ | — это так называемый конвейер (pipe). Благодаря ему можно перенаправлять вывод одной команды на вход другой — таким образом в примере выше вся история, которая в обычном режиме выводится командой history прямо в вывод терминала, будет перенаправлена в grep в качестве входных данных. Мы не увидим вывода команды history , но увидим вывод команды grep .

    Это может быть довольно сложно для понимания без практики, поэтому поэкспериментируйте самостоятельно, например с командами ls , history , ps (описана ниже), перенаправляя их вывод в grep , sed или less , например.

    export

    Команда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student :

    Команда ps выводит информацию о запущенных процессах.

    Выводится четыре элемента:

    • ID процесса (PID),
    • тип терминала (TTY),
    • время работы процесса (TIME),
    • имя команды, запустившей процесс (CMD).

    Команда awk находит и заменяет текст в файлах по заданному шаблону: awk ‘pattern ‘ test.txt

    Команда wget скачивает файлы из Сети и помещает их в текущий каталог.

    Команда nc — это утилита для отладки сети. Также можно ознакомиться с руководством по nc.

    Команда ping тестирует сетевое подключение.

    Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения.

    Git — это популярная система контроля версий. Также можно ознакомиться с руководством по git и нашими материалами.

    Переменные окружения

    Переменные окружения — это именованные переменные, содержащие значения, используемые одним или несколькими приложениями.

    Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы.

    11–13 октября, Онлайн, Беcплатно

    Переменная HOME содержит путь к домашнему каталогу текущего пользователя.

    Коннекторы

    Коннекторы позволяют запускать несколько команд одновременно.

    Коннектор Описание
    && Первая команда исполняется всегда, вторая — только в случае успешного завершения первой
    || Первая команда исполняется всегда, вторая — только в случае неудачного завершения первой
    ; Команды исполняются всегда

    Конвейеры

    Конвейеры, или пайпы, позволяют соединять входные и выходные каналы различных команд. В следующем примере вывод команды ls будет передан в head , и в результате будет напечатано лишь 10 первых элементов.

    Перенаправление ввода/вывода

    Перенаправление вывода

    Для стандартного перенаправления вывода используются символы > и >> .

    Например, этот код передаст вывод ls в файл, а не на экран:

    Если файл не существует, он создаётся, а если существует, то перезаписывается. Во избежание перезаписи стоит использовать команду >> — она дописывает данные в конец файла.

    Перенаправление ввода

    Для стандартного перенаправления вывода используется символ . В следующем примере sort берет входные данные из файла, а не с клавиатуры:

    Команда sort выводит содержимое файла на экран, поскольку мы не перенаправили выход. Это можно сделать так:

    Продвинутое перенаправление

    Добавление & к > приводит к перенаправлению как стандартного потока выхода, так и потока ошибок. Например, файл test.cpp выведет строку stdout в cout и строку stderr в cerr .

    Если вы хотите вывести конкретный файловый дескриптор, вы можете приписать его номер к > .

    Имя Дескриптор Описание
    stdin 0 Стандартный поток ввода
    stdout 1 Стандартный поток вывода
    stderr 2 Стандартный поток вывода ошибок

    Например, для перенаправления stderr в test.txt нужно сделать следующее:

    Права доступа

    Команда ls -l выводит много информации о правах доступа к каждому файлу:

    Вывод в примере Описание / возможные выводы
    Тип файла:
    — файл
    d каталог
    rw- Права доступа владельца файла
    rw- Права доступа членов группы-владельца файла
    r– Права доступа прочих пользователей
    user Имя владельца файла
    group Имя группы-владельца файла

    chmod

    Команда chmod изменяет права доступа файла. Вот типичные сочетания флагов для изменения прав конкретных пользователей:

    Буква Пользователь
    u Владелец
    g Член группы
    o Прочие пользователи
    a Все пользователи

    Вы можете вызвать chmod с описанием действий над конкретным файлом. Символ — обозначает удаление прав, символ + — добавление. Следующий пример сделает файл доступным для чтения и записи владельцу и группе:

    Кроме того, chmod можно использовать с восьмеричными числами, где 1 — это наличие прав, а 0 — отсутствие:

    Следующая команда сработает так же, как и предыдущая:

    Сочетания клавиш

    Сочетание Описание
    CTRL-A Перемещение курсора в начало строки
    CTRL-E Перемещение курсора в конец строки
    CTRL-R Поиск по истории
    CTRL-W Вырезать последнее слово
    CTRL-U Вырезать всё до курсора
    CTRL-K Вырезать всё после курсора
    CTRL-Y Вернуть последнюю вырезанную строку
    CTRL-_ Отмена
    CTRL-L Очистка экрана терминала

    Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

    Перейти к регистрации

    Источник

    Читайте также:  Дистрибутив linux для asterisk
    Оцените статью