Предыдущий материал был неким прологом, открывающим серию материалов на тему общения людей с компьютерами. И если читателям Root Nation будет интересно, я буду писать новые заметки об этом. А пока продолжу – для развития темы.
Не раз слышал истории от “ветеранов” компьютерного дела про явление Windows народу. То была надстройка над DOS со своими программами, которые работали только в этой оболочке. Казалось, что смысла в ней нет, ведь и приложения DOS в Windows изначально не работали. И что? Теперь это один из лидеров среди “домашних” ОС. Подобный путь развития был принят не только в Microsoft. Большая часть ОС состоит из множества уровней абстракций, как слои бутерброда. Например, Android, Sailfish и webOS являются вариациями наслоений над ядром Linux. А в этой заметке я предлагаю приподнять эти уровни и продолжить тему общения с компьютером.
Если запустить ОС без оконного менеджера, вас будет приветствовать командная оболочка (тоже произойдет, если запустить эмулятор терминала). По сути, это интерпретатор операционной системы, в котором выполняются команды, посланные компьютеру. Как интерпретатор Basic’а на старых домашних компьютерах вроде Commodore, Atari и Amiga, где еще не обитали переносимые операционные системы. Это есть точка взаимодействия человека и компьютера. Без оконных менеджеров, графических интерфейсов и всего остального.
Здесь, как и много лет назад, вы можете писать и выполнять функции, а также запускать уже написанные программы. Общение происходит на языке-посреднике между человеческим и машинным. Таких языков не мало (sh, zsh, bash и другие), но в общем все они схожи. А для того, чтобы узнать язык, на котором готов разговаривать компьютер, достаточно ввести команду help и нажать Enter. После будет выведена справка, с которой можно узнать краткий список доступных команд. Оперируя ими, можно попросить компьютер выполнить что-то для нас. Например, на языке bash напишем такую строку с условием типа if (если):
a=10; read b; if [ "$b" -lt "$a" ]; then (echo -e "more, please"); else (echo -e "good"); fi
Код, представленный выше, не делает ничего сверхъестественного: он будет ожидать от вас ввода числа и после выдаст тот или иной ответ. А чтобы не писать каждый раз эту строку, ее можно записать в обычный текстовый файл, красиво развернув для удобного чтения человеком. И запускать при необходимости. Правда, в начале такого файла необходимо указывать путь к shell’у (так в простонародии называют командные оболочки), а самому файлу дать расширение “.sh”. В итоге у нас получится что-то вроде этого:
#!/bin/bash
a=10
read b
if [ "$b" -lt "$a" ] then echo -e "more, please" else echo -e "good" fi
В таких скриптах можно писать все, что может выполнить используемая командная оболочка. И пишется, как писалось при Commodore 64 на дискеты и аудио кассеты. Даже, игры и системы инициализации могут быть представлены shell-скриптами.
Продолжение следует…