Archive for the ‘Консоль и шеллы’ Category.

Bash: введение

Командной оболочке bash посвящено бессчётное число материалов, к которым я, не являясь ни её любителем, ни, тем более, знатоком, мало чего могу добавить. Однако bash -- наиболее распространённая среди пользователей Linux командная оболочка, выступающая в этой ОС к тому же общесистемной и умолчальной. И потому совсем обойти её вниманием в книге о FOSS невозможно. Continue reading ‘Bash: введение’ »

. .

Немного о bash

В настоящем цикле заметок я собрал всё, что мне представляется важным при использовании bash -- точнее, описание тех её возможностей, которые использую сам, когда мне приходится иметь дело с этой командной оболочкой. Continue reading ‘Немного о bash’ »

. .

POSIX-shell: управление заданиями

Управление заданиями -- одна из важных функций командных оболочек, именно благодаря ей практически реализуется истинная многозадачность Unix-систем. И поэтому она появилась с самого момента их рождения, уже в Shell Борна. Continue reading ‘POSIX-shell: управление заданиями’ »

. .

POSIX-shell: встроенные команды

Как уже неоднократно говорилось, запуск и исполнение команд -- одна из основных задач командной оболочки. Любая из них способна интерпретировать и исполнять любые внешние команды системы. Однако оболочки располагают и собственными средствами -- т.н. встроенными командами (Shell Builtins). Continue reading ‘POSIX-shell: встроенные команды’ »

. .

POSIX-shell: характеристика

Оболочку ash (и практически идентичный ей /bin/sh из FreeBSD) можно рассматривать в качестве POSIX-шелла par excellence. Интерактивные ее возможности проще всего охарактеризовать в сранении с более "продвинутыми" шеллами - и исключительно от противного. Continue reading ‘POSIX-shell: характеристика’ »

. .

POSIX-shell: базовые возможности

Как уже говорилось выше, оболочки, соответствующие стандарту POSIX, не блещут богатством возможностей. Но именно они изображают собой ту печку, от которой начинают танцевать развитые современные шеллы. И потому именно с них мы и начнём. Continue reading ‘POSIX-shell: базовые возможности’ »

. .

Понятие о функциях

И уж совсем в заключение этого раздела осталось сказать пару слов о функциях командной оболочки. Это -- такая же последовательность команд (или даже просто одиночная команда), как и сценарий, но -- не вынесенная в отдельный исполняемый файл, а помещённая в тело другого скрипта. В коем она опознаётся по имени, и может быть выполнена неоднократно в ходе работы этого скрипта. Continue reading ‘Понятие о функциях’ »

. .

Сценарии оболочки. Как?

Создание пользовательского сценария -- просто, как правда. Для этого всего и нужно: Continue reading ‘Сценарии оболочки. Как?’ »

. .

Сценарии оболочки

Наш затянувшийся разговор о командах и командном интерфейсе подходит к концу. Честно говоря, начиная этот раздел, я не думал, что он окажется таким длинным. Но это -- тот самый случай, когда из песни слова не выкинешь. Напротив, очень многое осталось недосказанным или необъясненным. Что ж -- тем больше поводов будет у нас возвращаться к теме команд вновь и вновь. Continue reading ‘Сценарии оболочки’ »

. .

Командные конструкции. Понятие о фильтрах

С понятием командных конструкций тесно связано понятие программ-фильтров. Это -- команды, способные принимать на свой ввод данные с вывода других команд, производить над ними некоторые действия и перенаправлять свой вывод (то есть результат модификации полученных данных) в файлы или далее по конвейеру -- другой команде. Continue reading ‘Командные конструкции. Понятие о фильтрах’ »

. .

Командные конструкции. Конвейеры

Возможности построения командных конструкций не ограничиваются перенаправлением ввода/вывода: результаты работы одной команды могут быть переданы для обработки другой команде. Это достигается благодаря механизму программных каналов (pipe) или конвейеров -- последний термин лучше отражает существо дела. Continue reading ‘Командные конструкции. Конвейеры’ »

. .

Командные конструкции. Перенаправление

Следующая командная конструкция -- это так называемое перенаправление ввода/вывода. Чтобы понять,что это такое, нужно помнить следующее: Continue reading ‘Командные конструкции. Перенаправление’ »

. .

Командные конструкции. Совместное выполнение

Простейшая командная конструкция -- это выполнение команды в фоновом режиме, что вызывается вводом символа амперсанда после списка опций и (или аргументов): Continue reading ‘Командные конструкции. Совместное выполнение’ »

. .

Командные конструкции. Вступление

Надеюсь, из того, что было рассказано на предшествующмх страницах, посвящённых CLI, читателю стало ясно, что подавляющее большинство команд в POSIX-системах очень просты по сути и предназначены для выполнения какого-либо одного элементарного действия. Continue reading ‘Командные конструкции. Вступление’ »

. .

Командные конструкции

Переходим к рассмотрению командных конструкций -- одной из тех особенностей конадного интерфейса UNIX-подобных систем, которая определяет его мощь и универсальность. Continue reading ‘Командные конструкции’ »

. .

Тема о кавычках

Есть и экраны, распространяемые на все, что заключено внутри них. Это -- кавычки, двойные и одинарные: большая часть символов между ними утрачивает свое специальное значение, Continue reading ‘Тема о кавычках’ »

. .

Экранирование

Из приведённых примеров можно видеть, что метасимволы, образующие регулярные выражения, интерпретируются командной оболочкой особым образом, не так, как обычные алфавитно-цифровые символы, составляющие, скажем, имена файлов. Continue reading ‘Экранирование’ »

. .

Регулярные выражения

Как известно, все пользователи-POSIX'ивисты должны быть в обязательном порядке привержены одному из семи смертных грехов. И грех этот -- леность, можно сказать, показатель профессиональной пригодности линуксоида. Continue reading ‘Регулярные выражения’ »

. .

Поиск в истории

Во всех современных "развитых" шеллах предусмотрены средства поиска команды в буфере истории -- простым перебором (обычно Meta+P -- назад и Meta+N -- вперед).

Впрочем, не смотря на громкое название, обычный поиск ничем практически не отличается от обычного пролистывания исторического списка курсорными стрелками. Что при обширной истории команд может быть весьма утомительным. И потому для ее облегчения предусмотрена такая интересная возможность, как наращиваемый поиск (incremental search) нужной команды в буфере истории по одному (или нескольким) из составляющих ее символов.

Выполняется инкрементный поиск так: после нажатия (при пустой командной строке) клавишной комбинации Control+R появляется предложение ввести алфавитный символ (или -- последовательность символов произвольной длины), заведомо входящий в состав требуемой команды:

$ bck-i-search: _

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

Процедуру поиска можно продолжать вплоть до достижения требуемого результата -- то есть нахождения той команды, которая нужна именно сейчас. Нажатие клавиши Enter в любой из этих моментов запускает найденную (то есть помещенную в командную строку) команду на исполнение, с завершением поиска. Поиск обрывается также и нажатием комбинации Control+C. Перед запуском найденная команда может быть отредактирована стандартными средствами -- с использованием управляющих последовательностей.

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

. .

История команд

Возможности навигации и редактирования строки особенно ярко проявляются в сочетании с другой замечательной особенностью, предоставляемой командными оболочками -- доступом к истории команд. Continue reading ‘История команд’ »

. .