Файл bash что это

Что такое bash в Linux? Гайд по созданию bash-скриптов

Обновл. 29 Июл 2021 |

bash (сокр. от «Bourne-Again shell») — это командная оболочка (или «интерпретатор командной строки»), используемая по умолчанию в операционных системах на базе Unix и Linux, созданная в 1989 году Брайаном Фоксом с целью усовершенствования командной оболочки sh.

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

Что такое терминал?

Терминал — это программа, которая используется для взаимодействия с шеллом. Это просто интерфейс к нему и другим программам командной строки, которые работают внутри нее. Вот как выглядит типичный терминал (Konsole) в Debian 11 (окружение рабочего стола — KDE Plasma):

Файл bash что это

Типичный терминал в Linux

Всякий раз, когда мы открываем окно терминала, мы видим приглашение шелла — имя_пользователя@имя_машины:

Команды в bash

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

Команда echo — возвращает всё, что вы вводите в командной строке:

Файл bash что это

Пример использования команды echo

Команда date — отображает текущее время и дату:

Файл bash что это

Пример использования команды date

Команда pwd (сокр. от «print working directory») — указывает на текущий рабочий каталог, в котором команды шелла будут искать файлы.

Файл bash что это

Пример использования команды pwd

Файл bash что это

Пример использования команды ls

Команда cd (сокр. от «change directory») — изменяет текущую директорию на заданную пользователем. Рассмотрим некоторые примеры использования данной команды:

cd — меняет текущую директорию на заданную. Давайте попробуем с помощью команды ls перейти к корневому каталогу / и ознакомимся с его содержимым. Обратите внимание, что мы также можем использовать точку с запятой ; для записи двух команд в одной строке.

Файл bash что это

Пример объединения двух команд в одной строке

cd — вернуться в домашний каталог.

Команда mkdir (сокр. от «make directory») создает новый каталог.

Команда mv (сокр. от «mov) — перемещает один или несколько файлов/каталогов из одного места в другое (заданное пользователем). Для этого нужно указать, что мы хотим переместить (т.е. источник), и куда мы хотим переместить (т.е. пункт назначения).

В качестве примера я создам новый каталог Ravesli в своей домашней директории и перемещу в него все .txt-файлы (ну как «все», у меня там только один файл — Адреса.txt) из /home/diego/Документы/ с помощью двух вышеприведенных команд:

Файл bash что это

Перемещение файлов с помощью команды mv

Команда touch — создает новые пустые файлы (а также изменяет временные метки в существующих файлах и каталогах). Вот как мы можем создать пустой файл под названием foo.txt в папке Ravesli из домашнего каталога:

Файл bash что это

Создание файла с помощью команды touch

Давайте удалим ранее созданный файл foo.txt:

Файл bash что это

Удаление файла с помощью команды rm

Команда rmdir (сокр. от «remove directory») — удаляет каталоги.

Давайте удалим созданный ранее каталог /home/diego/Ravesli:

Файл bash что это

Удаление каталогов с помощью команды rmdir

Команда cat (сокр. от «concatenate») — считывает файл и выводит его содержимое. Она может работать с несколькими файлами, объединяя их вывод в единый поток (отсюда и происходит её название). У меня в домашнем каталоге есть папка untitled с файлами С++/Qt-проекта, и ниже я использую команду cat для просмотра содержимого файла main.cpp из untitled:

Файл bash что это

Пример использования команды cat

Файл bash что это

Просмотр нескольких файлов с помощью команды cat

Файл bash что это

Отображение справочной информации с помощью команды man

Редактор nano

Файл bash что это

Гайд по созданию bash-скриптов

Наш шелл, это не только промежуточное звено между пользователем и системой, но еще и мощный язык программирования. Программы, написанные на языке шелла, называются shell-скриптами (или shell-сценариями) и имеют соответствующее расширение файлов — .sh. Сам язык содержит полный набор утилит и команд, доступных в *nix-системах, а также циклы, условные операторы, объявление переменных и пр. Такие скрипты будут очень полезными там, где не требуется использование полноценных языков программирования, например, в задачах администрирования операционной системы.

Создание bash-скрипта

Чтобы создать новый файл bash-скрипта, откройте в любом редакторе текстовый файл и сохраните его с расширением .sh. Все дальнейшие эксперименты я будут проводить в Debian Linux, с применением текстового редактора nano.

Давайте создадим новый файл ravesli.sh:

$ touch ravesli.sh
diego@debian:

Чтобы выполнить файл bash-скрипта, нужно изменить права доступа к файлу и сделать его исполняемым. Разрешение, как вы наверняка помните из предыдущих уроков, изменяется командой chmod +x :

$ chmod +x ravesli.sh
diego@debian:

Выполнение bash-скрипта

Файл bash-скрипта может быть запущен двумя способами:

Источник

[в закладки] Bash для начинающих: 21 полезная команда

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

Файл bash что это

Термины

В ходе освоения работы в командной строке Linux вам может встретиться множество понятий, в которых полезно будет ориентироваться. Некоторые из них, вроде «Linux» и «Unix», или «командная оболочка» и «терминал», иногда путают. Поговорим об этих и о других важных терминах.

Unix — это популярная операционная система, которая была разработана Bell Labs в 1970-х. Её код был закрытым.

Linux — это самая популярная Unix-подобная операционная система. Она в наши дни используется на множестве устройств, в том числе — и на компьютерах.

Терминал (terminal), или эмулятор терминала — это программа, дающая доступ к операционной системе. Одновременно можно открывать несколько окон терминала.

Оболочка (shell) — это программа, которая позволяет отправлять операционной системе команды, написанные на особом языке.

Bash расшифровывается как Bourne Again SHell. Это — самый распространённый язык командной оболочки, используемый для взаимодействия с операционной системой. Кроме того, оболочка Bash по умолчанию используется в macOS.

Интерфейс командной строки (Command Line Interface, CLI) — это способ взаимодействия человека и компьютера, при использовании которого пользователь вводит команды с клавиатуры, а компьютер, выполняя эти команды, выводит, в текстовом виде, сообщения для пользователя. В основном CLI используется для получения свежей информации о неких сущностях, например, о файлах, и для работы с файлами. Интерфейс командной строки следует отличать от графического пользовательского интерфейса (Graphical User Interface, GUI), при работе с которым, в основном, используется мышь. Интерфейс командной строки часто называют просто командной строкой.

Скрипт (script) — это небольшая программа, которая содержит последовательность команд командной оболочки. Скрипты записывают в файлы, использовать их можно многократно. При написании скриптов можно пользоваться переменными, условными конструкциями, циклами, функциями и другими возможностями.

Теперь, когда мы рассмотрели важные термины, хочу отметить, что здесь я буду пользоваться терминами «Bash», «оболочка» и «командная строка» как взаимозаменяемыми, равно как и понятиями «директория» (directory) и «папка» (folder).

Стандартные потоки, которыми мы будем здесь пользоваться — это стандартный ввод (standard input, stdin ), стандартный вывод (standard output, stdout ) и стандартный вывод ошибок (standard error, stderr ).

Если в примерах команд, которые будут приводиться ниже, вы встретите нечто вроде my_whatever — это означает, что данный фрагмент нужно заменить чем-то вашим. Например — именем файла.

Теперь, прежде чем приступать к разбору команд, которым посвящён этот материал, давайте взглянем на их список и на их краткие описания.

21 Bash-команда

▍Получение информации

▍Манипуляции с файловой системой

▍Перенаправление ввода-вывода и конвейеры

▍Чтение файлов

▍Удаление файлов, остановка процессов

▍Поиск

▍Архивация

Подробности о командах

▍Получение информации

man command_name : вывод руководства по команде, то есть — справочной информации.

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

ls : вывод содержимого директории. Эта команда тоже используется весьма часто.

ps : просмотр выполняющихся процессов.

▍Манипуляции с файловой системой

Файл bash что это

touch my_file : создание файла my_file по заданному пути.

mkdir my_directory : создание папки my_directory по заданному пути.

Теперь поговорим о перенаправлении ввода-вывода и конвейерах.

▍Перенаправление ввода-вывода и конвейеры

Например, после выполнения команды ls > my_folder_contents.txt будет создан текстовый файл, содержащий список того, что находится в текущей рабочей директории.

Теперь взглянем на конвейерную обработку данных.

Файл bash что это

То, что выводит одна команда, подаётся на вход другой команды. Это похоже на подключение одной трубы к другой

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

С помощью символа конвейера можно объединять в цепочку несколько команд. Выглядит это так:

Файл bash что это

Конвейер из нескольких команд можно сравнить с трубопроводом

Теперь поговорим о чтении данных из файлов и о выводе их на экран.

▍Чтение файлов

tail my_file : считывает строки из конца файла. Эту команду тоже можно использовать в конвейере.

Файл bash что это

Head (голова) находится спереди, а tail (хвост) — сзади

Если вы работаете с данными, используя библиотеку pandas, тогда команды head и tail должны быть вам знакомы. Если это не так — взгляните на вышеприведённый рисунок, и вы без труда их запомните.

Команда cat либо выводит содержимое файла на экран, либо конкатенирует несколько файлов. Это зависит от того, сколько файлов передано этой команде при вызове.

Файл bash что это

Если же передать ей два файла или большее количество файлов, то она ведёт себя по-другому.

Если результат конкатенации файлов нужно сохранить в виде нового файла, можно воспользоваться оператором > :

Теперь поговорим о том, как удалять файлы и останавливать процессы.

▍Удаление файлов, остановка процессов

kill 012345 : останавливает указанный выполняющийся процесс, давая ему время на корректное завершение работы.

▍Поиск

Файл bash что это

Файл bash что это

Теперь поговорим о работе с архивами.

▍Архивация

tar my_source_directory : объединяет файлы из папки my_source_directory в один файл tarball. Такие файлы удобно использовать для того, чтобы передавать кому-нибудь большие наборы файлов.

Файл bash что это

Bash-псевдонимы

Для создания подобного псевдонима достаточно добавить следующую команду в файл

Если в вашей системе нет файла

/.bash_profile можно добавлять псевдонимы для любых часто используемых команд.

▍Итоги

В этом материале мы рассмотрели 21 популярную команду Bash и поговорили о создании псевдонимов для команд. Если вам эта тема интересна — вот цикл публикаций, посвящённый Bash. Здесь можно найти pdf-версию этих публикаций. Кроме того, если вы хотите освоить Bash, помните о том, что тут, как и при изучении любой другой программной системы, важна практика.

Уважаемые читатели! Какие команды, которые полезно знать начинающим, вы добавили бы к тем, которые были рассмотрены в этой статье?

Источник

Bash (Русский)

Bash (Bourne-again Shell) — командная оболочка/язык программирования проекта GNU. Название представляет собой отсылку к предшественнику, существовавшей некогда командной оболочке Борна (Bourne shell). Bash работает в большинстве UNIX-подобных операционных систем, в том числе и в GNU/Linux.

В Arch Linux Bash является командной оболочкой, используемой по умолчанию.

Contents

Запуск

Поведение Bash зависит от способа, каким он был запущен.

Файлы настроек

В зависимости от способа запуска Bash считывает и исполняет определённый набор файлов. Подробнее см. раздел Bash Startup Files справочного руководства GNU Bash.

/.profile (в указанном порядке). Файл-образец /etc/skel/.bash_profile содержит также указание на исполнение файла

Оболочка и переменные окружения

Поведение оболочки Bash и запущенных в ней программ зависит от переменных окружения. Переменные окружения хранят значения различных параметров оболочки, например, расположение каталогов с исполняемыми файлами или название используемого по умолчанию браузера. При запуске новой оболочки или сценария они наследуют переменные окружения родительского процесса, то есть начинают работу с набором переменных исходной оболочки [1].

Для создания переменной окружения необходимо экспортировать переменную оболочки:

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

Командная строка

Командная строка Bash работает под управлением библиотеки Readline. Readline позволяет использовать комбинации клавиш в стиле emacs и vi для взаимодействия с командной строкой, например, для перемещения назад и вперёд целыми словами, удаления слов и т.д. Кроме того, Readline отвечает за хранение истории выполненных команд, а также позволяет создавать макросы.

Автодополнение

Автодополнение (tab completion) — завершение вводимых команд по нажатию клавиши Tab (работает по умолчанию).

Одиночное нажатие

Вывести список возможных завершений для частично введённой команды можно несколькими повторными нажатиями клавиши Tab — иногда двумя или тремя. В статье Readline#Быстрое завершение описано, как уменьшить количество нажатий до одного.

Дополнительные программы и опции

Настройки для команд

Другие опции автодополнения можно найти в руководстве Bash.

История команд

Автодополнение истории

Клавиши стрелок «вверх» и «вниз» можно назначить для поиска команд в истории (см. Readline#История команд и Синтаксис init-файлов Readline):

Или же, чтобы это работало во всех программах Readline:

Сокращение истории

Переменная HISTCONTROL позволяет предотвратить логирование некоторых команд. Например, чтобы одинаковые команды не попадали в историю, присвойте переменной следующее значение:

Отключение истории

Чтобы временно отключить историю, выполните:

Включить историю обратно можно командой

Чтобы отключить всю историю Bash:

После необходимо удалить старый файл истории (имейте в виду — команды ниже удалят его безвозвратно):

run-help из Zsh

Предполагается, что вы используете (стандартный) режим редактирования Emacs.

Псевдонимы

alias (англ. псевдоним) — команда для замены одной строки на другую. Часто используется для сокращения системных команд до аббревиатур или для добавления стандартных аргументов к часто используемым командам.

Пользовательские псевдонимы хранятся в файле

Функции Bash подробно описаны в Bash/Функции.

Советы и рекомендации

Настройка приглашения

Подстветка синтаксиса и подсказки

blesh-git AUR — редактор командной строки, который написан на чистом Bash и предназначен заменить Readline. Предлагает множество дополнительных возможностей вроде подстветки синтаксиса, подсказок, завершения команд с выпадающим меню, аббревиатур, режима редактирования Vim, хук-функций и т.д.

После установки необходимо считать и выполнить его в интерактивном сеансе. Настройки подробно объясняются в файле

Command not found

В pkgfile есть хук «command not found», который при вводе неизвестной команды автоматически ищет подходящий исполняемый файл в пакетах в официальных репозиториях.

Чтобы хук заработал, его необходимо считать и исполнить:

После этого при попытке запустить недоступную команду будет выведена следующая информация:

Отключение комбинации Ctrl+z

Нажатие Ctrl+z в терминале ставит приложение на паузу или закрывает его. Отключить эту комбинацию клавиш можно следующим образом:

Очистка экрана после выхода

Очистка экрана виртуального терминала после выхода:

Смена каталога при вводе пути

то произойдёт следующее:

Autojump

Запрет на перезапись файлов

Отключение перезаписи файлов с помощью перенаправления вывода на время текущего сеанса:

Сделать изменения постоянными:

Принудительно перезаписать файл при установленном noclobber :

Решение проблем

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

Оболочка завершается даже с опцией ignoreeof

После задания опции ignoreeof вы можете обнаружить, что многократное нажатие Ctrl-d всё равно приводит к завершению процесса оболочки. Дело в том, что по умолчанию эта опция позволяет игнорировать только 10 нажатий данной комбинации клавиш (если быть точным — 10 ситуаций EOF) перед выходом из оболочки.

Задать большее значение можно переменной IGNOREEOF. Например:

Анализ сценария и поиск ошибок

Программа shellcheck проверяет сценарии Bash (и других командных оболочек) на предмет ошибок и предлагает возможные улучшения кода.

Источник

Основы Bash-скриптинга для непрограммистов

Статья рассчитана на тех, кто не имеет или имеет мало опыта работы с командной строкой Unix/Linux, но желает научиться с ней эффективно взаимодействовать и разрабатывать скрипты для выполнения своих задач. Приведенные примеры справедливы для выполнения в командной оболочке bash операционной системы Ubuntu/Debian, но могут быть использованы и в других оболочках и ОС с учетом их специфики.

1. Командные оболочки

Существует множество дистрибутивов(форков) операционных систем(ОС) семейства Linux, наиболее известные среди них: Ubuntu, Debian, CentOS, Red Hat, Fedora, SuSE, FreeBSD, Mint.

Файл bash что это

Здесь есть большая схема со всеми форками Linux.

В каждой ОС существуют различные командные оболочки (shell), их назначение одинаково (администрирование, автоматизация, вычисления, мониторинг и т.д.), как и большинство основных команд, но реализация может отличаться. В таблице ниже приведено сравнение, в котором видно, что некоторые возможности поддерживаются не всеми оболочками.

Feature

Bourne

Korn

Bash

Редактор командной строки

Расширенные шаблоны файлов

Автозавершение имени файла

Стеки директорий (pushd and popd)

Исправление ошибок в командах

Формат приглашения командной строки

Список доступных командных оболочек можно получить командой

2. Настройка тестовой среды

Если у вас уже есть виртуальная/реальная машина с установленным Linux, или вы знаете, как её настроить, то можно пропустить информацию из спойлера ниже. Если есть доступ по ssh к какому-либо серверу, то Вы также можете использовать его shell для тренировок. Используйте имеющийся доступ с осторожностью, не тренируйтесь на продуктовых(промышленных) серверах и других критичных окружениях. Если вы не хотите развертывать виртуальную машину(ВМ), то для тестов можно воспользоваться онлайн-терминалами, но нужно знать и учитывать их особенности и ограничения. Примеры онлайн-терминалов:
https://cocalc.com/app?anonymous=terminal
https://www.tutorialspoint.com/execute_bash_online.php
https://rextester.com/l/bash_online_compiler

Развертывание виртуальной машины

VirtualBox – ПО для виртуализации, позволяющее запускать одну ОС «внутри» другой. Разумеется, существуют и другие способы развертывания ВМ, здесь мы рассмотрим лишь один из них. В данном случае, предполагается, что у вас ПК под управлением Windows или Mac. Для начала нужно скачать VirtualBox отсюда и установить его.

Файл bash что это

Также нужно скачать образ ВМ с установленной ОС Ubuntu отсюда. Качайте самую новую версию, убедитесь, что скачиваемый образ имеет формат VirtualBox (VDI).

Создадим виртуальную машину. Сначала создаем на локальном диске папку для размещения в ней ВМ и их файлов (у меня C:\vmachines). Распакуем скачанный образ диска ВМ в созданную папку:

Файл bash что это

Файл bash что это

В открывшемся окне указываем имя ВМ (тип и версия в большинстве случаев подтягиваются автоматически, если это понятно из имени), а также созданную нами папку. Объем оперативной памяти устанавливается автоматически, 1Гб достаточно для выполнения тестов. Выбираем «Использовать существующий виртуальный жесткий диск», нажимаем значок выбора образа жесткого диска, в открывшемся окне нажимаем «Добавить», выбираем распакованный ранее файл образом ВМ и нажимаем «Открыть»:

Файл bash что это Файл bash что это

Файл bash что это

И нажимаем «Создать»:

Файл bash что это

Выбираем в списке созданную ВМ и нажимаем «Запустить»:

Файл bash что это

После запуска ВМ появится окно для входа в ОС:

Файл bash что это

Выбираем учетную запись osboxes.org и вводим пароль osboxes.org. После входа в систему нажимаем Ctrl+Alt+T, у нас откроется окно терминала, в котором можно выполнять тесты:

Файл bash что это

Файл bash что это

Создадим тестового пользователя.

На данном этапе уже можно использовать тестовую среду, выполняя команды в терминале (Ctrl+Alt+T). Дополнительно можно настроить подключение по ssh клиентом (например, PuTTY), мы рассмотрим это отдельно.

3. Первые команды

Итак, мы подключились к терминалу и находимся в shell. Давайте сориентируемся в пространстве. Чтобы узнать имя машины(сервера), на которой мы находимся, введем hostname и нажмем Enter:

Имя пользователя, под которым мы подключены, как правило отображается в приглашении командной строки (test@osboxes:

Команда cat выводит содержимое файла (часть строк в приведенном выводе пропущена и заменена на …). Из файла видим, что для пользователя test указана оболочка /bin/dash. Изменить оболочку текущего пользователя, которая будет загружаться по умолчанию, можно следующей командой(chsh – сокращенное от change shell):

Теперь давайте проверим, в каком каталоге мы находимся, для этого выполним команду pwd :

Для команды ls с параметрами может быть задан синоним (alias), что упрощает её ввод. Список уже заданных синонимов можно получить командой alias :

Алиасы задаются в файле

) означает домашнюю директорию пользователя. В нашем случае /home/test. Также можно задать их в файле

/.bashrc. Здесь нужно сказать пару слов об этих файлах.

При запуске bash в качестве оболочки, сначала выполняется файлы (в случае их наличия), в которых могут быть заданы различные настройки профиля и выполнены различные действия в процессе входа до появления командной строки: сначала выполняется файл /etc/profile, далее bash последовательно ищет и выполняет первый из найденных файлов в следующем порядке:

/.profile. Из указанных файлов могут вызываться и другие.

Так, например, из файла

./profile вызывается файл

Некоторые внутренние команды bash дублированы в виде исполняемых файлов. Это сделано, чтобы скрипты можно было корректно выполнять в оболочках, в которых не реализованы эти команды. Например, существует исполняемый файл /usr/bin/echo, который реализует функционал внутренней команды echo. Команда help echo выведет справку по внутренней команде, а команда /usr/bin/echo –help выведет справку для соответствующего исполняемого файла. Вывод справки для этих команд отличается, но в целом они реализуют идентичный функционал.

Таким образом, если в оболочке не реализована внутренняя команда echo, скрипт, содержащий вызов echo, сможет успешно выполниться, т.к. для обработки вызова будет использован исполняемый файл /usr/bin/echo. Для поиска выполненных ранее команд можно использовать клавиши «Вверх» и «Вниз», команды из истории можно редактировать и повторно выполнять. В конце статьи приведен список полезных команд.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ФайлОписаниеОболочки входа (см. примечание)Интерактивные оболочки (не входа)
/etc/profileСистемный, считывает и исполняет файлы /etc/profile.d/*.sh и /etc/bash.bashrc с настройками приложений.ДаНет