Синтаксис Bash для начинающих. Интерпретатор Bash

В это статье мы рассмотрим, что такое интерпретатор Bash. Выполним введение в оболочку Bash, изучим синтаксис интерпретатора и его основные команды.

Bash — популярный командный интерпретатор, используемый в юниксоподобных системах, например, в GNU/Linux. Это программа, которую называют оболочка либо шелл (shell), а само название «bash» является сокращением от «Bourne Again Shell». Интерпретатор Bash принимает ваши команды, передавая их операционной системе. Чтобы осуществлялось взаимодействие с ОС, применяются терминалы (gnome-terminal, nxterm и прочие).

Навигация

В ОС «Линукс» каталоги и файлы имеют иерархическую организацию, т. е. существует начальный каталог, который называется корневым. В этом каталоге содержатся подкаталоги и файлы, в свою очередь содержащие свои подкаталоги и файлы.

pwd

Команда pwd (print working directory) служит для отображения текущего местоположения в структуре каталогов.

cd

Даёт возможность перейти в новый каталог.

1-20219-90b95c.jpg

mkdir

Служит для создания нового каталога в текущем каталоге.

Основные команды

Команда интерпретатора Bash man

Отображает руководства по командам. К примеру, последующая команда выдаст вам все данные о команде cat:

$ man cat

Команда интерпретатора Bash cat

Cчитывает файл, переданный в качестве аргумента, с выводом его содержимого по стандартному каналу вывода. При передаче нескольких файлов в виде аргумента происходит вывод конкатенированного содержимого всех файлов.

Команда интерпретатора Bash echo

Осуществляет вывод своих аргументов по стандартному каналу вывода.

$ echo Hello World
  Hello World

При использовании без аргументов выводится пустая строка.

Команда интерпретатора Bash head

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

$ head -50 test.txt

Команда интерпретатора Bash tail

Работает аналогично head, однако читает строки с конца:

$ tail -50 test.txt

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

$ tail -f test.txt

Команда интерпретатора Bash less

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

$ less test.txt
$ ps aux | less

Кстати, о символе | мы расскажем ниже в блоке про команду интерпретатора Bash history.

2-20219-24da11.jpg

Команды интерпретатора Bash true и false

Первая всегда возвращает ноль в качестве выходного статуса для индикации успеха, вторая, соответственно, не ноль в качестве выходного статуса для индикации неудачи.

$?

$? — это переменная, содержащая выходной статус последней запущенной команды. Выходной статус — код возврата программы. В нашем случае 0 будет означать успешное выполнение программы, а любое значение, которое больше нуля, будет отражать факт возникновения ошибок в процессе выполнения. Кстати, именно по этой причине в интерпретаторе Bash истиной (true) считается 0, а ложью (false) — всё, что не ноль.

$ true
$ echo $?
  0
$ false
$ echo $?
  1

Команда интерпретатора Bash grep

Служит для поиска переданной строки в указанном файле:

$ cat users.txt
  user:student password:123
  user:teacher password:321
$ grep 'student` file1.txt
  user:student password:123

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

3-20219-7a81b0.jpg

Команда интерпретатора Bash sed

Потоковый редактор, который преобразует входные текстовые данные. Используется для замены выражений следующим образом: s/regexp/replacement/g. К примеру, в следующем коде произойдёт замена всех слов «Hello» на «Hi»:

$ cat test.txt
  Hello World
$ sed 's/Hello/Hi/g' test.txt
  Hi World

Руководство по sed.

Команда интерпретатора Bash history

Выводит историю командной строки. Часто используется совместно с grep при поиске конкретной команды. В коде ниже будут найдены все команды, которые содержат строку g++:

$ history | grep g++
  155  g++ file1.txt
  159  g++ file2.txt

Кстати, здесь тоже можно увидеть символ | — это конвейер (pipe). С его помощью происходит перенаправление вывода одной команды на вход другой. Так, в вышеописанном примере вся история (в обычном режиме она выводится с помощью history непосредственно в вывод терминала), перенаправляется в grep в качестве входных данных. То есть мы не увидим вывод команды history, зато увидим вывод команды grep.

Команда интерпретатора Bash export

Устанавливает переменные окружения для их передачи дочерним процессам. Допустим, так мы можем передать переменную name, имеющую значение student:

$ 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}' test.txt

Команда интерпретатора Bash wget

Закачивает файлы из интернета, помещая их в текущий каталог.

$ wget https://github.com/mikeizbicki/ucr-cs100

Команда интерпретатора Bash nc

Утилита для отладки сети. Вот руководство.

Команда интерпретатора Bash ping

Служит для тестирования сетевого подключения.

$ ping google.com
  PING google.com (74.125.224.34) 56(84) bytes of data.
  64 bytes from lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7.82 ms
  --- google.com ping statistics ---
  1 packets transmitted, 1 received, 0% packet loss, time 8ms
  rtt min/avg/max/mdev = 7.794/8.422/10.792/0.699 ms

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

Статья написана специально для OTUS по материалам Bash-Cheatsheet.

Автор
0 комментариев
Для комментирования необходимо авторизоваться