.
Редактирование файлов – отдельная важная тема. Существует большое число редакторов, работающих как в текстовом, так и в графическом режимах. Нас как администраторов в первую очередь будет интересовать редактор, который может работать в самых сложных условиях – без графического интерфейса, возможно, по сети, когда функциональные клавиши недоступны или работают неверно. Таких редакторов существует несколько, например >gnu nano
. Но, на наш взгляд, самый гарантированно работающий вариант, который, ко всему прочему установлен на 99% Linux-систем, – это редактор >vi
.
Его интерфейс на первый взгляд совсем не дружественен и не логичен, на деле же большинство его команд продуманы и удобны. Главное его преимущество – возможность работы практически в любых условиях и быстрое выполнение массовых операций (поиск, замена и т. п.). Он имеет два режима работы – командный и режим вставки. Изначально файл открывается в командном режиме. Для перемещения по тексту используйте клавиши курсора, если же они не работают, – клавиши '>h,j,k,l
' (посмотрите на клавиатуру и поймёте, почему такой странный набор). Клавиши >w
и >b
перемещают вперёд и назад на слово. И конечно, «главная» команда – выход с сохранением: '>:wq
' или просто '>ZZ
' (заглавными буквами). Выйти без сохранения можно командой '>:q!
'.
Полезные команды:
Таблица 11: некоторые клавиатурные команды vi
Режим вставки позволяет вписывать текст в нужную позицию. Выйти из него можно клавишей >
. Перед любой командой можно набрать число, тогда команда будет повторена это число раз. Например, '>10dd
' удалит 10 строк (и поместит их вместе в буфер, потом можно будет их вставить в другом месте командой '>p
'). Повтор команды вставки или замены повторит и ввод, например ввод '>cwNEW_WORD
' приведёт в замене слова после курсора на '>NEW_WORD
', а если потом переместить курсор на начало другого слова и нажать '.', то оно также будет заменено на '>NEW_WORD
'.
Из расширенных команд особенно удобна команда массовой замены '>s
'. Её синтаксис взят из команды >sed
. Перед командой можно указать через запятую диапазон строк, на которые она будет действовать, при этом '.' обозначает текущую строку, >$
– последнюю, а знак >+
указывает на то, что номер дан относительно текущей строки.
Например, заменить адрес old-cluster на new-supercomputer в 10 строках после текущей включительно можно, набрав: