Шрифт:
sleep 10; echo -e "Time's up\a"
То же самое можно выразить так:
sleep 10; echo "Time's up" $'\a'
8. Продвинутые приемы работы с клавиатурой
Я часто шутливо описываю Unix как «операционную систему для тех, кто любит печатать». Казалось бы, сам факт наличия командной строки доказывает это. Но в действительности пользователи командной строки не любят печатать слишком много. Зачем, если есть так много команд с короткими именами, таких как cp, ls, mv и rm?
Фактически одной из самых заветных целей командной строки является уменьшение объема ввода — возможность выполнить большую часть работы всего несколькими нажатиями клавиш. Другая цель — не позволить рукам оторваться от клавиатуры и коснуться мыши. В этой главе мы рассмотрим возможности bash, увеличивающие скорость и эффективность использования клавиатуры.
Здесь будут представлены следующие команды:
• clear — очищает экран.
• history — выводит содержимое истории команд.
Редактирование командной строки
Для поддержки операций редактирования командной строки bash использует библиотеку (коллекцию подпрограмм, которую могут использовать разные программы) с именем Readline. Мы уже видели некоторые из них. Например, нам знакомы клавиши со стрелками влево и вправо, перемещающие курсор, но существует еще целое множество других операций. Рассматривайте их как дополнительные инструменты, которые можно использовать в работе. Необязательно стремиться изучить их все, но многие из них весьма практичны. Выбирайте те, что вам понравятся.
ПРИМЕЧАНИЕ
Некоторые комбинации клавиш, описываемые далее (особенно те, что включают клавишу ALT), могут перехватываться графическим интерфейсом и использоваться для выполнения других функций. Однако все комбинации без исключения должны правильно работать в виртуальной консоли.
Перемещение курсора
В табл. 8.1 перечислены комбинации клавиш, используемые для перемещения курсора.
Таблица 8.1. Команды перемещения курсора
Клавиша
Действие
CTRL+A
Перемещает курсор в начало строки
CTRL+E
Перемещает курсор в конец строки
CTRL+F
Перемещает курсор на один символ вперед; действует так же, как клавиша со стрелкой вправо
CTRL+B
Перемещает курсор на один символ назад; действует так же, как клавиша со стрелкой влево
ALT+F
Перемещает курсор на одно слово вперед
ALT+B
Перемещает курсор на одно слово назад
CTRL+L
Очищает экран и устанавливает курсор в левый верхний угол. То же самое делает команда clear
Изменение текста
В табл. 8.2 перечислены комбинации клавиш для редактирования символов в командной строке.
Вырезание и вставка (удаление и возврат) текста
В документации к Readline используется термин killing and yanking (удаление и возврат), обозначающий операцию, которую обычно называют вырезанием и вставкой (cutting and pasting). В табл. 8.3 перечислены комбинации клавиш, выполняющие вырезание и вставку. Вырезанные элементы сохраняются в кольцевом буфере, который называется kill-ring (кольцо удалений).
Таблица 8.2. Команды редактирования текста
Клавиша
Действие
CTRL+D
Удаляет символ в позиции курсора
CTRL+T
Меняет местами два символа — в позиции курсора и предшествующий ему
ALT+T
Меняет местами два слова — в позиции курсора и предшествующий ему
ALT+L
Переводит в нижний регистр символы, начиная с символа в позиции курсора и до конца слова
ALT+U
Переводит в верхний регистр символы, начиная с символа в позиции курсора и до конца слова
Таблица 8.3. Команды вырезания и вставки
Клавиша
Действие
CTRL+K
Удаляет символы от позиции курсора до конца строки
CTRL+U
Удаляет символы от позиции курсора до начала строки
ALT+D
Удаляет символы от позиции курсора до конца текущего слова
ALT+BACKSPACE
Удаляет символы от позиции курсора до начала текущего слова. Если курсор находится в начале слова, удаляется предшествующее слово