В этой статье мы рассмотрим, что такое интерпретатор Bash. Выполним введение в оболочку Bash, изучим синтаксис интерпретатора и его основные команды.
Консоль — удобный и быстрый инструмент управления компьютером. Вводим команду текстом, получаем результат или сообщение об ошибке с указанием в чём ошибка.
Ввод начинается с указания программы (которую вызываем) и может быть дополнен аргументами и ключами, указывающими программе что именно нужно сделать или как нужно работать. Пример с аргументом: ls build/css — вызываем утилиту ls, указываем ключ build/css — будет показано содержимое указанной в аргументе папки. Пример с ключом: git —version — взвываем программу git, передаем ключ —version — будет показана версия программы (если установлена).
- Linux (Ubuntu, Debian, CentOS, openSUSE …
- Вывод в файл Bash в Linux | Losst
- Bash — Википедия
- Fish Shell — CodeRoad
- Вывод в файл Bash в Linux | Losst
Работая с консолью, мы всегда «находимся» в какой-то папке (она указана в приглашении командной строки). Если там написано ~, то мы в папке пользователя (зависит от настроек Windows, чаще всего это C:/Users/ВАШЕИМЯПОЛЬЗОВАТЕЛЯ/), если там /d/projects, мы в папке D:/projects.
Основная информация о Find
Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
find [папка] [параметры]критерийшаблон [действие]
Папка— каталог в котором будем искать
Параметры— дополнительные параметры, например, глубина поиска, и т д
Критерий— по какому критерию будем искать: имя, дата создания, права, владелец и т д.
Шаблон — непосредственно значение по которому будем отбирать файлы.
Переменные средЫ
Давайте поговорим о переменных среды. Данные переменные, заданы в файлах /etc/.profile, ~/.profile, ~/.bashrc, ~/.bash_profile и инициализируются при загрузке, либо при выполнении команды «. .файл_инициализации». Обычно, основные значения переменных среды следующие:
$BASH
В переменной $BASH содержится полный путь до исполняемого файла командной оболочки Bash.
$BASH_VERSION
В переменную $BASH_VERSION записывается версия Bash.
$CDPATH
Переменная, которая хранит пути поиска каталога. (используется при вводе команды cd имя_каталога без слэша)
$CLASSPATH
содержит список каталогов для поиска файлов классов Java и архивов Java.
$HOME
домашний каталог текущего пользователя.
$HOSTNAME
В переменной $HOSTNAME хранится имя компьютера.
$HISTSIZE
количество событий, хранимых в истории за 1 сеанс
$HISTFILE
Расположение файла истории событий
$HISTFILESIZE
количество событий, хранимых в истории между сеансами
$IFS
переменная хранит символы, являющиеся разделителями команд и параметров. (по умолчанию — пробел, табуляция и новая строка)
- Путь к файлу в Linux | Losst
- Команды Linux для работы с файлами | Losst
- Linux Bash для Windows 10 …
- Read Программирование на Bash с нуля …
- Основы BASH для новичков
$LANG
текущая установка локализации, которая позволяет настроить командную оболочку для использования в различных странах и на различных языках.
Место, где храниться почта
$OSTYPE
В переменной $OSTYPE содержится описание операционной системы.
$PATH
список каталогов для поиска команд и приложений, когда полный путь к файлу не задан.
$PS1
PS1 используется как основная строка приглашения. (то самое [[email protected] ~]#)
$PS2
PS2 используется как вторичная строка приглашения.
$PROMPT_COMMAND
Эта команда должна быть выполнена до отображения строки приглашения Bash.
$PWD
полный путь к текущему рабочему каталогу.
$SHELL
полный путь к текущей командной оболочке.
$USER
В переменной $USER содержится имя текущего пользователя.
Основные команды
Команда интерпретатора Bash man
Отображает руководства по командам. К примеру, последующая команда выдаст вам все данные о команде cat:
Команда интерпретатора Bash cat
Cчитывает файл, переданный в качестве аргумента, с выводом его содержимого по стандартному каналу вывода. При передаче нескольких файлов в виде аргумента происходит вывод конкатенированного содержимого всех файлов.
Команда интерпретатора Bash echo
Осуществляет вывод своих аргументов по стандартному каналу вывода.
$ echo Hello World Hello World
При использовании без аргументов выводится пустая строка.
Команда интерпретатора Bash head
Читает лишь первые десять строк любого переданного текста, выводя их по стандартному каналу. Можно изменить количество выводимых строк:
Команда интерпретатора Bash tail
Работает аналогично head, однако читает строки с конца:

$ tail -50
Дополнительно есть возможность просматривания добавляемых к файлу строк в режиме реального времени, используя флаг -f:
Команда интерпретатора Bash less
Позволяет перемещаться куску текста либо переданному файлу в обоих направлениях.
$ less $ ps aux | less
Кстати, о символе | мы расскажем ниже в блоке про команду интерпретатора Bash history.
Команды интерпретатора Bash true и false
Первая всегда возвращает ноль в качестве выходного статуса для индикации успеха, вторая, соответственно, не ноль в качестве выходного статуса для индикации неудачи.
$? — это переменная, содержащая выходной статус последней запущенной команды. Выходной статус — код возврата программы. В нашем случае 0 будет означать успешное выполнение программы, а любое значение, которое больше нуля, будет отражать факт возникновения ошибок в процессе выполнения. Кстати, именно по этой причине в интерпретаторе Bash истиной (true) считается 0, а ложью (false) — всё, что не ноль.
$ true $ echo $? $ false $ echo $? 1
Команда интерпретатора Bash grep
Служит для поиска переданной строки в указанном файле:
$ cat user:student password:123 user:teacher password:321 $ grep 'student` user:student password:123
Кроме того, может принимать несколько регулярных выражений и файлов для уточнения формата текста.
Команда интерпретатора Bash sed
Потоковый редактор, который преобразует входные текстовые данные. Используется для замены выражений следующим образом: s/regexp/replacement/g. К примеру, в следующем коде произойдёт замена всех слов «Hello» на «Hi»:
$ cat Hello World $ sed 's/Hello/Hi/g' Hi World
Руководство по sed.
Команда интерпретатора Bash history
Выводит историю командной строки. Часто используется совместно с grep при поиске конкретной команды. В коде ниже будут найдены все команды, которые содержат строку g++:
$ history | grep g++ 155 g++ 159 g++
Кстати, здесь тоже можно увидеть символ | — это конвейер (pipe). С его помощью происходит перенаправление вывода одной команды на вход другой. Так, в вышеописанном примере вся история (в обычном режиме она выводится с помощью history непосредственно в вывод терминала), перенаправляется в grep в качестве входных данных. То есть мы не увидим вывод команды history, зато увидим вывод команды grep.
Команда интерпретатора Bash export
Устанавливает переменные окружения для их передачи дочерним процессам. Допустим, так мы можем передать переменную name, имеющую значение student:
Команда интерпретатора Bash ps
Выводит данные о запущенных процессах.

$ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash
В результате выведутся 4 элемента: — PID (ID процесса), — TTY (тип терминала), — TIME (время работы процесса), — CMD (имя команды, запустившей процесс).
Команда интерпретатора Bash awk
Находит и меняет текст в файлах на основании заданного шаблона: awk ‘pattern {action}’
Команда интерпретатора Bash wget
Закачивает файлы из интернета, помещая их в текущий каталог.
Команда интерпретатора Bash nc
Утилита для отладки сети. Вот руководство.
Команда интерпретатора Bash ping
Служит для тестирования сетевого подключения.
$ ping PING (74) 56(84) bytes of data. 64 bytes from (74): icmp_req=1 ttl=57 time=7.82 ms — ping statistics — 1 packets transmitted, 1 received, % packet loss, time 8ms rtt min/avg/max/mdev = 7.794/ ms
Статистика в конце отображает число подключений, которые были совершены до завершения команды. Также отображается время их выполнения.
Статья написана специально для курса по Linux на основании материалов Bash-Cheatsheet.
Вместо выводов
Не удивлюсь, если все описанное в статье покажется тебе очередным велосипедостроением, и даже соглашусь с таким мнением. Все-таки современный Linux — это не та система для сумасшедших экспериментаторов, какой она была пятнадцать лет назад. Сегодня для каждой задачи можно найти отдельный, отлаженный и хорошо работающий инструмент, в том числе графический. Другое дело, что не совсем понятно, стоит ли захламлять систему тяжеловесными написанными на Python приложениями с кучей зависимостей, когда ту же задачу легко решить с помощью простенького скрипта.
Каким путем пойти — выбирать тебе. Встанешь ли ты на темную сторону или выберешь путь джедая?
telnet