mirror of
https://github.com/ellysh/bash-programming-from-scratch.git
synced 2026-01-23 06:16:32 +00:00
Translate the "Command Interpreter" section
This commit is contained in:
@ -1,29 +1,11 @@
|
||||
## Командный интерпретатор
|
||||
## Command Interpreter
|
||||
|
||||
Интерпретаторы могут работать в двух режимах: не интерактивном и интерактивном. Первый режим нам уже знаком. В нём интерпретатор читает с диска текстовые файлы с исходным кодом программы и построчно их исполняет. В интерактивном режиме пользователь вводит команды через [командную строку в окне терминала](https://ru.wikibooks.org/wiki/Введение_в_администрирование_UNIX/Командная_строка_UNIX#Терминал_и_командная_строка). После нажатия клавиши Enter, команда исполняется. Интерпретатор с интерактивным режимом работы называется [оболочкой ОС](https://ru.wikipedia.org/wiki/Интерпретатор_командной_строки) (shell) или командным интерпретатором.
|
||||
Interpreters work in two modes: non-interactive and interactive. In the first mode, the interpreter executes a program. The program is loaded from the disk into RAM. Then it is executed line by line.
|
||||
|
||||
Оболочка является частью ОС и предоставляет пользователю интерфейс для доступа к её настройкам и функциям. В Linux с помощью оболочки вы можете запускать программы и системные сервисы, управлять периферийными и внутренними устройствами, обращаться к ядру ОС. Также командная строка позволяет запустить любое установленное приложение.
|
||||
In interactive mode, the user types a command in the terminal emulator window. After pressing the Enter key, the command is executed. The interactive mode of the interpreter is called [**command shell**](https://en.wikipedia.org/wiki/Shell_(computing)) or shell.
|
||||
|
||||
### Востребованность
|
||||
A command shell is built into the operating system often. It provides access to the settings and functions of the OS. In Linux, the shell allows the following:
|
||||
|
||||
Есть ли практическая польза от изучения интерфейса командной строки (CLI)? Этот интерфейс использовался 40 лет назад на компьютерах, работающих в тысячи раз медленнее современных. Сегодня на ПК его полностью вытеснил графический интерфейс. Кажется, что CLI — это устаревшая технология, давно отжившая свой век. Это утверждение ошибочно. Не просто так Bash входит во все [дистрибутивы](https://ru.wikipedia.org/wiki/Дистрибутив_операционной_системы) macOS и Linux. В Windows тоже есть командный интерпретатор [Cmd.exe](https://ru.wikipedia.org/wiki/Cmd.exe). В 2006 году компания Microsoft заменила его на новый [PowerShell](https://ru.wikipedia.org/wiki/PowerShell). Задумайтесь над этим фактом: разработчик самой популярной ОС для ПК тратит деньги и время на создание новой оболочки. Значит польза от командного интерпретатора всё-таки есть.
|
||||
|
||||
Какие задачи решает командный интерпретатор в современных ОС? Прежде всего это инструмент для [администрирования системы](https://ru.wikipedia.org/wiki/Системный_администратор). ОС кроме ядра включает в себя взаимодействующие программные модули: библиотеки, сервисы и утилиты. У многих из них есть настройки и специальные режимы работы. Большинство настроек и режимов рядовому пользователю не нужны. Поэтому графический интерфейс не даёт к ним доступа. Но доступ к системным сервисам и утилитам нужен, чтобы восстановить вышедшую из строя ОС. Кроме того, при сбое системы графический интерфейс часто оказывается неработоспособным. Поэтому утилиты восстановления часто имеют только интерфейс командной строки.
|
||||
|
||||
I> Интерпретатор Bash хорошо интегрирован в Linux и macOS. Через него доступны все важные функции этих ОС. Однако, интеграция Bash с Windows достаточно слабая. Вместо него для администрирования системы лучше подойдёт PowerShell. Почему же тогда мы изучаем Bash? Потому что он совместим со стандартом POSIX и на практике встречается чаще, чем PowerShell. Кроме того, Bash в отличие от PowerShell доступен на всех популярных сегодня ОС.
|
||||
|
||||
Кроме администрирования командный интерфейс эффективен для [подключения](https://ru.wikipedia.org/wiki/Программы_удалённого_администрирования) к удалённому компьютеру по сети. Сегодня широко распространены графические программы для такого подключения: TeamViewer, Remote Desktop и другие. Но они требуют стабильного и быстрого сетевого соединения. Если связь плохая, программа будет работать медленно и постоянно завершаться с ошибкой. Командный интерфейс лишён этого недостатка. При нестабильном соединении если отправленная вами команда была потеряна, она будет отправляться снова и снова. Таким образом удалённый компьютер рано или поздно её получит и исполнит. Поэтому CLI интерфейс работает надёжнее.
|
||||
|
||||
Для рядового пользователя знание командного интерфейса будет полезно. Его возможности ускорят выполнение таких ежедневных задач, как операции над файлами, создание резервных копий данных, загрузка файлов из интернета, сбор статистики об использовании ресурсов компьютера и т.д.
|
||||
|
||||
Рассмотрим пример. Предположим, что вам нужно переименовать файлы на диске и добавить к их именам один и тот же суффикс. Эту задачу легко выполнить вручную через графическое приложение [Проводник Windows](https://ru.wikipedia.org/wiki/Проводник_Windows). Но что делать, если речь идёт о тысячах файлов? В этом случае ручное переименование потребует уйму времени и сил. С помощью оболочки эта задача решается одной командой. Наш пример демонстрирует ещё одну сильную сторону CLI — [масштабируемость](https://wiki.monavista.ru/Масштабируемость). Это значит, что одна и та же команда эффективно справляется с любым объёмом входных данных. Один файл или тысячи — неважно. Они могут быть обработаны одной командой.
|
||||
|
||||
Знание командного интерфейса обязательно для программиста. При разработке приложений приходится оперировать большим количеством текстовых файлов с исходным кодом. Для работы с кодом есть много удобных редакторов с графическим интерфейсом. Но часто требуется внести одно и то же изменение в несколько файлов проекта. Например, надо добавить заголовок с информацией о лицензии. В этом случае использование редактора приведёт к многократному ручному копированию текста. Интерпретатор командной строки за счёт хорошей масштабируемости позволит решить эту задачу несколькими короткими командами.
|
||||
|
||||
Навыки работы с командным интерфейсом необходимы для эффективного использования компиляторов и интерпретаторов. Эти программы обычно не имеют графического интерфейса. Пользователи должны запускать их через командную строку и передавать им на вход имена файлов с исходным текстом. Причина отказа от графического интерфейса в этом случае всё та же — его плохая масштабируемость. Крупные программные проекты состоят из сотен файлов. Поэтому намного проще обрабатывать их через командную строку.
|
||||
|
||||
[**Интегрированные среды разработки**](https://ru.wikipedia.org/wiki/Интегрированная_среда_разработки) (integrated development environment, IDE) позволяют компилировать программы из графического интерфейса. На самом деле они выполняют роль обёртки над командным интерфейсом компилятора. Когда вы нажимаете кнопку в IDE, происходит вызов компилятора. Если вам нужно изменить режим его работы, без навыков работы с командной строкой будет сложно.
|
||||
|
||||
Командная строка будет полезна при разработке утилит, решающих вспомогательные задачи программиста. Дело в том, что приложение с текстовым интерфейсом быстрее и проще разрабатывать чем аналогичное с графическим интерфейсом. Скорость разработки важна, когда возникают одноразовые задачи. Предположим, разработчик столкнулся с задачей, для решения которой требуется выполнить одно и то же действие над несколькими файлами. В этом случае он подсчитает: сколько времени уйдёт на выполнение действия вручную и сколько на написание утилиты для его автоматизации. Писать инструмент с графическим интерфейсом окажется дольше, чем действовать вручную. Утилита с текстовым интерфейсом пишется быстрее. Таким образом решение будет сделано в пользу автоматизации. Это позволит решить задачу быстрее и с без ошибок.
|
||||
|
||||
Стоит ли изучать интерфейс командной строки, решать вам. Я только привёл примеры из практики, подтверждающие пользу этого навыка. Перейти с графического интерфейса на командную строку тяжело. Вам придётся научиться заново многим вещам, которые вы привыкли делать через Проводник Windows. Но освоившись с оболочкой, вы удивитесь насколько быстрее стали решаться ваши повседневные задачи работы на компьютере.
|
||||
* Run programs and system services.
|
||||
* Control peripherals and internal devices.
|
||||
* Access the kernel features.
|
||||
@ -7,4 +7,5 @@ mainmatter:
|
||||
GeneralInformation/application.md
|
||||
|
||||
BashShell/README.md
|
||||
BashShell/tools.md
|
||||
BashShell/tools.md
|
||||
BashShell/command-line-interface.md
|
||||
Reference in New Issue
Block a user