Шрифт:
Интервал:
Закладка:
Последние версии bash реализуют механизм программируемого дополнения. Программируемое дополнение дает возможность добавлять дополнительные правила. Обычно это делается с целью добавить поддержку определенных приложений. Например, можно добавить дополнение списка параметров команды или файлов определенного типа, поддерживаемых приложением. В Ubuntu определено огромное множество таких правил. Программируемое дополнение реализуется посредством функций командной оболочки — небольших мини-сценариев, о которых будет рассказываться в следующих главах. Если вам любопытно, попробуйте выполнить команду
set | less
и вы увидите их. Однако не все дистрибутивы включают эти функции по умолчанию.
Использование истории
Как рассказывалось в главе 1, bash поддерживает историю вводившихся команд. Этот список команд хранится в домашнем каталоге, в файле с именем .bash_history. Механизм истории помогает уменьшить объем ручного ввода, особенно в сочетании с командами редактирования командной строки.
Поиск в истории
Просмотреть содержимое истории можно в любой момент с помощью команды:
[[email protected] ~]$ history | less
По умолчанию bash хранит последние 500 введенных команд. Как изменить это значение, мы узнаем в главе 11. А теперь представим, что вам понадобилось найти команды, использовавшиеся для получения списка содержимого /usr/bin. Вот один из возможных способов:
[[email protected] ~]$ history | grep /usr/bin
А теперь представим, что среди результатов нужно выбрать запись с интересующей вас командой:
88 ls -l /usr/bin > ls-output.txt
Здесь число 88 — это порядковый номер записи команды в списке истории. Зная это число, можно воспользоваться еще одной разновидностью подстановки, которая называется подстановкой записей истории (history expansion). Для этого введите:
[[email protected] ~]$ !88
и bash заменит !88 содержимым 88-й записи в списке истории. Подробнее об этой форме подстановки записей истории мы поговорим чуть ниже.
bash также дает возможность выполнять поступательный поиск в списке истории. Это означает, что bash может выполнять поиск в списке истории по мере ввода символов, уточняя результаты с вводом каждого нового символа. Чтобы запустить поступательный поиск, нажмите комбинацию CTRL+R и введите искомый текст. Закончив поиск, нажмите ENTER, чтобы выполнить команду, или CTRL+J, чтобы скопировать запись из списка истории в текущую командную строку. Чтобы найти следующее вхождение текста (переместиться «вверх» по списку истории), нажмите CTRL+R еще раз. Чтобы завершить поиск, нажмите CTRL+G или CTRL+C. Следующий пример демонстрирует, как действует поиск:
[[email protected] ~]$
Первое нажатие комбинации CTRL+R:
(reverse-i-search)`':
Приглашение к вводу изменится, показывая, что выполняется поступательный поиск в обратном порядке. Под словами «в обратном порядке» подразумевается, что поиск выполняется от «текущего момента» до некоторого момента в прошлом. Далее мы начинаем ввод искомого текста, в данном примере /usr/bin:
(reverse-i-search)`/usr/bin': ls -l /usr/bin > ls-output.txt
Механизм поиска сразу же возвращает результат. Теперь, чтобы выполнить найденную команду, необходимо нажать ENTER, или вы можете скопировать команду в командную строку для дальнейшего редактирования, нажав CTRL+J. Давайте скопируем ее. Нажмите CTRL+J:
[[email protected] ~]$ 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, это имело определенный смысл. В те времена, когда компьютеры еще не были «персональными», они были большими и дорогими. Типичная компьютерная система университета, например, состояла из большого центрального компьютера в одном здании и терминалов, разбросанных по всему университетскому городку и соединенных с большим центральным компьютером. Компьютер мог одновременно обслуживать множество пользователей.
Чтобы подобная возможность имела практическую ценность, необходим способ определенной «изоляции» пользователей друг от друга. В конце концов, действия рядового пользователя не должны приводить к аварийному завершению работы компьютера, и ни один пользователь не должен иметь возможность вносить изменения в файлы, принадлежащие другому пользователю.
В данной главе мы рассмотрим эту важную сторону безопасности системы и познакомимся со следующими командами:
- Цифровой журнал «Компьютерра» № 164 - Коллектив Авторов - Прочая околокомпьтерная литература
- Третья мировая война. Какой она будет - Ричард Кларк - Прочая околокомпьтерная литература
- Цифровой журнал «Компьютерра» № 68 - Коллектив Авторов - Прочая околокомпьтерная литература
- Журнал PC Magazine/RE №10/2009 - PC Magazine/RE - Прочая околокомпьтерная литература
- Журнал PC Magazine/RE №05/2008 - PC Magazine/RE - Прочая околокомпьтерная литература
- Компьютерра PDA 21.08.2010-27.08.2010 - Компьютерра - Прочая околокомпьтерная литература
- Цифровой журнал «Компьютерра» № 204 - Коллектив Авторов - Прочая околокомпьтерная литература
- Компьютерра PDA 12.06.2010-18.06.2010 - Компьютерра - Прочая околокомпьтерная литература
- Фреймы для представления знаний - Марвин Минский - Прочая околокомпьтерная литература
- Руководство по компьютерной безопасности и защите информации для Больших Боссов - Карл Шкафиц - Прочая околокомпьтерная литература