Баннер мобильный (1) Пройти тест

Bash

Глоссарий

23 марта 2023

Поделиться

Скопировано

Содержание

    Bash — это командная оболочка для UNIX-подобных операционных систем (UNIX, GNU/Linux, MacOS). Она дает пользователю систему команд для работы с файлами и папками, поиском, настройкой окружения и позволяет управлять ОС прямо из командной строки.

    Логотип bash

    Слово bash читается как «баш» и расшифровывается как Bourne-Again Shell. Стивен Борн — это имя и фамилия создателя оболочки, а sh (расшифровывается как «шелл») — ее предыдущая версия. Она использовалась в старых версиях операционных систем UNIX. На shell основаны практически все современные системы команд для работы с ОС.

    Что делает bash

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

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

    Зачем использовать bash

    Те же самые действия с файлами, папками и поиском можно выполнить с помощью графического интерфейса ОС. Но это дольше, неудобнее и сложнее. Программисты пользуются bash или shell, чтобы упростить и ускорить работу с системой.

    Например, чтобы скопировать файл с помощью графического интерфейса, нужно открыть папку, где он расположен, кликнуть на файл правой кнопкой мыши, вызвать контекстное меню и выбрать «Скопировать». А если использовать командную строку и bash — потребуется ввести одну команду.

    cp <файл1> <файл2>

    Команда cp означает «скопировать». <файл1> — это путь к исходному файлу, например /home/file.txt. Это значит, что file.txt лежит в папке /home.

    <файл2> — путь к копии файла, которая создастся при выполнении команды. Например, /home/usr/file2.txt, где file2.txt — название копии. Она будет находиться в папке /usr внутри директории /home.

    В некоторых системах графический интерфейс практически не используется. Все действия нужно выполнять с помощью командной строки. Здесь bash/shell незаменим.

    Как запустить bash

    Оболочка-интерпретатор встроена в операционную систему и включается автоматически. Достаточно открыть окно терминала и начать вводить команды.

    Запуск bash

    Чтобы запустить bash-скрипт, записанный в файл, нужно выдать права на его исполнение

    Структура команды

    Синтаксис команды выглядит так:

    <команда> [флаги][аргументы]

    Флаги — это короткие входные параметры после команды, которые обычно выглядят как дефис и буква. Например, в записи ls -l -l — это флаг. Это нужно, чтобы команда выполнялась определенным образом, например по-особому выводила результат. Для большинства команд существуют десятки флагов.

    Аргументы — это данные, которые передаются команде. Например, чтобы создать файл, нужно указать его имя — оно будет аргументом.

    Флаги и аргументы нужны не всегда и не для всех команд.

    Как устроена навигация в bash

    Организация файлов и папок в Linux не такая, как в Windows. Путь к файлу отсчитывается не от названия диска, а от так называемого корневого каталога. Говоря языком «для начинающих», это начальная точка: считается, что все файлы и папки в системе расположены внутри «корня». Внутри этих папок могут лежать свои подкаталоги и файлы, но их расположение тоже отсчитывается относительно корневого каталога. Корневой каталог обозначается прямым слэшем /.

    Чтобы указать на файл, лежащий в корневом каталоге, нужно написать /<имя_файла>. Полный путь к любому файлу можно прописать так: /<папка1>/<папка2>/…/<папкаn>/<файл>.

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

    В системах Windows для указания пути используются обратные слэши \. В Linux это всегда прямые слэши /.

    Команды для навигации по системе

    Постоянно прописывать путь целиком сложно и долго. Поэтому в bash есть система обозначений специально для навигации:

    • . — текущая папка;
    • .. — папка на уровень выше текущей;
    • ~ — домашний каталог. Его адрес по умолчанию зависит от дистрибутива операционной системы. Например, в Ubuntu это /home/<имя_пользователя>;
    • — — предыдущий каталог.

    Эти обозначения разрешается использовать вместо части пути или пути полностью. Например, можно написать ~/myfiles или ../docs/work.

    Перемещаться по системе и ориентироваться в местоположении помогают команды:

    • pwd — показать полный путь к папке, где сейчас находится пользователь;
    • сd <путь> — перейти в другой каталог.

    Команды для просмотра информации

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

    • man <command> — открыть мануал, руководство пользователя по какой-либо команде. Этот справочник очень полезен на начальных этапах изучения оболочки. Там приведены подробные описания команд, но на русский язык руководство не переведено;
    • cat <файл> — показать содержимое файла прямо в терминале. Можно передать команде несколько файлов, тогда она выведет содержимое каждого;
    • ls <путь к папке> — отобразить содержимое каталога. Если не передать этой команде путь, она покажет, что находится в текущей папке.
    Отображение содержимого каталога

    Less. Команда less <файл> открывает переданный файл для чтения в специальном интерфейсе. Она хорошо подходит для просмотра длинных файлов, потому что внутри интерфейса less можно ориентироваться по содержимому:

    • нажатие g переводит пользователя в начало файла;
    • нажатие G переносит в конец;
    • / открывает поиск по содержимому;
    • q выходит из less.

    Язык bash зависит от раскладки: если ввести g, когда включен русский язык, команда не сработает.

    Nano. Так называется текстовый редактор, которым можно пользоваться из консоли. Он очень простой: это аналог Notepad, который открывается прямо внутри командной строки. Чтобы открыть в нем файл, нужно ввести команду nano <файл>. Внутри программы можно читать, редактировать, сохранять содержимое. Основные команды редактора указаны внутри его интерфейса.

    Текстовый редактор nano

    Для перехода в nano без открытия файла команду можно запустить без аргументов

    Команды для поиска

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

    • find <папка> -name «имя файла в кавычках» ищет файл с нужным именем в указанной папке;
    • grep «любой текст в кавычках» <имя_файла> ищет указанную строку в файле. Подходит для поиска определенного содержимого, например строчек в скриптах. Если запустить grep с аргументом -r и указать имя папки, то он будет искать нужную строку во всех файлах папки.

    Работа с файлами

    Со всем, что есть в системе, можно работать. Для этого bash предоставляет огромное множество команд. Вот некоторые из них:

    • mkdir <имя_папки> — создает в текущем каталоге новую папку. Если папку нужно создать в другом месте, понадобится команда mkdir -p <путь>;
    • touch <файл> — создает файл. Можно прописать к нему путь, а можно создать его в текущем каталоге. Тогда потребуется указать только имя файла;
    • cp <путь1><путь2> — копирует файл из пути1 в путь2;
    • mv <путь1><путь2> — перемещает файл из пути1 в путь2;
    • rm — удаляет файл, rm -r — удаляет каталог;
    • wget <ссылка> — скачивает файл с сайта по ссылке и размещает в текущем каталоге;
    • echo <текст или переменная> — выводит аргумент в консоль.

    Ввод и вывод

    Потоки ввода и вывода можно перенаправлять с помощью символов > и <. Это значит, что команда может взять аргументы не из консоли, а из другого места, чаще всего из файла. Вывести результат она тоже может не на экран, а в файл или куда-либо еще:

    • <команда> <<файл> — ввод аргументов из файла;
    • <команда> ><файл> — вывод результата в файл;
    • <команда> >><файл> — вывод результата в файл с дозаписью. Если в документе уже было содержимое, оно не перезапишется — новые данные добавятся в конец.

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

    Работа с git

    Популярные дистрибутивы Linux (Ubuntu, Debian и прочие) поддерживают систему контроля версий git. Узнать о ней больше можно в этой статье. С системой можно работать из командной строки.

    Скрипты на bash

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

    Чтобы запустить скрипт из консоли, нужно ввести команду bash <имя скрипта> или sh <имя скрипта>.

    Начало скрипта. Чтобы система поняла, что файл — скрипт, его первая строка должна быть такой:

    #!/bin/bash

    После ! пишется путь к интерпретатору bash, который по умолчанию выглядит так, как указано в коде. Если в системе другой путь, соответственно меняется и запись в начале скрипта. Узнать этот путь можно с помощью команды в терминале:

    whereis bash

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

    Переменные. Скриптовый язык поддерживает переменные. У них нет типа, а объявляются они так:

    <имя_переменной> = <значение>

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

    • $0 — передает имя скрипта;
    • $1, $2 и так далее — аргументы, которые пользователь может передать в скрипт, когда открывает его.

    Обратиться к созданной переменной внутри скрипта можно так: $<имя_переменной>. Она используется для вычислений, ввода-вывода и других действий.

    Условия и циклы. Скрипт может выполнять действия, если соблюдается какое-либо условие. Для этого используется конструкция:

    If <условие>
    then <действие, если условие выполнено>
    else <действие, если условие не выполнено>
    fi

    Циклы позволяют выполнять команды заданное количество раз или пока некоторое условие верно. Таким образом можно управлять родительскими и дочерними процессами, контролировать версии или работать с сервером. 

    Поделиться

    Скопировано

    0 комментариев

    Комментарии