Достраивание и алиасы

Что ещё можно вспомнить из команд редактирования? Лектор не знает, есть ли это в баше, но в zsh есть фича, которая позволяет сделать inplace file name generation. Для чего это нужно: чтобы ручками подредактировать, например, когда мы хотим применить какую-то команду ко всем файлам,оканчивающимся на .c, кроме одного. Тогда после раскрытия шаблона *.c можно из него его удалить.

Ещё одна главная вещь: достраивание. Допустим, мы хотим открыть файл /usr/share/doc/voodoo/README. В командной строчке никому не хочется писать имя файла длиной в пять шагов. поэтому, вместо этого можно использовать шаблон, который сам по себе короче, но раскроется в итоге в один этот файл: /u*/sh*/doc/vo*/RE*. Но какая проблема с таким filename generation? Проблемы две: строчка /u*/sh*/doc/vo*/RE* читается намноого хуже. Второе --- не факт, что этому шаблону удовлетворяет всего один файл. Но помнить имена всех файлов во всех каталогах человеку невозможно. Поэтому неплохо бы процесс раскрытия шаблона контролировать. Делается это следующим образом: пока набираем, нажали таб и шелл в этом месте достроил. Это то самое, о чём всегда мечтали. При этом процесс контроллируемый и последовательный. Это резко отличается от того, когда написали шаблон и посмотрели, что получается. Кроме того, могут быть ветвления. Эта проблема процедурой достраивания также решается. Если упираетесь в ветвление, например, если в /usr/share/doc есть каталоги voodoo и voobla, то он достроит voo и пискнет. А дальше, в зависимости от крутизны шелла, могут быть варианты. Может быть сразу начнёт перебирать варианты, может после второго шага, может список показать. Так или иначе, ответственность за набираемое переваливается на пользователя, ибо думать должен человек, а не машина. И человек уже решает, что строить дальше.

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

Достраивание контекстнозависимое, например в случае с echo $PA будет работать подстановка имени переменных. Возможно, в баше есть другие вариант достраивания. Но в zsh оно устроено так, что святых выноси. Для польз. это выглядит след. образом: достраивание в zsh настолько контекстно, что он разбирается в том, к какой команде производится достраивание.

Если некую задачу по написанию строки можно доверить компьютеру, можно доверить компьютеру.

Лектор не знает, рассказывал ли это Наану, но в виме это тоже есть. Там есть 6 или 7 разных достраиваний

Что ещё предусм. в шелле на предмет редактирования командной строки.

Есть ещё vi-mode, помогает при извращённом терминале.

Ещё, чем в полож. сторону отличается zsh от bash. В readline нельзя привязать команду ридлайна не к конкретной esc-последовательности, а к терминфо. А в zsh используется свой line editor, и в bindkey это можно сделать.

 bindkey `echo tc kP` prev-word

Алиасы

Это шеллскрипты для бедных. Возможность определить некий укороченный вариант команды. Например

 alias rm='rm -i'

Необязательно переопределять команду:

 alias l='ls -FAC'

Рекурсивного подставления в алиасе не происходит, но происходит вложенная подстановка

Заменяется слово. Фактически, добавляете новую команду.

Стартовые сценарии

При старте было бы неплохо вписать алиасы, настр. переменых, и так далее. У каждого шелла есть набор сценариев, которые выполн. по умолчанию.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

MaximByshevskiKonopko, VladimirLysikov, VsevolodKrishchenko


CategoryLectures CategoryCmc CategoryUneex

LecturesCMC/LinuxShell2008/08/02CompletionAliases (last edited 2008-07-24 22:11:45 by eSyr)