Archive for the ‘Субпроекты’ Category.

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

Простейшая командная конструкция -- это выполнение команды в фоновом режиме, что вызывается вводом символа амперсанда после списка опций и (или аргументов): 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 ‘История команд’ »

. .

Управляющие последовательности

Основные управляющиеся клавиши, которые используются в таких последовательностях (и имеются на клавиатурах почти любых машин -- как говорят в таких случаях, в любых типах терминалов) -- это клавиши Control и Meta. Continue reading ‘Управляющие последовательности’ »

. .

Навигация и редактирование

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

. .

Переменные

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

. .

Псевдонимы

Вернемся на минуту к команде ls . У читателя может возникнуть вполне резонный вопрос: а если я всегда хочу видеть ее вывод в цвете, да еще с символическим различением типов файлов, да еще в "длинном" формате? Ну и без вывода скрытых файлов мне никак не прожить. И что же -- мне каждый раз вводить кучу опций, чтобы получить столь элементарный эффект? Continue reading ‘Псевдонимы’ »

. .

Кое-что об исключениях

Итак, типичная форма POSIX-команды в обобщенном виде выглядит следующим образом: Continue reading ‘Кое-что об исключениях’ »

. .

Пути к файлам

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

. .

Аргументы

Таким образом мы подобрались к понятию аргументов командной директивы. Аргументами определяется, как правило, объект (или объекты) действия команды. В большинстве случаев в качестве аргументов команд выступают имена файлов и (или) пути к ним. Continue reading ‘Аргументы’ »

. .

Пример: опции команды ls

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

. .

Опции

Как уже говорилось, указания имени достаточно для выполнения некоторых команд. Типичный пример -- команда ls (от list), предназначенная для просмотра имен файлов (строго говоря, содержимого каталогов). Данная без аргументов, она выводит список имен файлов, составляющих текущий каталог, представленный в некоторой форме по умолчанию, например, в домашнем каталоге пользователя это будет выглядеть примерно так: Continue reading ‘Опции’ »

. .

Автодополнение

Для правильного применения команд, конечно же, нужно знать их имена и назначение. Однако нас никто не заставляет напрягать пальцы вводом имени команды полностью. Потому что тут на помощь приходит великий метод автодополнения. Continue reading ‘Автодополнение’ »

. .

Командная строка

Основой командного интерфейса является командная строка, начинающаяся с приглашения для ввода. Далее он будет обозначаться милым сердцу россиянина символом длинного зеленого друга -- $, если речь идёт о сеансе обычного пользователя, или символом решётки -- #, для приглашения строки в сеансе администратора. Continue reading ‘Командная строка’ »

. .

Введение в CLI

Мир FOSS не обделён визуальными, или графическими (по нашему, по бразильскому, -- Гуёвым) интерфейсами. Однако роль CLI от этого меньше не становится. Ибо CLI а) исконен в Unix'ах, б) универсален, и в) представляет собой базу, для которой GUI всякого рода являют лишь оболочку. Continue reading ‘Введение в CLI’ »

. .