Командный режим и режим вставки
Редактор vi открывается в командном режиме. В командном режиме вы можете вводить команды. Некоторые команды приведу вас в режим вставки. В режиме вставки вы можете ввести текст. Клавиша выхода вернет вас в командный режим.
Таблица 18.1. Работа в командном режиме
key | action |
Esc | Задает vi(m) в командном режиме |
Печать (a A i I o O)
Разница между A i I o и O это место, откуда вы можете начать печатать. С «а» вы начнете печатать после текущего символа, а с «А» начнете в конце текущей строки. С «i» вы начнете печатать до текущего символа, а с «I» начнете в начале текущей строки. С «о» вы начнете печатать с новой строчки после текущей строки и с «O» вы начнете печатать на новой строке до текущей строки.
Таблица 18.2. переход в режим вставки
command | action |
a | вы начнете печатать после текущего символа |
A | вы начнете печатать начнете в конце текущей строки |
i | вы начнете печатать до текущего символа |
I | вы начнете печатать начнете в начале текущей строки |
o | вы начнете печатать с новой строки после текущей строчки |
O | вы начнете печатать на новой строке до текущей строки |
Замена и удаление символов (r x X)
В командном режиме (это не сложно нажать кнопку esc несколько раз), вы можете использовать х, чтобы удалить текущий символ. X (или shift+х) удаляет символ слева от курсора. Кроме того, когда вы в командном режиме, вы можете использовать клавишу r, это замена одного символа. Ключ r перенесет вас в режим вставки только одним нажатием клавиши, и вернет вас немедленно в командный режим.
|
|
Таблица 18.3. Замена и удаление
command | action |
x | Удаляет символ до курсора |
X | Удаляет символ после курсора |
r | Заменяет символ до курсора |
p | Вставка после курсора (здесь последний удаленный символ) |
xp | Замена одного символа на другой |
Отменить и повторить (u .)
Находясь в командном режиме, вы можете отменить свои ошибки с помощью команды «u». Вы можете повторить свою ошибку второй раз с помощью «.» (другими словами «.» повторит вашу последнюю команду).
Таблица 18.4. Отменить и повторить
command | action |
u | Отменяет последнее действие |
. | Повторяет последнее действие |
Вырезать, копировать и вставить строчки (dd yy p P)
В командном режиме, dd вырежет текущую строку. уу скопирует текущую строку. Вы можете вставить последние скопированные или вырезанные строки после (р) или до (Р) текущей строки.
Таблица 18.5. Вырезать, копировать и вставить строчки
command | action |
dd | Вырежет текущую строку |
yy | Скопирует текущую строку |
p | Вставить после текущей строчки |
P | Вставить до текущей строчки |
|
|
Вырезать, копировать и вставить строчки (3dd 2yy)
В командном режиме, перед вводом dd или уу, вы можете ввести номер, это повторит команду несколько раз. Таким образом, 5dd вырежет 5 линий и 4yy скопирует (yank) 4 строки. Это будет отмечено в vi в нижнем левом углу, как "4 line yanked".
Таблица 18.6. Вырезать, копировать и вставить строчки
command | action |
3dd | Вырежет 3 строки |
4yy | Скопирует 4 строки |
18.7. Начало и конец строки (0 или ^ и $)
Находясь в командном режиме, «0» или «^» (домик, каретка) перенесут вас в начало строки, в то время как «$» поставит курсор в конец текущей строки. Вы можете использовать «0» и «$» с командой «d», d0 удалит все символы от начала строки до текущего символа. Также d$ удалит все от текущего символа до конца строки. Похожим образом y0 и y$ скопируют начало и конец текущей строки.
Таблица 18.7 . Начало и конец строки
command | action |
0 | Перенесет вас в начало строки |
^ | Перенесет вас в начало строки |
$ | Перенесет вас в конец строки |
d0 | Удалит все символы от начала строки до текущего символа |
d$ | Удалит все от текущего символа до конца строки |
Объединения двух и более линий (J)
Находясь в командном режиме, нажмите J,выдобавите следующую строку после текущей строчки. С помощью yypвыдублируете строку, а сddpпоменяете строки местами.
|
|
Таблица 18.8. Объединения двух линий
command | action |
J | Добавить строку после текущей строки |
yyp | Дублирует текущую строку |
ddp | Поменять строки местами |
Слова (w b)
Находясь в командном режиме, с помощью wвы переместись на следующее слово, а сbна предыдущее слово.w и b можно также использовать с d и y чтобы копировать и вставлять слова (dw db yw yb).
Таблица 18.9. Слова
command | action |
w | Перенесет вас к следующему слову |
b | Перенесет вас к предыдущему слову |
3w | Перенесет вас на 3 слова вперед |
dw | Удалит одно слово |
yw | Скопирует одно слово |
5yb | Скопирует 5 предыдущих слов |
7dw | Удалит 7 следующих слов |
18.10. Сохранить (или нет) и выход (:w :q :q! )
Нажмите «:» это откроет вам инструкции по vi (технически говоря, ввод двоеточия откроет вам exeditor). :wзапишет (сохранит) файл, :qвыйти из неизмененного файла без сохранения, и :q! выйти из vi без изменений. :wqсохранить и выйти, тоже самое делает команда ZZв командном режиме.
Таблица 18.10. Сохранить и выйти vi
command | action |
:w | Запишет (сохранит) файл |
:w fname | Сохранит как fname |
:q | Выход |
:wq | Сохранить и выйти |
ZZ | Сохранить и выйти |
:q! | Выход без изменений |
:w! | Сохранить в нередактируемый файл |
|
|
Последняя команда немного особенная. С :w! viпопытается при помощи chmodполучить права на запись (работает, если вы владелец) и использует chmod,чтобы вернуть права обратно при удачной записи. Это должно всегда работать в корне системы (и файловая система доступна для записи).
Поиск (/ ?)
Находясь в командном режиме, набирание «/» позволит вам искать в vi строки (может быть обычным выражением). Набрав /foo, вы начнете поиск после строчки foo и
набрав ?bar начнете поиск перед строчкой bar.
Таблица 18.11. Поиск (/ ?)
command | action |
/string | Поиск после строчки string |
?string | Поиск до строчки string |
n | Перейти к следующему вводу поиска |
/^string | Начать поиск string с начала строки |
/string$ | Начать поиск string с конца строки |
/br[aeio]l | Поиск bral brel bril и brol |
/\<he\> | Искать слово he(исключая here и the) |
18.12. Замена ( :1,$ s/foo/bar/g )
Заменяет все входящие строчки с foo на bar, для начала переключитесь на ex mode с помощью «:». Затем скажите vi какие строки вы будете использовать, к примеру, 1,$ заменит все строчки от первой и до последней. Вы можете написать 1,5, это заменит 5 первых строчек. s/foo/bar/g заменит все входящие foo на bar.
Таблица 18.12. Замена
command | action |
:4,8 s/foo/bar/g | Заменить все foo на bar с 4 по 8 строчки |
:1,$ s/foo/bar/g | Заменить все foo на bar по всем строчкам |
18.13. Чтение файлов (:r :r !cmd)
Находясь в командном режиме, :r foo прочитает файл с именем foo, :r !foo выполнит команду foo. Результат поместится в текущее местоположение. Таким образом :r !ls поместит листинг текущего каталога в ваш текстовый файл.
Таблица 18.13. Чтение файлов
command | action |
:r fname | (Чтение) файла fname и вставка содержимого |
:r !cmd | Выполнить и вывести cmd |
Текстовые буферы
В vi хранится 36 буферов для хранения текста. Вы можете использовать их с помощью символа «”»
Таблица 18.14. Текстовые буферы
command | action |
"add | Удаление текущей строчки и копирование ее в буфер а |
"g7yy | Скопировать 7 строчек в буфер g |
"ap | Вставка текста из буфера а |
Несколько файлов
Вы можете редактировать несколько файлов с vi. Вот несколько советов.
Таблица 18.15. Несколько файлов
command | action |
vi file1 file2 file3 | Выбрать для редактирования 3 файла |
:args | Списки файлов и пометки на активных файлах |
:n | Начать редактировать следующий файл |
:e | Переключиться на следующий отредактированный файл |
:rew | Переместить файл указатель на первый файл |
Аббревиатуры
С помощью :abвы можете создавать аббревиатуры в vi. Используйте :unna,чтобы убрать аббревиатуру.
Таблица 18.16. Аббревиатуры
command | action |
:ab str long string | Аббревиатура strдля 'long string' |
:una str | Убрать аббревиатуру str |
Горячие клавиши
Как и для аббревиатур, вы можете использовать горячие клавиши с :map для командного режима и :map! для режима вставки.
Этот пример показывает, как установить на F6 функциональную клавишу для переключения между set numberи set nonumber. <bar> разделяет две команды, set number!меняет состояние и set number? сообщает о текущем состоянии.
:map <F6> :set number!<bar>set number?<CR>
Настройка параметров
Некоторые параметры, которые можно настроить в vim.
:set number ( also try :se nu )
:set nonumber
:syntax on
:syntax off
:set all (list all options)
:set tabstop=8
:set tx (CR/LF style endings)
:set notx
Вы можете настроить следующие параметры (и многое другое) в /.vimrcдля vim или ~/.exrcдля vi.
paul@barry:~$ cat ~/.vimrc
set number
set tabstop=8
set text
map <F6> :set number!<bar>set number?<CR>
paul@barry:~$
Часть VI. Создание скриптов
Оболочки, такие как Bash и Korn имеют поддержку программных конструкций, которые могут быть сохранены в виде скриптов. Эти скрипты в свою очередь, стали командами оболочки. Многие команды в Linux, это скрипты. Скрипты профиля пользователя выполняются, когда пользователь входит в систему и, тогда, выполняются скрипты инициализации, когда daemon остановлен или запущен. Это означает, что системному администратору необходимы базовые знания скриптов, чтобы понять, как запускаются сервера и приложения, обновления, модернизация, исправления, поддерживание, настройки и удаление, а также понять, как построена среда пользователя. Целью этой главы является дать вам достаточно информации, чтобы иметь возможность читать и понимать скрипты. Чтобы не стать создателем сложных скриптов.
Предпосылки
Вам следует прочитать и понять Часть III расширения оболочки и Часть IV Пайпы и командыдо того, как начнете читать эту главу.
Hello World
Как и в каждом курсе программирования, мы начнем с простого скрипта hello_world. Следующий скрипт выведет Hello World.
echo Hello World
После создания этого простого скрипта в vi или echo, вам нужно прописать chmod +x
hello_world,чтобы сделать скрипт исполняемым. И если вы не добавляете скрипты к указанию пути, вы должны ввести путь к скрипту для оболочки, чтобы вы могли найти его.
[paul@RHEL4a ~]$ echo echo Hello World > hello_world
[paul@RHEL4a ~]$ chmod +x hello_world
[paul@RHEL4a ~]$ ./hello_world
Hello World
[paul@RHEL4a ~]$
She-bang
Чуть-чуть улучшим наш пример, поставив #!/bin/bash на первой строке скрипта. #! называется she-bang (иногда называется sha-bang), где she-bang -первые два символа сценария.
#!/bin/bash
echo Hello World
Вы никогда не можете быть уверены, в какой оболочке работает пользователь. Скрипт, который работает безупречно в Bash, может не работать в ksh, csh, или dash. Задав оболочку для запуска сценария в определенной оболочке, вы можете начать свой скрипт с she-bangизатем запустить оболочку. Это скрипт будет работать в оболочке Bash.
#!/bin/bash
echo -n hello
echo A bash subshell `echo -n hello`
Этот скрипт будет работать в оболочке Korn (если /bin/kshне жесткая ссылка на/bin/bash). /etc/shellsфайл содержащий список оболочек вашей системы.
#!/bin/ksh
echo -n hello
echo a Korn subshell `echo -n hello`
Комментарии
Ещё чуть-чуть улучшим наш пример и добавим в него комментарии.
#!/bin/bash
#
# Hello World Script
#
echo Hello World
Переменные
Вот простой пример переменной в скрипте.
#!/bin/bash
#
# simple variable in script
#
var1=4
echo var1 = $var1
Скрипты могут содержать переменные, но так как эти скрипты выполняются в своей оболочке, то переменные, не доживают до конца сценария.
[paul@RHEL4a ~]$ echo $var1
[paul@RHEL4a ~]$ ./vars
var1 = 4
[paul@RHEL4a ~]$ echo $var1
[paul@RHEL4a ~]$
Источники скриптов
К счастью, вы можете заставить запустить скрипт в одной оболочке, это называется script sourcing.
[paul@RHEL4a ~]$ source ./vars
var1 = 4
[paul@RHEL4a ~]$ echo $var1
4
[paul@RHEL4a ~]$
Приведенный выше пример идентичен нижнему.
[paul@RHEL4a ~]$ . ./vars
var1 = 4
[paul@RHEL4a ~]$ echo $var1
4
[paul@RHEL4a ~]$
Дата добавления: 2018-04-05; просмотров: 456; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!