Archive for the ‘Консоль и шеллы’ Category.
Март 23, 2011, 20:43
Командной оболочке bash
посвящено бессчётное число материалов, к которым я, не являясь ни её любителем, ни, тем более, знатоком, мало чего могу добавить. Однако bash
-- наиболее распространённая среди пользователей Linux командная оболочка, выступающая в этой ОС к тому же общесистемной и умолчальной. И потому совсем обойти её вниманием в книге о FOSS невозможно. Continue reading ‘Bash: введение’ »
. .
Март 23, 2011, 20:39
В настоящем цикле заметок я собрал всё, что мне представляется важным при использовании bash
-- точнее, описание тех её возможностей, которые использую сам, когда мне приходится иметь дело с этой командной оболочкой. Continue reading ‘Немного о bash’ »
. .
Март 18, 2011, 22:09
Управление заданиями -- одна из важных функций командных оболочек, именно благодаря ей практически реализуется истинная многозадачность Unix-систем. И поэтому она появилась с самого момента их рождения, уже в Shell Борна. Continue reading ‘POSIX-shell: управление заданиями’ »
. .
Март 18, 2011, 22:07
Как уже неоднократно говорилось, запуск и исполнение команд -- одна из основных задач командной оболочки. Любая из них способна интерпретировать и исполнять любые внешние команды системы. Однако оболочки располагают и собственными средствами -- т.н. встроенными командами (Shell Builtins). Continue reading ‘POSIX-shell: встроенные команды’ »
. .
Март 18, 2011, 21:13
Оболочку ash
(и практически идентичный ей /bin/sh
из FreeBSD) можно рассматривать в качестве POSIX-шелла par excellence. Интерактивные ее возможности проще всего охарактеризовать в сранении с более "продвинутыми" шеллами - и исключительно от противного. Continue reading ‘POSIX-shell: характеристика’ »
. .
Март 18, 2011, 21:08
Как уже говорилось выше, оболочки, соответствующие стандарту POSIX, не блещут богатством возможностей. Но именно они изображают собой ту печку, от которой начинают танцевать развитые современные шеллы. И потому именно с них мы и начнём. Continue reading ‘POSIX-shell: базовые возможности’ »
. .
Март 18, 2011, 17:31
И уж совсем в заключение этого раздела осталось сказать пару слов о функциях командной оболочки. Это -- такая же последовательность команд (или даже просто одиночная команда), как и сценарий, но -- не вынесенная в отдельный исполняемый файл, а помещённая в тело другого скрипта. В коем она опознаётся по имени, и может быть выполнена неоднократно в ходе работы этого скрипта. Continue reading ‘Понятие о функциях’ »
. .
Март 18, 2011, 17:29
Создание пользовательского сценария -- просто, как правда. Для этого всего и нужно: Continue reading ‘Сценарии оболочки. Как?’ »
. .
Март 18, 2011, 17:28
Наш затянувшийся разговор о командах и командном интерфейсе подходит к концу. Честно говоря, начиная этот раздел, я не думал, что он окажется таким длинным. Но это -- тот самый случай, когда из песни слова не выкинешь. Напротив, очень многое осталось недосказанным или необъясненным. Что ж -- тем больше поводов будет у нас возвращаться к теме команд вновь и вновь. Continue reading ‘Сценарии оболочки’ »
. .
Март 18, 2011, 17:19
С понятием командных конструкций тесно связано понятие программ-фильтров. Это -- команды, способные принимать на свой ввод данные с вывода других команд, производить над ними некоторые действия и перенаправлять свой вывод (то есть результат модификации полученных данных) в файлы или далее по конвейеру -- другой команде. Continue reading ‘Командные конструкции. Понятие о фильтрах’ »
. .
Март 18, 2011, 17:18
Возможности построения командных конструкций не ограничиваются перенаправлением ввода/вывода: результаты работы одной команды могут быть переданы для обработки другой команде. Это достигается благодаря механизму программных каналов (pipe) или конвейеров -- последний термин лучше отражает существо дела. Continue reading ‘Командные конструкции. Конвейеры’ »
. .
Март 18, 2011, 17:16
Следующая командная конструкция -- это так называемое перенаправление ввода/вывода. Чтобы понять,что это такое, нужно помнить следующее: Continue reading ‘Командные конструкции. Перенаправление’ »
. .
Март 18, 2011, 17:06
Простейшая командная конструкция -- это выполнение команды в фоновом режиме, что вызывается вводом символа амперсанда после списка опций и (или аргументов): Continue reading ‘Командные конструкции. Совместное выполнение’ »
. .
Март 18, 2011, 17:03
Надеюсь, из того, что было рассказано на предшествующмх страницах, посвящённых CLI, читателю стало ясно, что подавляющее большинство команд в POSIX-системах очень просты по сути и предназначены для выполнения какого-либо одного элементарного действия. Continue reading ‘Командные конструкции. Вступление’ »
. .
Март 18, 2011, 17:02
Переходим к рассмотрению командных конструкций -- одной из тех особенностей конадного интерфейса UNIX-подобных систем, которая определяет его мощь и универсальность. Continue reading ‘Командные конструкции’ »
. .
Март 18, 2011, 15:29
Есть и экраны, распространяемые на все, что заключено внутри них. Это -- кавычки, двойные и одинарные: большая часть символов между ними утрачивает свое специальное значение, Continue reading ‘Тема о кавычках’ »
. .
Март 18, 2011, 15:27
Из приведённых примеров можно видеть, что метасимволы, образующие регулярные выражения, интерпретируются командной оболочкой особым образом, не так, как обычные алфавитно-цифровые символы, составляющие, скажем, имена файлов. Continue reading ‘Экранирование’ »
. .
Март 18, 2011, 15:26
Как известно, все пользователи-POSIX'ивисты должны быть в обязательном порядке привержены одному из семи смертных грехов. И грех этот -- леность, можно сказать, показатель профессиональной пригодности линуксоида. Continue reading ‘Регулярные выражения’ »
. .
Март 18, 2011, 14:48
Во всех современных "развитых" шеллах предусмотрены средства поиска команды в буфере истории -- простым перебором (обычно Meta+P -- назад и Meta+N -- вперед).
Впрочем, не смотря на громкое название, обычный поиск ничем практически не отличается от обычного пролистывания исторического списка курсорными стрелками. Что при обширной истории команд может быть весьма утомительным. И потому для ее облегчения предусмотрена такая интересная возможность, как наращиваемый поиск (incremental search) нужной команды в буфере истории по одному (или нескольким) из составляющих ее символов.
Выполняется инкрементный поиск так: после нажатия (при пустой командной строке) клавишной комбинации Control+R появляется предложение ввести алфавитный символ (или -- последовательность символов произвольной длины), заведомо входящий в состав требуемой команды:
$ bck-i-search: _
Ввод такого символа выведет последнюю из команд, его содержащих. При этом введенный символ будет отмечен знаком курсора. Он не обязан входить в имя команды, но может быть составляющим ее опций или аргументов (имени файла или пути к нему, например). Следующее нажатие Control+R зафиксирует курсор на предыдущем символе, в пределах этой же или более ранней по списку команды, и т.д. Однако вместо этого в строке поиска можно вводить дополнительные символы, детализирующие условия поиска команды (или -- ее опций и аргументов).
Процедуру поиска можно продолжать вплоть до достижения требуемого результата -- то есть нахождения той команды, которая нужна именно сейчас. Нажатие клавиши Enter в любой из этих моментов запускает найденную (то есть помещенную в командную строку) команду на исполнение, с завершением поиска. Поиск обрывается также и нажатием комбинации Control+C. Перед запуском найденная команда может быть отредактирована стандартными средствами -- с использованием управляющих последовательностей.
Некоторые шеллы допускают чрезвычайно изощренные средства обращения с буфером истории команд. Например, в командной оболочке zsh
предусмотрены способы извлечения из него отдельных командных "слов", входящих в сложные конструкции, о чем я расскажу в свое время.
. .
Март 18, 2011, 14:46
Возможности навигации и редактирования строки особенно ярко проявляются в сочетании с другой замечательной особенностью, предоставляемой командными оболочками -- доступом к истории команд. Continue reading ‘История команд’ »
. .