ОС Лаб.работа №7(Командные процессоры ОС Unix. Работа с файлами) (1069348), страница 3
Текст из файла (страница 3)
Работа сфайлами)13find . -name "*.html"Теперь воспользуемся конструкцией «подстановка результата выполнения»и перепишем наш скрипт для замены подстрок:for i in ' find . -name "*.html"dosed 's/Siemens/Nixdorf/g' <$i >tmpmv tmp $idoneКоманда, заключенная в ' ' (обратные апострофы), выполняется первой, арезультат ее выполнения подставляется в командную строку. Затем команднаястрока запускается на выполнение.2.1.9 Завершение имен файловФункция «подсказки» (можно сказать также — «завершения») имен файлов(file name completion) позволяет набрать только часть имени существующего файлаи затем нажать клавишу Tab. В ответ на это командный процессор «закончит»наборименифайла.Например,еслинадообратитьсякфайлу/usr/sadm/admin/bin/printmgr, то достаточно набрать/usr/sa<Tab>dm/a<Tab>dmin/b<Tab>in/pr<Tab>intmgrВсе, что в этом примере выделено жирным шрифтом, набирает пользователь, а все, что не выделено, — подставляет командный процессор.Завершение имен файлов реализовано только в bash и tcsh.При двойном нажатии Tab выводятся все возможные варианты завершенияимени файла.Например, если в каталоге есть два файла, начинающиеся с букв msg:msgO1.txt и msgO2.txt и надо просмотреть один из них, надо набратьmore msg Tab Tab.Командный процессор bash (или tcsh) подскажет:msgO1.txtmsgO2.txtТеперь достаточно набрать еще цифру 1 или 2, чтобы указать, какой именнофайл требуется, и еще раз нажать Tab для окончательного завершения имени.Операционные системы Лаб.работа №7(Командные процессоры ОС Unix.
Работа сфайлами)14Если после двойного нажатия Tab bash видит слишком много возможныхвариантов имен, он спросит:There are 1102 possibilities.Do you really wishto see them all? (y or n)Стоит ответить п: так много имен не уместится на экран.2.1.10 Редактирование командной строкиРедактировать командную строку приходится для того, чтобы исправитьчто-то в только что набранной строке. В sh нельзя передвинуть курсор в любуюпозицию в строке, в остальных командных процессорах - можно. Удобнее всегоредактировать командную строку в bash.В каждом командном процессоре реализованы стирание последнего символа клавишей Backspace и стирание строки целиком комбинацией клавишCtrl+U.В csh и tcsh можно перемешаться вперед и назад по уже введенным символамв строке с помощью «стрелок», вводить знаки в середину и в начало строки.
Командный процессор bash после нажатия Enter принимает всю строку целиком,независимо от того, в какой позиции строки находился курсор при нажатии Enter.Например, можно вернуть курсор к середине строки, если ввод оказался неверным, исправить ошибку и тут же нажать Enter, чтобы запустить команду на выполнение. В некоторых старых версиях командных процессоров в этом случаеследует исправить строку, перейти к ее концу для ввода команды и только послеэтого нажать Enter.В ksh редактирование по умолчанию выключено, его надо включить нажатием клавиши Esc. После этого командная строка будет редактироваться командами того редактора, имя которого задано в переменной среды окружения VISUAL или EDITOR. По умолчанию это редактор vi.В csh и tcsh редактирование командной строки выполняется так же, какв bash.Операционные системы Лаб.работа №7(Командные процессоры ОС Unix.
Работа сфайлами)152.1.11 Повторение и модификация ранее введенных командБывает удобно повторить команду, которую недавно уже вводили; особенно это помогает при вводе длинных команд с одинаковыми аргументами.Иногда повторяемая команда должна немного отличаться от оригинала, тогдаследует модифицировать запись о ранее введенной команде и запустить на выполнение свежий вариант.Например, введяlyxn -p proxy.spb.edu:3128 www.macropulos.cam.ac.ukответ будет «command not found», потому что допустили опечатку в именипрограммы lynx. Если бы опечатка была в конце строки, можно было бы вызватьстроку с предыдущей командой клавишей «стрелка вверх», но здесь опечатка вначале строки, и после вызова выполненной строчки придется еше двигать курсор в ее начало.
Есть более короткий вариант, доступный в csh, tcsh и bash:"xn"nxЭта конструкция требует у командного процессора повторить предыдущуюкоманду, заменив первой вхождение подстроки хn на пх.В csh, tcsh, bash есть и другие средства модификации командной строки.Они перечислены ниже:! п (п — число) — повтор n-ной команды из истории команд!! — повтор последней команды!stг — вызывает выполнение последней команды, начинающейся HastrКомандные процессоры csh и tcsh по-разному интерпретируют конструкцию ! nstr, например '!67г'.
Для csh это - команда номер 67, в конец которойдобавляется г перед выполнением, а для tcsh это - последняя начинающаяся на 67г команда. Такой синтаксис введен в tsch для удобства повторения команд, чьиимена начинаются с цифр. Чтобы заставить tcsh вести себя подобно csh, нужноперед числом поставить обратный слэш, экранирующий его специальное значение:'! \6\7r'.Операционные системы Лаб.работа №7(Командные процессоры ОС Unix. Работа сфайлами)16В bash, повторение команд выполняется так же, как и в csh. Дополнительно можно использовать клавиши «вверх» и «вниз» для переходов между командами, введенными раньше или позже.В ksh для повторения команд используют встроенную команду г, а в sh —команду fc, при этом в sh можно вызвать только такую команду, которая была введена в текущем сеансе, потому что sh не ведет файл истории.Кроме этого, в bash можно вызвать встроенный интерактивный поиск вистории команд, нажав Ctrl+R и затем, введя подстроку для поиска; найденнаякоманда отобразится автоматически.2.1.12 Работа с заданиямиПри работе в командной строке можно запустить несколько программ одновременно, организовав конвейер.Совокупность таких процессов, одновременно запущенных из среды командного процессора, называется заданием.Задание можно приостановить, потребовать его продолжения или завершить его.
Задание может выполняться как в фоновом режиме, так и в интерактивном. Для управления заданиями большинство командных процессоров (точнее все, кроме Bourne Shell) имеют встроенные команды: jobs, fg, bg.Посмотреть список запущенных ранее заданий можно с помощью команды jobs.Для вывода идентификаторов (PID) процессов, входящих в задание,можно использовать командуjobs -l.Например, при запуске программы find для поиска файлов * . g i f ,список найденных файлов перенаправляем в ~/gifs (т.
е. домашний каталог, файл gifs):find / -name "*.gif" > ~/gifs &[1] 33151jobs -l[1]+ 33151 Running find / -name "".giff" > ~/gifs &Операционные системы Лаб.работа №7(Командные процессоры ОС Unix. Работа сфайлами)17To, что указано в квадратных скобках [ ], и есть номер задания. Заданияимеют уникальные номера в пределах текущего сеанса работы с shell'oм.Задание можно перевести в интерактивный режим командой fg(foreground):fg%1# %1 - номер заданияТеперь задание выполняется в интерактивном режиме.
Можно остановитьего, переведя в режим suspend (sleeping, спящий):<Ctrl-z>[1]+ Stopped find / -name "".giff" > "/gifsТеперь можно продолжить выполнение задания в фоне командой bg(background):bgX1С помощью команд управления заданиями можно переключать программымежду интерактивным и фоновым режимами выполнения. Можно нажать Ctrl+Z,чтобы «усыпить» программу, а затем запустить задание -в фоновом режиме с помощью команды bg.Аргументы команд bg и fg в разных командных процессорах могут выглядетьпо-разному.
Однако знак процента (%), за которым указывается номер задания, всекомандные процессоры интерпретируют одинаково: как ссылку на номер задания.2.1.13 Установка приглашения shellКомандный интерпретатор имеет несколько вариантов приглашений.По умолчанию в sh - это $, в csh. - %. Привилегированный пользователь (root)имеет другое приглашение - #.В среде окружения каждого командного процессора есть переменные PS1и PS2. Это — вид обычного приглашения и приглашения к продолжению вводакоманды соответственно.При вводе длинной команды можно набрать ее в две строки, для этогоследует в конце первой строки набрать символ обратного слэша и нажать Enter :\<Enter>Операционные системы Лаб.работа №7(Командные процессоры ОС Unix.
Работа сфайлами)18и продолжить ввод на следующей строке. Команда может быть и еше болеемногострочной; как правило, допустимая длина команды составляет 1024 символа. Обратный слэш экранирует следующий за ним символ переводастроки от интерпретации в качестве символа завершения команды. При переходе к новой строке появится символ >, так как именно это значение поумолчанию имеет PS2.В csh и tcsh вместо PS1 и PS2 определены переменные prompt иprompt2. Некоторые командные процессоры, в частности, ksh, имеют дополнительные приглашения для специальных случаев. Они хранятся в переменных PS3, PS4 и т.
д., а в csh — в prompt3 и prompt4.Многие реализации командных процессоров (прежде всего bash)умеют показывать приглашения, включающие в себя динамически подставляемые части (например, имя текущего каталога). В этих командныхпроцессорах есть свои собственные макроопределения для таких подстановок. Например, имя текущего каталога в bash подставляется в приглашениекомандной строки с помощью макроса \w, а в csh - %/. Назначать желаемоезначение переменной можно, только указывая макрос внутри апострофов,чтобы экранировать его от интерпретации командным процессором,например в bash:$PS1='\w$'Перечень макроопределений для приглашений командной строкиобычно содержится в руководстве man по командному интерпретатору.2.1.14 Перечень спецсимволовВсе командные процессоры воспринимают некоторые символы какслужебные, придавая им специальное значение при разборе команднойстроки.