Введение: Что такое bash и где он живет?

Что такое bash и для чего он мне нужен?


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

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

Так что же такое bash?


Краткий ответ: Bash — это программа на вашем компьютере, как и любая другая, но она разработана так, чтобы вам было легко общаться.

Каждая программа на вашем компьютере способна выполнять множество различных действий. Читайте файлы, запускайте другие программы, занимайтесь математикой, управляйте устройствами. Основное отличие bash от большинства других программ заключается в том, что в отличие от них bash не был запрограммирован для выполнения определенной задачи. Bash был запрограммирован на получение команд от вас, пользователя. Чтобы сделать это эффективно, был создан «язык», который позволяет пользователям «разговаривать» с программой bash и сообщать ей, что делать. Этот язык является языком оболочки bash, и вы скоро познакомитесь с ним поближе.

По сути, программа оболочки — это та, которая предоставляет пользователям интерфейс для взаимодействия с другими программами. Существует большое разнообразие программ оболочки, каждая из которых имеет свой собственный язык. Некоторые популярные из них — это C shell (csh) , Z shell (zsh) , Korn shell (ksh) , Bourne shell , Debian’s Almquist shell (dash) и т. д. Bash (также называемый Bourne Again shell ) в настоящее время является самой популярной и повсеместно доступной оболочкой. Несмотря на то, что все эти оболочки используют, казалось бы, похожий синтаксис, важно полностью осознавать, для какой оболочки вы на самом деле пишете код. Часто вы услышите, как люди называют свой код «кодом оболочки», что примерно так же конкретно, как «исходный код» по отношению к вашему коду Java. Это руководство научит вас писать код оболочки bash: вы должны использовать его только с оболочкой bash, а не с какой-либо другой.

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

Что мне с этим делать?


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

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

Правда на самом деле совершенно противоположна. Хотя текстовый интерфейс, безусловно, менее эффективен в том, что он может отображать (он, безусловно, не очень хорошо подходит для отображения изображений), его простота позволяет нам, людям, очень легко находить последовательную структуру в том, как мы можем интерпретировать текст, который в нем появляется, и как мы можем отдавать наши команды. Вы обнаружите, что самые опытные пользователи компьютеров намного эффективнее выполняют задачи через текстовый интерфейс, чем выполняют те же задачи с помощью программ с графическим интерфейсом. Скоро вы узнаете, что простота языка оболочки bash является ключевым элементом этого.

Итак, что вы делаете с bash? Вы будете использовать его, чтобы узнать, какие файлы находятся на вашем компьютере и что в них находится. Вы будете использовать его для запуска программ, которые могут вносить всевозможные изменения в ваш компьютер, от редактирования файлов и изображений до их преобразования. От перемещения и копирования файлов до создания автоматических резервных копий. От загрузки кода новых программ до их компиляции и запуска. Но прежде чем вы слишком воодушевитесь: важно помнить, что bash — это инструмент , единственный инструмент в огромном наборе инструментов программ. Bash сам по себе позволит вам делать только основные вещи с файлами и другими программами. Вам нужно будет понять все остальные инструменты в наборе инструментов вашей системы. Эти знания обширны и будут приходить медленно, важно, чтобы вы потратили время на то, чтобы хорошо их изучить , а не пытались понять основную идею большинства и завтра сломать ногу (или, что более вероятно, сломать свой музыкальный архив или коллекцию семейных фотографий).

Bash — это простой инструмент в обширном наборе программ, позволяющий мне взаимодействовать с моей системой с помощью текстового интерфейса .

Где найти bash и как начать его использовать?

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

Прежде чем мы погрузимся в самую гущу событий, давайте сначала определимся. Важно, чтобы вы понимали, где живет программа bash, как она вызывается и какова ее среда. Насколько далеко простирается ее досягаемость и кто ее друзья, к которым она может обратиться за помощью при выполнении задач, которые вы ей поручите.

Если предположить, что ваша операционная система поставляется с установленным bash, вы найдете bash как простую исполняемую программу, расположенную в одном из стандартных двоичных каталогов вашей системы. Двоичный файл — это исполняемая программа, которая содержит «двоичный код», который выполняется непосредственно ядром системы. Если вы работаете в системе, которая не поставляется с предустановленным bash, например FreeBSD или Windows, вам нужно будет либо использовать платформу дистрибутива, чтобы загрузить и установить его, либо получить исходный код bash и собрать двоичный файл самостоятельно. Пользователи FreeBSD могут использовать ports, пользователи Windows могут использовать 
cygwin, в то время как Windows 10 изначально интегрирует оболочку Linux Bash, но существуют и альтернативные дистрибутивы. Исходный код доступен на 
GNU.org . Если все остальное не помогает, используйте возможности Интернета, чтобы найти способ установки bash, прежде чем продолжить.

Если вы предпочитаете экспериментировать с оболочкой bash на удаленном компьютере или в настоящее время не можете установить оболочку bash на свое устройство, вас может заинтересовать служба удаленной оболочки, такая как 
The Super Dimension Fortress (SDF) .

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

интерактивный режим

В интерактивном режиме оболочка bash ждет ваших команд перед их выполнением. Каждая переданная ей команда выполняется. Пока команда выполняется, вы не можете взаимодействовать с оболочкой bash. Как только команда будет завершена, вы снова сможете взаимодействовать с bash, пока bash ожидает следующую команду.


не интерактивный режим

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

За исключением источника команд, которые выполняет bash, эти два режима работы очень похожи. На данный момент достаточно сказать, что если bash запрашивает у вас команду для запуска, вы находитесь в интерактивном режиме . Если он запускает команды, сохраненные в файле, он запускает скрипт в не интерактивном режиме .

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

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

Пользователи Linux и *BSD могут использовать rxvt , xterm , gnome-terminal или  konsole . Пользователи OS X могут использовать Terminal или iTerm 2 . Пользователи Windows могут использовать такие программы, как cmd.exe Console 2 и mintty . Для каждой операционной системы существует множество альтернатив. Найдите ту, которая вам нравится, и продолжайте читать, как только она будет установлена ​​и вы будете готовы ее запустить.

Давайте запустим bash!
Сначала убедитесь, что вы находитесь в текстовом интерфейсе, открыв терминал или программу-эмулятор терминала. Как только вы окажетесь в текстовом интерфейсе, вам нужно будет найти способ запускать программы. Так же, как графические интерфейсы могут сильно различаться по способу запуска программ, так и текстовые интерфейсы тоже. К счастью, однако, большинство терминалов настроены на запуск программы оболочки, как только она будет готова. Помните, что bash — это программа оболочки?

Скорее всего, ваш терминал запустится с уже запущенным в нем bash. Однако некоторые терминалы этого не сделают: некоторые системы могут по умолчанию использовать оболочки, такие как cmd.exeshdashcshили zsh. Ни одна из этих оболочек не является bash, и их использование не рассматривается в этом руководстве (если вам нужна помощь, я снова рекомендую вам обратиться к возможностям Интернета). Чтобы узнать, запущена ли в данный момент на вашем терминале оболочка bash, давайте попробуем запустить нашу первую команду bash !

Поскольку это наш первый блок кода оболочки, давайте уделим немного времени указанию синтаксиса, который мы будем использовать в этом руководстве. Весь код отформатирован like this. Когда есть блок кода, как выше, мы включим как вывод, который появляется на вашем терминале, так и текст, который вы ввели в терминал. Мы проведем различие между текстом, который вы вводите, и другим текстом, который появляется в терминале, отформатировав текст, который вы вводите like this. Текст, который вы должны ввести, можно легко выбрать с помощью clicking it. Взглянув на блок кода выше, вы должны теперь понять, что первый $ знак — это не то, что вы должны вводить: он представляет собой приглашение, которое появится на вашем терминале, когда его оболочка будет готова принять команду. Фактическое приглашение в вашем терминале может выглядеть иначе. В приглашении вы введете следующий текст: echo "$BASH_VERSION", а затем нажмете  клавишу (enter/return) для подтверждения команды. Как только вы подтвердите команду, оболочка bash выполнит ее и выведет вывод в строке ниже (или аналогичный номер версии).

Ниже вы можете попробовать ввести ваш первый код в нашем виртуальном терминале: