Командная строка Linux. Полное руководство - [27]
[me@linuxbox ~]$ mv bad\&filename good_filename
Чтобы включить сам экранирующий символ, его также нужно экранировать, введя \\. Имейте в виду, что внутри одиночных кавычек обратный слеш теряет свое специальное значение и интерпретируется как обычный символ.
Заключительное замечание
По мере накопления опыта использования командной оболочки мы все чаще будем использовать возможности подстановки и экранирования, поэтому важно хорошо понимать, как они работают. Фактически можно смело утверждать, что эти два механизма являются наиболее важными для изучения аспектами командной оболочки. Без надлежащего понимания того, как действует подстановка, командная оболочка будет оставаться источником непонимания и домыслов, при этом многие ее возможности останутся неиспользованными.
Обратный слеш используется не только в роли экранирующего символа, но и как часть специальных символов, которые называют управляющими кодами (control codes). Первые 32 символа в схеме кодирования ASCII использовались для передачи различных команд в устройствах, таких как телетайп. Некоторые из этих кодов хорошо знакомы вам (табуляция, забой, перевод строки и возврат каретки), тогда как другие — нет (пустой символ, конец передачи и подтверждение), как показано в табл. 7.2.
Таблица 7.2. Управляющие последовательности
Управляющая последовательность | Значение |
\a | Звонок («предупреждение» — заставляет компьютер подать звуковой сигнал) |
\b | Забой (backspace) |
\n | Новая строка (в Unix-подобных системах этот символ выполняет перевод строки) |
\r | Возврат каретки |
\t | Табуляция |
В этой таблице перечислены некоторые наиболее известные управляющие последовательности. Идея использования обратного слеша зародилась в языке программирования C и была заимствована многими другими языками, включая язык командной оболочки. Параметр -e команды echo включает интерпретацию управляющих последовательностей. Их можно также заключать в конструкцию $' '. Ниже демонстрируется использование команды sleep, простой программы, которая всего лишь ждет указанное число секунд и завершается, для создания элементарного таймера.
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. Команды редактирования текста