Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1309 / 258 | Оценка: 4.34 / 3.65 | Длительность: 21:13:00
Лекция 12:

Командные процессоры

< Лекция 11 || Лекция 12: 123456

Повторение и модификация ранее введенных команд

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

Например, введя

lyxn –p proxy.spb.edu:3128 www.macropulos.cam.ac.uk

вы получаете в ответ "command not found", потому что вы собирались запустить lynx, но допустили опечатку в имени программы. Не повторять же теперь ввод всей длинной строки! Если бы опечатка была в конце строки, можно было бы вызвать строку с предыдущей командой клав- шей "стрелка вверх", но здесь опечатка в начале строки, и после вызова выполненной строчки придется еще двигать курсор в ее начало. Есть более короткий вариант, доступный в csh, tcsh и bash:

^xn^nx

Эта конструкция требует у командного процессора повторить предыдущую команду, заменив первой вхождение подстроки xn на nx. И это все!

В csh, tcsh, bash есть и другие средства модификации командной строки. Они перечислены ниже:

  • !n (n – число) – повтор n-ной команды из истории команд5Список (историю) введенных команд можно получить по команде history. Используйте tail для просмотра нескольких последних команд: history | tail .
  • !! – повтор последней команды
  • !str – вызывает выполнение последней команды, начинающейся на str

Командные процессоры csh и tcsh по-разному интерпретируют конструкцию !nstr, например, `!67r'. Для csh это – команда номер 67, в конец которой добавляется r перед выполнением, а для tcsh это – последняя начинающаяся на 67r команда. Такой синтаксис введен в tsch для удобства повторения команд, чьи имена начинаются с цифр. Чтобы заставить tcsh вести себя подобно csh, нужно перед числом поставить обратный слэш, экранирующий его специальное значение: `!\6\7r'.

В bash повторение команд выполняется так же, как и в csh. Дополнительно можно использовать клавиши "вверх" и "вниз" для переходов между командами, введенными раньше или позже.

В ksh для повторения команд используют встроенную команду r, а в sh – команду fc, при этом в sh можно вызвать только такую команду, которая была введена в текущем сеансе, потому что sh не ведет файл истории.

Кроме этого, в bash можно вызвать встроенный интерактивный поиск в истории команд, нажав <Ctrl-R> и затем введя подстроку для поиска; найденная команда отобразится автоматически.

Работа с заданиями

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

Задание можно приостановить, потребовать его продолжения или завершить его. Задание может выполняться как в фоновом режиме, так и в интерактивном. Для управления заданиями большинство командных процессоров (точнее, все кроме Bourne Shell) имеют встроенные команды: jobs, fg, bg.

Посмотреть список запущенных ранее заданий можно с помощью команды jobs. Для вывода идентификаторов (PID) процессов, входящих в задание, следует использовать команду

jobs –l.

Например, запускаем программу find для поиска файлов *.gif, список найденных файлов перенаправляем в ~/gifs (т.е. наш домашний каталог, файл gifs ):

find / -name "*.gif" > ~/gifs &
[1] 33151
jobs –l
[1]+ 33151 Running         find / -name "".giff" > ~/gifs &

То, что указано в квадратных скобках [ ], и есть номер задания. Задания имеют уникальные номера в пределах текущего сеанса работы с shell'ом. Задание можно перевести в интерактивный режим командой fg (foreground):

fg  %1         # %1 – номер задания

Теперь задание выполняется в интерактивном режиме. Можно остановить его, переведя в режим suspend (sleeping, спящий):

<Сtrl-z>
[1]+  Stopped           find / -name "".giff" > ~/gifs

Теперь можно продолжить выполнение задания в фоне командой bg (background):

bg  %1

С помощью команд управления заданиями можно переключать программы между интерактивным и фоновым режимом выполнения. Если вы случайно забыли поставить знак & в конце команды, но собирались запустить ее в фоновом режиме, еще не все потеряно! Следует нажать Ctrl-Z, чтобы "усыпить" программу, а затем запустить задание в фоновом режиме с помощью команды bg.

Аргументы команд bg и fg в разных командных процессорах могут выглядеть по-разному. Однако, знак процента %, за которым указывается номер задания, все командные процессоры интерпретируют одинаково: как ссылку на номер задания.

< Лекция 11 || Лекция 12: 123456
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Александр Васильченко
Александр Васильченко
Россия
Денис Гайдуль
Денис Гайдуль
Россия, Подольск