Редактирование командной строки. История команд
Короткая сводка команд, позволяющих редактировать командную строку, а также вообще оказывать какое-то влияние на поведение оболочки с помощью клавиатуры.
Таблица 2.2. Клавиши редактирования командной строки | |
Клавиша | Описание реакции системы |
<Стрелка вправо> или <Ctrl>+<F> | Перемещение вправо по командной строке в пределах уже набранной цепочки символов плюс один символ справа (место для ввода следующего символа) |
<Стрелка влево> или <Ctrl>+<B> | Перемещение на один символ влево |
<Esc>+<F> | Перемещение на одно слово вправо |
<Esc>+<B> | Перемещение на одно слово влево |
<Home> или <Ctrl>+<A> | Перемещение в начало набранной цепочки символов |
<End> или <Ctrl>+<E> | Перемещение в начало/конец набранной цепочки символов |
<Del> или <Ctrl>+<D> | Удаление символа, на который показывает курсор |
<Backspase> | Удаление символа в позиции, предшествующей курсору |
<Ctrl>+<K> | Удалить правую часть строки, начиная с символа, на который указывает курсор |
<Ctrl>+<U> | Удалить левую часть строки, включая символ, который находится слева от курсора |
<Enter> или <Ctrl>+<M> | Запуск на выполнение команды, определяемой набранной цепочкой символов |
<Ctrl>+<L> | Очистить экран и поместить текущую команду в верхней строке экрана |
<Ctrl>+<T> | Поменять местами два символа: символ, на который показывает курсор, и символ слева от курсора, затем, курсор переместить на один символ вправо |
<Esc>+<T> | Поменять местами два слова: слово, на которое указывает курсор и слово слева от первого |
<Ctrl>+<K> | Вырезать часть строки от текущей позиции курсора до конца строки (вырезанная часть строки сохраняется в буфере, ее можно вставить в другое место строки) |
<Esc>+<D> | Вырезать часть строки от текущей позиции курсора до конца текущего слова (если курсор указывает на пробел между словами, то вырезается все слово справа от курсора) |
<Esc>+<Del> | Вырезать часть строки от текущей позиции курсора до начала текущего слова (если курсор указывает на пробел между словами, то вырезается все слово слева от курсора) |
<Ctrl>+<W> | Вырезать часть строки от текущей позиции курсора до предыдущего пробела |
<Ctrl>+<Y> | Вставить последний вырезанный текст в позицию курсора |
<Esc>+<C> | Символ, на который указывает курсор, заменить на тот же, но заглавный, а курсор переместить на первый пробел справа от текущего слова |
<Esc>+<U> | Сделать символы данного слова заглавными, начиная с символа, на который указывает курсор, а курсор установить на пробел справа от слова |
<Esc>+<L> | Превратить символы, начиная с символа, на который указывает курсор, до конца данного слова в прописные (маленькие) буквы, а курсор установить на пробел справа от слова |
<Shift>+<PgUp> <Shift>+<PgDown> | Эти команды позволяют просмотреть несколько страниц экранного вывода (количество зависит от размера видеопамяти); полезны в тех случаях, когда та или иная команда выводит на экран очень много информации, быстро пробегающей по экрану и как бы исчезающей для пользователя; как видите, эта информация не пропадает |
<Ctrl>+<C> | Прервать выполнение запущенной команды |
<Ctrl>+<D> | Выход из оболочки bash |
Заметим, что оболочка bash имеет встроенную подпрограмму, предназначенную для облегчения ввода команд в командной строке. Эта подпрограмма вызывается по клавише <Tab> после того, как вы уже ввели некоторое число символов. Если эти символы являются началом названия одной из стандартных команд, которые известны оболочке, то возможны два варианта реакции оболочки на нажатие клавиши <Tab>. Если по введенным символам команда определяется однозначно, оболочка просто добавляет окончание команды в командную строку. Если однозначно восстановить имя команды по введенным символам невозможно, то выдается список возможных вариантов продолжения для того, чтобы пользователь мог ввести еще несколько символов, позволяющих однозначно завершить ввод команды нажатием клавиши <Tab>.
Если ввести символ табуляции после того, как введена одна из команд и пробел, оболочка предполагает, что вы ищете имя файла, который должен вводиться как параметр команды, и выдает в качестве подсказки список файлов текущего каталога. Если же достаточная часть имени файла введена, то заканчивается ввод этого имени в командную строку. Аналогичным образом можно пытаться угадывать окончания переменных окружения, если вместо клавиши <Tab> воспользоваться комбинацией <Esc>+<$>.
Задание 12.Вызовите подпрограмму, предназначенную для облегчения ввода команд в командной строке. Вызовите ее с разными вариантами в командной строке.
Для практической работы с оболочкой также полезно знать, что оболочка запоминает некоторое число введенных команд и позволяет вызывать их путем выбора из списка - так называемой истории команд. Историю команд можно просмотреть, введя в командной строке history (здесь вы сможете воспользоваться комбинациями клавиш <Shift>+<PgUp> и <Shift>+<PgDown>, чтобы просмотреть то, что выдаст эта команда). История команд сохраняется в файле, определяемом переменной HISTFILE (обычно $HOME/.bash_history). Для работы с историей команд в оболочке bash используются следующие комбинации клавиш.
Таблица 2.3. Клавиши для управления историей команд | |
Клавиша | Описание реакции системы |
<?> или <Ctrl>+<P> | Переход к предыдущей команде в списке (движение назад по списку) |
<?> или <Ctrl>+<n> | Переход к следующей команде в списке (движение вперед по списку) |
<PgUp> | Переход к (вызов в командную строку) самой первой команде, сохраненной в истории команд |
<!>, <N> | Выполняется (без нажатия клавиши <Enter>) n-ная команда из списка истории команд |
<!>, <->, <N> | Выполняется n-ая от конца списка команда |
<!>, строка символов | Выполняется команда, имя которой начинается на строку символов (поиск нужной команды осуществляется движением в обратном порядке от конца файла истории и выполняется первая попавшаяся команда, которая начинается на строку символов) |
<Ctrl>+<O> | То же что нажатие клавиши <Enter>, затем отображается очередная команда из файла истории |
Задание 13. Выполните команды, используя клавиши управления историей команд.