что такое bash в ubuntu
Что такое bash в ubuntu
Bash (от англ. Bourne again shell, каламбур «Born again» shell — «возрождённый» shell) — это усовершенствованный и модернизированный shell.
Bash — это командный интерпретатор, работающий, как правило, в интерактивном режиме в текстовом окне, он также может читать команды из текстового файла, который в свое время называется скриптом. Как и все Unix-оболочки, он поддерживает автодополнение имён файлов и директорий, подстановку вывода результата команд, переменные, контроль за порядком выполнения, операторы ветвления и цикла. Ключевые слова, синтаксис и другие основные особенности языка были заимствованы из sh. Другие функции, например, история, были скопированы из csh и ksh. Bash в основном удовлетворяет стандарту POSIX, но с рядом расширений. Bash является является акронимом от Bourne-again-shell («ещё-одна-командная-оболочка-Борна») и представляет собой игру слов: Bourne-shell — одна из популярных разновидностей командной оболочки для UNIX (sh), автором которой является Стивен Борн (1978), усовершенствована в 1987 году Брайаном Фоксом. Фамилия Bourne (Борн) перекликается с английским словом born, означающим «родившийся», отсюда: рождённая-вновь-командная оболочка.
Встроенные команды
Теперь я покажу несколько встроенных команд в bash.
Первая команда это echo она выводит содержимое переменной или выражение на консоль.
Синтаксис
Вторая команда это printf команда для форматированного вывода, расширенный вариант команды echo.
Синтаксис
Ну и третья команда это pwd она выводит название текущего рабочего каталога.
Синтаксис
Создание скрипта или первый hello world
Теперь давайте напишим что-то типо hello world и запустим его, как же это сделать, а вот так.
Первое создадим файл hello.sh, потом дадим ему права на исполнение командой,
теперь дайте откроем данный файл и запишем в него следующие строки,
я объясню, что значат эти строки, первая строка указывает путь к интерпретатору bash, эта строка должна стоять в начале любого bash скрипта, а вторая выводит на экран предложение hello, world, теперь сохнаним наш файл и запустим его командой,
и увидим напечатанное предложение hello, world.
Вот скрин для наглядности,
Думаю пока на этом все, если чем помог то я очень рад.
Работа с Bash
Мы уже много писали о Bash, его возможностях и особенностях, теперь пришло время написать статью, в которой будет описана работа с Bash в целом, как пользоваться Bash, горячие клавиши и другие полезные моменты, которые помогут вам пользоваться Bash более эффективно.
Что такое Bash?
Bash принимает команды от пользователя и передает их системному загрузчику, а также обеспечивает взаимодействие между командами, обмен информацией и потоками ввода-вывода. Также оболочка предоставляет пользователю удобный интерфейс для работы с историей команд, поиска и замены, а также исправления ранее выполненных команд, а также автодополнение путей.
Команды Bash
Возвращаясь к встроенным командам, можно привести пример, вы не найдете в файловой системе команду cd. Ее нет, она встроена.
Обычные же команды находятся в файловой системе. Они могут находиться в одной из папок, указанных в переменной PATH. Для выполнения встроенной или внешней команды достаточно набрать ее имя, интерпретатор отлично справляется с поиском команд по папкам, указанным в PATH. Например:
Но если команда находится в одной из сторонних папок, то необходимо ввести ее полный адрес:
Иначе оболочка не сможет найти исполняемый файл команды.
Объединение команд
Кроме того, Bash позволяет объединять команды по времени выполнения. Существуют такие операторы для объединения команд:
Например, сначала выполняем загрузку файла, а затем открываем его в плеере, если загрузка прошла успешно:
wget https://archive.org/download/testmp3testfile/mpthreetest.mp3 && mplayer mpthreetest.mp3
Чтобы продолжить этот пример, мы можем удалить загруженный файл, если произошла ошибка:
wget https://archive.org/download/testmp3testfile/mpthreetest.mp3 || rm mpthreetest.mp3
Чтобы выполнить обновление системы, а затем завершить работу выполните:
И наконец, вы можете запустить какой-либо сервис или приложение, например, браузер в фоне и свободно продолжить работу в терминале:
Управляющие символы Bash
Чтобы выполнить не последнюю команду, а скажем, предпоследнюю или выполненную еще раньше, то после восклицательного знака нужно указать ее номер:
Если вы укажите один восклицательный знак и несколько символов, то выполнится последняя команда, которая начиналась на эти символы:
Также может понадобиться искать команду не по первому символу, а по вхождению в нее определенного набора символов. Тогда можно использовать такую конструкцию. Ищем последнюю команду, в которой встречалось tmp:
Если перед командой написать пробел, то она не сохранится в истории:
Символ $? позволяет вывести код завершения последней команды:
Символ звездочки возвращает массивом содержимое текущей папки:
С помощью символа ^ можно заменить несколько букв из предыдущей команды. Работает это вот так:
В результате файл будет удален.
Горячие клавиши Bash
Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действий. Рассмотрим основные сочетания, некоторые из них вы и так используете каждый день:
Это все основные сочетания клавиш, которые вам понадобятся чтобы пользоваться bash. Конечно, существуют и другие, но эти основные.
Выводы
В этой статье мы рассмотрели как пользоваться Bash. Как применять основные возможности оболочки, как выполнять команды и какие бывают основные горячие клавиши, этой информации должно быть вполне достаточно новичкам для того, чтобы освоить на начальном уровне эту оболочку. Надеюсь, эта информация была полезной для вас.
На завершение видео по теме от Акцент профи:
Что такое 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
diego@debian:
Чтобы выполнить файл bash-скрипта, нужно изменить права доступа к файлу и сделать его исполняемым. Разрешение, как вы наверняка помните из предыдущих уроков, изменяется командой chmod +x :
$ chmod +x ravesli.sh
diego@debian:
Выполнение bash-скрипта
Файл bash-скрипта может быть запущен двумя способами:
Основы BASH для новичков
Часто новички настолько привыкли работать с графическим интерфейсом GUI, что склонны игнорировать возможности интерфейса командной строки (CLI). Мышь очень удобна, когда нужно скопировать в папку около ста тысяч файлов, но что, если переименовать все эти тысячи файлов или разделить их по расширениям? Так как графические интерфейсы не программируемы, то переименование или разделение их с помощью командной строки заняло бы целую вечность, однако, мы могли бы быстро добиться этого за несколько строк кода.
Unix shell является довольно мощным инструментом для разработчиков всех видов. Эта статья призвана дать краткое введение в самые основы, начиная с операционной системы UNIX.
Большинство современных операционных систем, за исключением WINDOWS, построены на базе UNIX. Среди них много дистрибутивов Linux, macOS, iOS, Android и др. Достаточно одного взгляда на схему развития операционных систем, основанных на UNIX, чтобы подчеркнуть важность UNIX, и именно по этой причине она стала широко использоваться на производстве. На самом деле, бэк-энд многих вычислительных систем, включая такие промышленные гиганты, как Facebook и Google, в значительной степени используют UNIX.
Shell
Shell. Какие бывают
UNIX-система обычно предлагает различные типы оболочек shell. Некоторые из них наиболее распространены:
Однако в этой статье мы ограничимся оболочкой Bash. Тем не менее, вам рекомендуется прочитать и попробовать другие оболочки, особенно zsh, так как уже в версии MacOS под названием Catalina zsh заменил оболочку bash. Так что будет хорошей идеей познакомиться с ним сейчас.
Terminal
У Mac и Linux есть соответствующие версии терминала. Windows также имеет встроенную командную оболочку, но она основана на командной строке MS-DOS, а не на UNIX. Так что давайте посмотрим, как мы можем установить шелл и программу терминала в операционной системе Windows, которая работает так же, как и в системах Mac и Linux.
Установка терминала в WINDOWS
Изучение терминала
Если вам не нужна вся эта информация, вы можете использовать PS1 для настройки командной строки.
Приступим
Чтобы немного развлечься, давайте начнем с нескольких простых команд:
Основные команды Bash
Рабочая директория
pwd выводит содержимое рабочей директории и указывает на текущую рабочую директорию, то есть на директорию, которую оболочка просматривает в данный момент. Это также место по умолчанию, где команды оболочки будут искать файлы данных.
Директория похожа на папку, но в shell мы будем придерживаться наименования директория (каталог). Файловая иерархия UNIX имеет древовидную структуру. Чтобы добраться до определенной папки или файла, нам нужно пройти по определенным путям внутри этой древовидной структуры. Пути разделяют каждый узел вышеуказанной структуры с помощью символа слэш( / ).
Навигация по директориям
Для навигации и организации файлов используются команды ls и cd.
ls обозначает список и показывает содержимое директории. ls обычно начинает с просмотра нашего домашнего каталога. Это означает, что если мы вызовем команду ls самостоятельно, то он всегда выведет содержимое текущего каталога, которым в моем случае является /Users/parul.
Параметры команды
Параметры и опции включают некоторые специальные функции при использовании команды ls.
всегда будет показывать содержимое домашнего каталога.
Немного о масках файлов
cd, дословно, означает Change Directory (Изменить директорию) и изменяет активную директорию на указанный путь. После того, как мы используем cd в нужную директорию, можно воспользоваться командой ls, чтобы увидеть содержимое ее содержимое. Давайте посмотрим, как можно использовать эту команду:
Организация файлов
Существуют определенные команды, которые позволяют нам перемещать, удалять, создавать и копировать файлы из самой оболочки.
mkdir
mkdir означает Make directory и используется для создания новой директории или папки.
mv означает Move и перемещает один или несколько файлов или каталогов из одного места в другое. Нам нужно указать, что мы хотим переместить, т.е. источник и куда мы хотим переместить их, т.е. место назначения.
touch
Команда touch используется для создания новых пустых файлов. Она также используется для изменения временных меток на существующих файлах и каталогах. Вот как мы можем создать файл под названием foo.txt в папке Demo.
rmdir
rmdir означает «удалить каталог» и используется для удаления пустых каталогов из файловой системы. Давайте удалим папку PythonFiles, которую мы создали некоторое время назад.
Обратите внимание, что ../ обозначает родительский каталог.
Просмотр файлов
Это еще один нюанс использования оболочки shell, который очень полезен. Существуют команды, которые помогают нам просматривать содержимое файла, чтобы мы могли ими манипулировать.
Команда cat читает файл и выводит его содержимое. Она может читать любое количество файлов, как следует из ее наименования. В нашей папке Demo есть несколько текстовых файлов, давайте используем cat, чтобы просмотреть их содержимое.
Чтобы просмотреть более одного файла, укажите оба имени файлов после команды cat:
Команда cat отображает содержимое файла на экране. Это нормально, когда содержимого мало, но это становится проблемой, когда файл большой. Как видно из примера ниже, команда выводит все на терминал с очень высокой скоростью, и мы не можем разобраться во всем содержимом файла. К счастью, есть команда под названием «Меньше», которая позволяет нам просматривать содержимое по одному экрану за раз.
Существуют определенные варианты с меньшим количеством используемых опций:
Пробел: перейти к следующему экрану
b: перейти к предыдущему экрану
/: для поиска конкретного слова
q: выйти
Команда man отображает страницы мануалов, которые являются руководством пользователя, встроенным по умолчанию во многие Linux и большинство Unix операционных систем.
man bash : Чтобы отобразить всю инструкцию bash
Каналы и фильтры
Когда команда посылает свой выход в канал, принимающей стороной для этого выхода является другая команда, а не файл. На рисунке ниже показано, как команда wc подсчитывает содержимое файла, отображенного командой cat.
Фильтры
Теперь давайте посмотрим на некоторые часто используемые команды фильтров. Мы будем работать с файлом под названием babynames.txt, который содержит около 1000 имен детей, и с файлом fruits.txt, который содержит имена нескольких фруктов.
Но получился большой список, и мы не можем разобраться во всех этих данных, только что выведенных в терминале. Давайте посмотрим, как мы можем использовать оператор pipe, чтобы разобраться в этом.
Команда cat сначала читает содержимое файла fruits.txt, а затем сортирует его.
Каналы очень удобны для выполнения некоторых сложных задач, так как несколько команд могут быть объединены в один канал вывода.
Что изучить еще по теме?
Инструменты командной строки могут быть отличным дополнением к основному набору инструментов. Первоначально терминал может напугать новичков, но как только они его освоят, его реальные достоинства и преимущества могут быть реализованы. Данная статья призвана заставить начинающего пользователя начать изучение терминала только поверхностно. В сети доступно множество полезных ресурсов, позволяющих детально изучить и узнать об оболочке. Вот некоторые из рекомендуемых ресурсов (на английском):