Литмир - Электронная Библиотека
Содержание  
A
A

set | less

и вы увидите их. Однако не все дистрибутивы включают эти функции по умолчанию.

Использование истории

Как рассказывалось в главе 1, bash поддерживает историю вводившихся команд. Этот список команд хранится в домашнем каталоге, в файле с именем .bash_history. Механизм истории помогает уменьшить объем ручного ввода, особенно в сочетании с командами редактирования командной строки.

Поиск в истории

Просмотреть содержимое истории можно в любой момент с помощью команды:

[me@linuxbox ~]$ history | less

По умолчанию bash хранит последние 500 введенных команд. Как изменить это значение, мы узнаем в главе 11. А теперь представим, что вам понадобилось найти команды, использовавшиеся для получения списка содержимого /usr/bin. Вот один из возможных способов:

[me@linuxbox ~]$ history | grep /usr/bin

А теперь представим, что среди результатов нужно выбрать запись с интересующей вас командой:

88 ls -l /usr/bin > ls-output.txt

Здесь число 88 — это порядковый номер записи команды в списке истории. Зная это число, можно воспользоваться еще одной разновидностью подстановки, которая называется подстановкой записей истории (history expansion). Для этого введите:

[me@linuxbox ~]$ !88

и bash заменит !88 содержимым 88-й записи в списке истории. Подробнее об этой форме подстановки записей истории мы поговорим чуть ниже.

bash также дает возможность выполнять поступательный поиск в списке истории. Это означает, что bash может выполнять поиск в списке истории по мере ввода символов, уточняя результаты с вводом каждого нового символа. Чтобы запустить поступательный поиск, нажмите комбинацию CTRL+R и введите искомый текст. Закончив поиск, нажмите ENTER, чтобы выполнить команду, или CTRL+J, чтобы скопировать запись из списка истории в текущую командную строку. Чтобы найти следующее вхождение текста (переместиться «вверх» по списку истории), нажмите CTRL+R еще раз. Чтобы завершить поиск, нажмите CTRL+G или CTRL+C. Следующий пример демонстрирует, как действует поиск:

[me@linuxbox ~]$

Первое нажатие комбинации CTRL+R:

(reverse-i-search)`':

Приглашение к вводу изменится, показывая, что выполняется поступательный поиск в обратном порядке. Под словами «в обратном порядке» подразумевается, что поиск выполняется от «текущего момента» до некоторого момента в прошлом. Далее мы начинаем ввод искомого текста, в данном примере /usr/bin:

(reverse-i-search)`/usr/bin': ls -l /usr/bin > ls-output.txt

Механизм поиска сразу же возвращает результат. Теперь, чтобы выполнить найденную команду, необходимо нажать ENTER, или вы можете скопировать команду в командную строку для дальнейшего редактирования, нажав CTRL+J. Давайте скопируем ее. Нажмите CTRL+J:

[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt

Механизм поиска вернет управление, командная строка заполнится и будет готова для выполнения!

В табл. 8.5 перечислены некоторые комбинации клавиш, используемые для манипуляций со списком истории команд.

Таблица 8.5. Команды для работы с историей

Клавиша

Действие

CTRL+P

Переход к предыдущей записи в истории. Действует так же, как клавиша со стрелкой вверх

CTRL+N

Переход к следующей записи в истории. Действует так же, как клавиша со стрелкой вниз

ALT+<

Переход в начало (к первой записи) списка истории

ALT+>

Переход в конец (к последней записи) списка истории

CTRL+R

Инкрементальный поиск в обратном порядке. Поиск выполняется поступательно, от текущей записи вверх по списку истории

ALT+P

Поиск в обратном порядке, не инкрементальный. При использовании этого вида поиска введите искомую строку и нажмите ENTER, и только после этого будет выполнен фактический поиск

ALT+N

Поиск в прямом порядке, не поступательный

CTRL+O

Выполнить текущую команду в списке истории и перейти к следующей. Эту комбинацию удобно использовать, если требуется повторно выполнить последовательность команд из списка истории

Подстановка записей истории

Командная оболочка поддерживает специализированный вид подстановки — подстановку записей из списка истории при использовании символа !. Мы уже видели, как восклицательный знак, сопровождаемый числом, замещается записью из списка истории. Этот вид подстановки имеет несколько разновидностей (табл. 8.6).

Не используйте формы !строка и !?строка, если только вы абсолютно точно не знаете содержимого записей в списке истории.

Механизм подстановки записей истории поддерживает также другие комбинации, но эта тема становится слишком запутанной, и мы не станем перегружать себя лишней информацией. Желающие смогут обратиться к странице справочного руководства (man) для bash, в разделе «HISTORY EXPANSION». Загляните туда!

Таблица 8.6. Команды механизма подстановки записей истории

Последовательность

Действие

!!

Повторяет последнюю команду. Проще, пожалуй, нажать клавишу со стрелкой вверх и ENTER

!число

Повторяет команду из записи с указанным номером

!строка

Повторяет последнюю команду в списке истории, начинающуюся с указанной строки

!?строка

Повторяет последнюю команду в списке истории, содержащую указанную строку

script

В дополнение к истории команд в bash большинство дистрибутивов Linux включают программу script, которую можно использовать для записи в файлы целых сеансов работы с командной оболочкой. Базовый синтаксис команды:

script [файл]

где файл — это имя файла для записи. Если файл не будет указан, сохранение сеанса будет произведено в файл typescript. Полное описание параметров и возможностей программы можно найти на странице справочного руководства (man) для script.

Заключительное замечание

В этой главе мы рассмотрели несколько приемов работы с клавиатурой, поддерживаемых командной оболочкой, с целью помочь истинным фанатам клавиатуры уменьшить объем работы. Я думаю, что потом, когда вы сроднитесь с командной строкой, вы сможете обратиться к этой главе, чтобы вспомнить описанные здесь приемы. А пока будем считать их необязательными, но потенциально полезными.

9. Привилегии

Операционные системы, следующие традициям Unix, отличаются от систем, следующих традициям MS-DOS, тем, что являются не только многозадачными, но и многопользовательскими.

Что это означает на самом деле? Это означает, что компьютером могут одновременно пользоваться несколько человек. Несмотря на то что обычно компьютер имеет всего одну клавиатуру и монитор, это обстоятельство не мешает совместному пользованию. Например, если компьютер подключен к локальной сети или к Интернету, удаленные пользователи смогут зайти на него через ssh (secure shell — безопасная командная оболочка) и выполнять операции. Фактически удаленные пользователи могут запускать приложения с графическим интерфейсом и получать изображение на удаленном дисплее. X Window System поддерживает такую возможность изначально.

Поддержка многопользовательского режима работы — не недавнее «изобретение» Linux, а возможность, глубоко внедренная в архитектуру операционной системы. Учитывая окружение, в котором создавалась система Unix, это имело определенный смысл. В те времена, когда компьютеры еще не были «персональными», они были большими и дорогими. Типичная компьютерная система университета, например, состояла из большого центрального компьютера в одном здании и терминалов, разбросанных по всему университетскому городку и соединенных с большим центральным компьютером. Компьютер мог одновременно обслуживать множество пользователей.

21
{"b":"568756","o":1}