HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>В этой статье мы рассмотрим, что такое интерпретатор Bash. Выполним введение в оболочку Bash, изучим синтаксис интерпретатора и его основные команды.</p>
1 <p>В этой статье мы рассмотрим, что такое интерпретатор Bash. Выполним введение в оболочку Bash, изучим синтаксис интерпретатора и его основные команды.</p>
2 <p><strong>Bash</strong>- популярный командный интерпретатор, используемый в юниксоподобных системах, например, в<a>GNU/Linux</a>. Это программа, которую называют оболочка либо шелл (shell), а само название "bash" является сокращением от "Bourne Again Shell". Интерпретатор Bash принимает ваши команды, передавая их операционной системе. Чтобы осуществлялось взаимодействие с ОС, применяются терминалы (gnome-terminal, nxterm и прочие).</p>
2 <p><strong>Bash</strong>- популярный командный интерпретатор, используемый в юниксоподобных системах, например, в<a>GNU/Linux</a>. Это программа, которую называют оболочка либо шелл (shell), а само название "bash" является сокращением от "Bourne Again Shell". Интерпретатор Bash принимает ваши команды, передавая их операционной системе. Чтобы осуществлялось взаимодействие с ОС, применяются терминалы (gnome-terminal, nxterm и прочие).</p>
3 <h2>Навигация</h2>
3 <h2>Навигация</h2>
4 <p>В ОС "Линукс" каталоги и файлы имеют иерархическую организацию, т. е. существует начальный каталог, который называется корневым. В этом каталоге содержатся подкаталоги и файлы, в свою очередь содержащие свои подкаталоги и файлы.</p>
4 <p>В ОС "Линукс" каталоги и файлы имеют иерархическую организацию, т. е. существует начальный каталог, который называется корневым. В этом каталоге содержатся подкаталоги и файлы, в свою очередь содержащие свои подкаталоги и файлы.</p>
5 <h3>pwd</h3>
5 <h3>pwd</h3>
6 <p>Команда pwd (print working directory) служит для отображения текущего местоположения в структуре каталогов.</p>
6 <p>Команда pwd (print working directory) служит для отображения текущего местоположения в структуре каталогов.</p>
7 <h3>cd</h3>
7 <h3>cd</h3>
8 <p>Даёт возможность перейти в новый каталог.</p>
8 <p>Даёт возможность перейти в новый каталог.</p>
9 <h3>mkdir</h3>
9 <h3>mkdir</h3>
10 <p>Служит для создания нового каталога в текущем каталоге.</p>
10 <p>Служит для создания нового каталога в текущем каталоге.</p>
11 <h2>Основные команды</h2>
11 <h2>Основные команды</h2>
12 <h3>Команда интерпретатора Bash man</h3>
12 <h3>Команда интерпретатора Bash man</h3>
13 <p>Отображает руководства по командам. К примеру, последующая команда выдаст вам все данные о команде cat:</p>
13 <p>Отображает руководства по командам. К примеру, последующая команда выдаст вам все данные о команде cat:</p>
14 <h3>Команда интерпретатора Bash cat</h3>
14 <h3>Команда интерпретатора Bash cat</h3>
15 <p>Cчитывает файл, переданный в качестве аргумента, с выводом его содержимого по стандартному каналу вывода. При передаче нескольких файлов в виде аргумента происходит вывод конкатенированного содержимого всех файлов.</p>
15 <p>Cчитывает файл, переданный в качестве аргумента, с выводом его содержимого по стандартному каналу вывода. При передаче нескольких файлов в виде аргумента происходит вывод конкатенированного содержимого всех файлов.</p>
16 <h3>Команда интерпретатора Bash echo</h3>
16 <h3>Команда интерпретатора Bash echo</h3>
17 <p>Осуществляет вывод своих аргументов по стандартному каналу вывода.</p>
17 <p>Осуществляет вывод своих аргументов по стандартному каналу вывода.</p>
18 $ echo Hello World Hello World<p>При использовании без аргументов выводится пустая строка.</p>
18 $ echo Hello World Hello World<p>При использовании без аргументов выводится пустая строка.</p>
19 <h3>Команда интерпретатора Bash head</h3>
19 <h3>Команда интерпретатора Bash head</h3>
20 <p>Читает лишь первые десять строк любого переданного текста, выводя их по стандартному каналу. Можно изменить количество выводимых строк:</p>
20 <p>Читает лишь первые десять строк любого переданного текста, выводя их по стандартному каналу. Можно изменить количество выводимых строк:</p>
21 <h3>Команда интерпретатора Bash tail</h3>
21 <h3>Команда интерпретатора Bash tail</h3>
22 <p>Работает аналогично head, однако читает строки с конца:</p>
22 <p>Работает аналогично head, однако читает строки с конца:</p>
23 <p>Дополнительно есть возможность просматривания добавляемых к файлу строк в режиме реального времени, используя флаг -f:</p>
23 <p>Дополнительно есть возможность просматривания добавляемых к файлу строк в режиме реального времени, используя флаг -f:</p>
24 <h3>Команда интерпретатора Bash less</h3>
24 <h3>Команда интерпретатора Bash less</h3>
25 <p>Позволяет перемещаться куску текста либо переданному файлу в обоих направлениях.</p>
25 <p>Позволяет перемещаться куску текста либо переданному файлу в обоих направлениях.</p>
26 $ less test.txt $ ps aux | less<p>Кстати, о символе | мы расскажем ниже в блоке про команду интерпретатора Bash history.</p>
26 $ less test.txt $ ps aux | less<p>Кстати, о символе | мы расскажем ниже в блоке про команду интерпретатора Bash history.</p>
27 <h3>Команды интерпретатора Bash true и false</h3>
27 <h3>Команды интерпретатора Bash true и false</h3>
28 <p>Первая всегда возвращает ноль в качестве выходного статуса для индикации успеха, вторая, соответственно, не ноль в качестве выходного статуса для индикации неудачи.</p>
28 <p>Первая всегда возвращает ноль в качестве выходного статуса для индикации успеха, вторая, соответственно, не ноль в качестве выходного статуса для индикации неудачи.</p>
29 <h3>$?</h3>
29 <h3>$?</h3>
30 <p>$? - это переменная, содержащая выходной статус последней запущенной команды. Выходной статус - код возврата программы. В нашем случае 0 будет означать успешное выполнение программы, а любое значение, которое больше нуля, будет отражать факт возникновения ошибок в процессе выполнения. Кстати, именно по этой причине в интерпретаторе Bash истиной (true) считается 0, а ложью (false) - всё, что не ноль.</p>
30 <p>$? - это переменная, содержащая выходной статус последней запущенной команды. Выходной статус - код возврата программы. В нашем случае 0 будет означать успешное выполнение программы, а любое значение, которое больше нуля, будет отражать факт возникновения ошибок в процессе выполнения. Кстати, именно по этой причине в интерпретаторе Bash истиной (true) считается 0, а ложью (false) - всё, что не ноль.</p>
31 $ true $ echo $? 0 $ false $ echo $? 1<h3>Команда интерпретатора Bash grep</h3>
31 $ true $ echo $? 0 $ false $ echo $? 1<h3>Команда интерпретатора Bash grep</h3>
32 <p>Служит для поиска переданной строки в указанном файле:</p>
32 <p>Служит для поиска переданной строки в указанном файле:</p>
33 $ cat users.txt user:student password:123 user:teacher password:321 $ grep 'student` file1.txt user:student password:123<p>Кроме того, может принимать несколько регулярных выражений и файлов для уточнения формата текста.</p>
33 $ cat users.txt user:student password:123 user:teacher password:321 $ grep 'student` file1.txt user:student password:123<p>Кроме того, может принимать несколько регулярных выражений и файлов для уточнения формата текста.</p>
34 <h3>Команда интерпретатора Bash sed</h3>
34 <h3>Команда интерпретатора Bash sed</h3>
35 <p>Потоковый редактор, который преобразует входные текстовые данные. Используется для замены выражений следующим образом: s/regexp/replacement/g. К примеру, в следующем коде произойдёт замена всех слов "Hello" на "Hi":</p>
35 <p>Потоковый редактор, который преобразует входные текстовые данные. Используется для замены выражений следующим образом: s/regexp/replacement/g. К примеру, в следующем коде произойдёт замена всех слов "Hello" на "Hi":</p>
36 $ cat test.txt Hello World $ sed 's/Hello/Hi/g' test.txt Hi World<p>Руководство по<a>sed</a>.</p>
36 $ cat test.txt Hello World $ sed 's/Hello/Hi/g' test.txt Hi World<p>Руководство по<a>sed</a>.</p>
37 <h3>Команда интерпретатора Bash history</h3>
37 <h3>Команда интерпретатора Bash history</h3>
38 <p>Выводит историю командной строки. Часто используется совместно с grep при поиске конкретной команды. В коде ниже будут найдены все команды, которые содержат строку g++:</p>
38 <p>Выводит историю командной строки. Часто используется совместно с grep при поиске конкретной команды. В коде ниже будут найдены все команды, которые содержат строку g++:</p>
39 $ history | grep g++ 155 g++ file1.txt 159 g++ file2.txt<p>Кстати, здесь тоже можно увидеть символ | - это конвейер (pipe). С его помощью происходит перенаправление вывода одной команды на вход другой. Так, в вышеописанном примере вся история (в обычном режиме она выводится с помощью history непосредственно в вывод терминала), перенаправляется в grep в качестве входных данных. То есть мы не увидим вывод команды history, зато увидим вывод команды grep.</p>
39 $ history | grep g++ 155 g++ file1.txt 159 g++ file2.txt<p>Кстати, здесь тоже можно увидеть символ | - это конвейер (pipe). С его помощью происходит перенаправление вывода одной команды на вход другой. Так, в вышеописанном примере вся история (в обычном режиме она выводится с помощью history непосредственно в вывод терминала), перенаправляется в grep в качестве входных данных. То есть мы не увидим вывод команды history, зато увидим вывод команды grep.</p>
40 <h3>Команда интерпретатора Bash export</h3>
40 <h3>Команда интерпретатора Bash export</h3>
41 - <p>Устанавливает переменные окружения для их передачи дочерним процессам. Допустим, так мы можем передать переменную name, имеющую значение student:</p>
41 + <p>Устанавливает переменные окржения для их передачи дочерним процессам. Допустим, так мы можем передать переменную name, имеющую значение student:</p>
42 <h3>Команда интерпретатора Bash ps</h3>
42 <h3>Команда интерпретатора Bash ps</h3>
43 <p>Выводит данные о запущенных процессах.</p>
43 <p>Выводит данные о запущенных процессах.</p>
44 $ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash<p>В результате выведутся 4 элемента: - PID (ID процесса), - TTY (тип терминала), - TIME (время работы процесса), - CMD (имя команды, запустившей процесс).</p>
44 $ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash<p>В результате выведутся 4 элемента: - PID (ID процесса), - TTY (тип терминала), - TIME (время работы процесса), - CMD (имя команды, запустившей процесс).</p>
45 <h3>Команда интерпретатора Bash awk</h3>
45 <h3>Команда интерпретатора Bash awk</h3>
46 <p>Находит и меняет текст в файлах на основании заданного шаблона: awk 'pattern {action}' test.txt</p>
46 <p>Находит и меняет текст в файлах на основании заданного шаблона: awk 'pattern {action}' test.txt</p>
47 <h3>Команда интерпретатора Bash wget</h3>
47 <h3>Команда интерпретатора Bash wget</h3>
48 <p>Закачивает файлы из интернета, помещая их в текущий каталог.</p>
48 <p>Закачивает файлы из интернета, помещая их в текущий каталог.</p>
49 $ wget https://github.com/mikeizbicki/ucr-cs100<h3>Команда интерпретатора Bash nc</h3>
49 $ wget https://github.com/mikeizbicki/ucr-cs100<h3>Команда интерпретатора Bash nc</h3>
50 <p>Утилита для отладки сети. Вот<a>руководство</a>.</p>
50 <p>Утилита для отладки сети. Вот<a>руководство</a>.</p>
51 <h3>Команда интерпретатора Bash ping</h3>
51 <h3>Команда интерпретатора Bash ping</h3>
52 <p>Служит для тестирования сетевого подключения.</p>
52 <p>Служит для тестирования сетевого подключения.</p>
53 $ 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<p>Статистика в конце отображает число подключений, которые были совершены до завершения команды. Также отображается время их выполнения.</p>
53 $ 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<p>Статистика в конце отображает число подключений, которые были совершены до завершения команды. Также отображается время их выполнения.</p>
54 <p><em>Статья написана специально для курса по Linux на основании материалов<a>Bash-Cheatsheet</a>.</em></p>
54 <p><em>Статья написана специально для курса по Linux на основании материалов<a>Bash-Cheatsheet</a>.</em></p>
55  
55