shell bash что это
Оболочка Bash — шпаргалка для начинающих
В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.
Оболочка Bash: введение
Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как gnome-terminal, eterm, nxterm и т. п.
Навигация
В Linux файлы и каталоги имеют иерархическую организацию, то есть существует некий начальный каталог, называемый корневым. В нём содержатся файлы и подкаталоги, которые в свою очереди содержат файлы и свои подкаталоги.
Команда cd позволяет перейти в новый каталог.
Синтаксис | Объяснение | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cd | Перемещение в домашний каталог | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cdmkdirКоманда mkdir создаёт новый каталог в текущем каталоге. Основные командыКоманда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat : Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов. Команда echo выводит свои аргументы по стандартному каналу вывода. Если вызвать echo без аргументов, будет выведена пустая строка. Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить: Команда less позволяет перемещаться по переданному файлу или куску текста, причём в обоих направлениях.
Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха. falseКоманда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи. $? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается код возврата программы. 0 означает успешное выполнение программы, любое значение большее 0 отражает тот факт, что в процессе выполнения возникли некоторые ошибки. Кстати, именно поэтому в bash истинной (true) считается 0, а все, что не 0 — ложью (false): Команда grep занимается поиском переданной строки в указанном файле: grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.
Также можно ознакомиться с руководством по regex. У нас на сайте тоже есть руководство по «регуляркам» в Python для новичков. Также вы можете ознакомиться с руководством по sed. historyКоманда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++ : exportКоманда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student : Команда ps выводит информацию о запущенных процессах. Выводится четыре элемента: Команда awk находит и заменяет текст в файлах по заданному шаблону: awk ‘pattern Команда wget скачивает файлы из Сети и помещает их в текущий каталог. Команда nc — это утилита для отладки сети. Также можно ознакомиться с руководством по nc. Команда ping тестирует сетевое подключение. Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения. Git — это популярная система контроля версий. Также можно ознакомиться с руководством по git и нашими материалами. Переменные окруженияПеременные окружения — это именованные переменные, содержащие значения, используемые одним или несколькими приложениями. Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы. Переменная HOME содержит путь к домашнему каталогу текущего пользователя. КоннекторыКоннекторы позволяют запускать несколько команд одновременно.
КонвейерыПеренаправление ввода/выводаПеренаправление выводаНапример, этот код передаст вывод ls в файл, а не на экран: Если файл не существует, он создаётся, а если существует, то перезаписывается. Во избежание перезаписи стоит использовать команду >> — она дописывает данные в конец файла. Перенаправление вводаКоманда sort выводит содержимое файла на экран, поскольку мы не перенаправили выход. Это можно сделать так: Продвинутое перенаправление
Например, для перенаправления stderr в test.txt нужно сделать следующее: Права доступа
chmodКоманда chmod изменяет права доступа файла. Вот типичные сочетания флагов для изменения прав конкретных пользователей:
Кроме того, chmod можно использовать с восьмеричными числами, где 1 — это наличие прав, а 0 — отсутствие: Следующая команда сработает так же, как и предыдущая: Основы BASH. Часть 1Введениеbreak выход из цикла for, while или until И конечно же кроме встроенных команд мы будем использовать целую кучу внешних, отдельных команд-программ, с которыми мы познакомимся уже в процессе Что необходимо знать с самого начала1. Любой bash-скрипт должен начинаться со строки: #!/bin/bash Переменные и параметры скриптаПриведу как пример небольшой пример, который мы разберем: Результат выполнения скрипта: После того как мы познакомились как использовать переменные и передавать скрипту параметры, время познакомиться с зарезервированными переменными: УсловияУсловные операторы, думаю, знакомы практически каждому, кто хоть раз пытался на чем-то писать программы. В bash условия пишутся след. образом (как обычно на примере): Условия. Множественный выборesac #окончание оператора case. Результат работы: UPD: Исправил некоторые ошибки Что такое bash в Linux? Гайд по созданию bash-скриптовОбновл. 29 Июл 2021 | bash (сокр. от «Bourne-Again shell») — это командная оболочка (или «интерпретатор командной строки»), используемая по умолчанию в операционных системах на базе Unix и Linux, созданная в 1989 году Брайаном Фоксом с целью усовершенствования командной оболочки sh. bash позволяет автоматизировать различные задачи, устанавливать программное обеспечение, настраивать конфигурации для своего рабочего окружения и многое другое. В этой статье мы рассмотрим использование нескольких основных команд в bash, а также рассмотрим гайд по созданию bash-скриптов. Что такое терминал?Терминал — это программа, которая используется для взаимодействия с шеллом. Это просто интерфейс к нему и другим программам командной строки, которые работают внутри нее. Вот как выглядит типичный терминал (Konsole) в Debian 11 (окружение рабочего стола — KDE Plasma): Типичный терминал в Linux Всякий раз, когда мы открываем окно терминала, мы видим приглашение шелла — имя_пользователя@имя_машины: Команды в bashКоманда в bash — это наименьшая единица кода, которую bash может выполнить. С помощью команд мы сообщаем шеллу, что нам нужно, чтобы он сделал. bash обычно принимает от пользователя одну команду и возвращается к нему после того, как команда будет выполнена. Чтобы немного освоиться в bash, давайте попробуем выполнить несколько простых команд. Команда echo — возвращает всё, что вы вводите в командной строке: Пример использования команды echo Команда date — отображает текущее время и дату: Пример использования команды date Команда pwd (сокр. от «print working directory») — указывает на текущий рабочий каталог, в котором команды шелла будут искать файлы. Пример использования команды pwd Пример использования команды ls Команда cd (сокр. от «change directory») — изменяет текущую директорию на заданную пользователем. Рассмотрим некоторые примеры использования данной команды: cd — меняет текущую директорию на заданную. Давайте попробуем с помощью команды ls перейти к корневому каталогу / и ознакомимся с его содержимым. Обратите внимание, что мы также можем использовать точку с запятой ; для записи двух команд в одной строке. Пример объединения двух команд в одной строке cd — вернуться в домашний каталог. Команда mkdir (сокр. от «make directory») — создает новый каталог. Команда mv (сокр. от «move») — перемещает один или несколько файлов/каталогов из одного места в другое (заданное пользователем). Для этого нужно указать, что мы хотим переместить (т.е. источник), и куда мы хотим переместить (т.е. пункт назначения). В качестве примера я создам новый каталог Ravesli в своей домашней директории и перемещу в него все .txt-файлы (ну как «все», у меня там только один файл — Адреса.txt) из /home/diego/Документы/ с помощью двух вышеприведенных команд: Перемещение файлов с помощью команды mv Команда touch — создает новые пустые файлы (а также изменяет временные метки в существующих файлах и каталогах). Вот как мы можем создать пустой файл под названием foo.txt в папке Ravesli из домашнего каталога: Создание файла с помощью команды touch Давайте удалим ранее созданный файл foo.txt: Удаление файла с помощью команды rm Команда rmdir (сокр. от «remove directory») — удаляет каталоги. Давайте удалим созданный ранее каталог /home/diego/Ravesli: Удаление каталогов с помощью команды rmdir Команда cat (сокр. от «concatenate») — считывает файл и выводит его содержимое. Она может работать с несколькими файлами, объединяя их вывод в единый поток (отсюда и происходит её название). У меня в домашнем каталоге есть папка untitled с файлами С++/Qt-проекта, и ниже я использую команду cat для просмотра содержимого файла main.cpp из untitled: Пример использования команды cat Просмотр нескольких файлов с помощью команды cat Отображение справочной информации с помощью команды man Редактор nanoГайд по созданию bash-скриптовНаш шелл, это не только промежуточное звено между пользователем и системой, но еще и мощный язык программирования. Программы, написанные на языке шелла, называются shell-скриптами (или shell-сценариями) и имеют соответствующее расширение файлов — .sh. Сам язык содержит полный набор утилит и команд, доступных в *nix-системах, а также циклы, условные операторы, объявление переменных и пр. Такие скрипты будут очень полезными там, где не требуется использование полноценных языков программирования, например, в задачах администрирования операционной системы. Создание bash-скриптаЧтобы создать новый файл bash-скрипта, откройте в любом редакторе текстовый файл и сохраните его с расширением .sh. Все дальнейшие эксперименты я будут проводить в Debian Linux, с применением текстового редактора nano. Давайте создадим новый файл ravesli.sh: $ touch ravesli.sh Чтобы выполнить файл bash-скрипта, нужно изменить права доступа к файлу и сделать его исполняемым. Разрешение, как вы наверняка помните из предыдущих уроков, изменяется командой chmod +x : $ chmod +x ravesli.sh Выполнение bash-скриптаФайл bash-скрипта может быть запущен двумя способами: Shell bash что этоBash — это командная оболочка для UNIX-подобных операционных систем (UNIX, GNU/Linux, MacOS). Она дает пользователю систему команд для работы с файлами и папками, поиском, настройкой окружения и позволяет управлять ОС прямо из командной строки. Слово bash читается как «баш» и расшифровывается как Bourne-Again Shell. Стивен Борн — это имя и фамилия создателя оболочки, а sh (расшифровывается как «шелл») — ее предыдущая версия. Она использовалась в старых версиях операционных систем UNIX. На shell основаны практически все современные системы команд для работы с ОС. Что делает bashОболочка принимает команды, которые пользователь ввел в командную строку, и интерпретирует их, то есть переводит в машинный код. Операционная система получает код в качестве инструкций и выполняет их. Есть и другой способ использования: создание bash- или shell-скриптов, которые сохранены в файле. При каждом запуске файла будет выполняться набор указанных в нем команд. Начните свой путь в IT Попробуйте себя в программировании, аналитике данных, Data Science и других востребованных специальностях — получите все курсы для входа в IT по цене одного. Зачем использовать bashТе же самые действия с файлами, папками и поиском можно выполнить с помощью графического интерфейса ОС. Но это дольше, неудобнее и сложнее. Программисты пользуются bash или shell, чтобы упростить и ускорить работу с системой. Например, чтобы скопировать файл с помощью графического интерфейса, нужно открыть папку, где он расположен, кликнуть на файл правой кнопкой мыши, вызвать контекстное меню и выбрать «Скопировать». А если использовать командную строку и bash — потребуется ввести одну команду. Команда cp означает «скопировать». — это путь к исходному файлу, например /home/file.txt. Это значит, что file.txt лежит в папке /home. — путь к копии файла, которая создастся при выполнении команды. Например, /home/usr/file2.txt, где file2.txt — название копии. Она будет находиться в папке /usr внутри директории /home. В некоторых системах графический интерфейс практически не используется. Все действия нужно выполнять с помощью командной строки. Здесь bash/shell незаменим. Как запустить bashОболочка-интерпретатор встроена в операционную систему и включается автоматически. Достаточно открыть окно терминала и начать вводить команды. Чтобы запустить bash-скрипт, записанный в файл, нужно выдать права на его исполнение Структура командыСинтаксис команды выглядит так: Аргументы — это данные, которые передаются команде. Например, чтобы создать файл, нужно указать его имя — оно будет аргументом. Флаги и аргументы нужны не всегда и не для всех команд. Как устроена навигация в bashОрганизация файлов и папок в Linux не такая, как в Windows. Путь к файлу отсчитывается не от названия диска, а от так называемого корневого каталога. Говоря языком «для начинающих», это начальная точка: считается, что все файлы и папки в системе расположены внутри «корня». Внутри этих папок могут лежать свои подкаталоги и файлы, но их расположение тоже отсчитывается относительно корневого каталога. Корневой каталог обозначается прямым слэшем /. Указывать весь путь необязательно. Можно прописать расположение файлов и папок относительно того места, где вы находитесь. В системах Windows для указания пути используются обратные слэши \. В Linux это всегда прямые слэши /. Команды для навигации по системеПостоянно прописывать путь целиком сложно и долго. Поэтому в bash есть система обозначений специально для навигации: Эти обозначения разрешается использовать вместо части пути или пути полностью. Например, можно написать Перемещаться по системе и ориентироваться в местоположении помогают команды: Команды для просмотра информацииВ ходе работы бывает нужно просмотреть файл или мануал, проверить содержимое каталога. У bash для этого множество возможностей, но мы пока рассмотрим основные: Less. Команда less открывает переданный файл для чтения в специальном интерфейсе. Она хорошо подходит для просмотра длинных файлов, потому что внутри интерфейса less можно ориентироваться по содержимому: Язык bash зависит от раскладки: если ввести g, когда включен русский язык, команда не сработает. Для перехода в nano без открытия файла команду можно запустить без аргументов Команды для поискаПользователю может понадобиться найти какой-нибудь файл или определенную информацию внутри него. Для этого используются две программы: Работа с файламиСо всем, что есть в системе, можно работать. Для этого bash предоставляет огромное множество команд. Вот некоторые из них: Ввод и выводМожно запускать сразу несколько команд, чтобы они передавали друг другу данные, — это называется конвейером. В таком случае команды перечисляются через |. Работа с gitПопулярные дистрибутивы Linux (Ubuntu, Debian и прочие) поддерживают систему контроля версий git. Узнать о ней больше можно в этой статье. С системой можно работать из командной строки. Скрипты на bashЕсли пользователю нужно выполнить много шаблонных действий по очереди и этот алгоритм будет использоваться не один раз, можно создать скрипты. Команды записываются в файл и выполняются каждый раз, когда он исполняется. С помощью скриптов можно автоматизировать работу с системой и упростить процессы. Начало скрипта. Чтобы система поняла, что файл — скрипт, его первая строка должна быть такой: Переменные. Скриптовый язык поддерживает переменные. У них нет типа, а объявляются они так: Значение может быть числовым, текстовым или другим. Можно получить его извне с помощью специальных обозначений: Условия и циклы. Скрипт может выполнять действия, если соблюдается какое-либо условие. Для этого используется конструкция: Циклы позволяют выполнять команды заданное количество раз или пока некоторое условие верно. Таким образом можно управлять родительскими и дочерними процессами, контролировать версии или работать с сервером. Станьте универсальным junior-специалистом по Linux с нуля или отточите уже имеющиеся навыки.
|