Главная » Просмотр файлов » А.П. Строляров, И.Г. Головин, И.А. Волкова - Операционная система Unix

А.П. Строляров, И.Г. Головин, И.А. Волкова - Операционная система Unix (1114677), страница 5

Файл №1114677 А.П. Строляров, И.Г. Головин, И.А. Волкова - Операционная система Unix (А.П. Строляров, И.Г. Головин, И.А. Волкова - Операционная система Unix) 5 страницаА.П. Строляров, И.Г. Головин, И.А. Волкова - Операционная система Unix (1114677) страница 52019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

Например, команда24I=$(( $I + 7 ))увеличит значение переменной I на семь.С помощью встроенной в интерпретатор Bourne Shell команды testможно осуществлять проверку выполнения различных условий. Еслизаданное условие выполнено, команда завершится с нулевым (успешным) кодом возврата, в противном случае – с единичным (неуспешным).Синонимом команды test является символ открывающей квадратнойскобки, причем сама команда в этом случае воспрнимает символ закрывающей квадратной скобки в качестве своего параметра (как знакокончания выражения), что позволяет наглядно записывать проверяемое выражение, заключая его в квадратные скобки. Приведём несколько примеров.[ -f "file.txt" ]# существует ли файл с именем file.txt[ "$I" -lt 25 ]# значение переменной I меньше 25[ "$A" = "abc" ]# значение переменной A является строкой abc[ "$A" != "abc" ]# значение переменной A не является строкой abcЭто можно, например, использовать в операторе ветвления:if [ -f "file.txt" ]; thencat "file.txt"elseecho "Файл file.txt не найден"fiЗаметим, что то же самое можно было написать и иначе, без использования квадратных скобок, но это менее наглядно:if test -f "file.txt" ; thencat "file.txt"elseecho "Файл file.txt не найден"fiВ качестве команды, проверяющей условие, может фигурировать нетолько test, но и любая другая команда.

Например:25if gcc -Wall -g myprog.c -o myprog; thenecho "Компиляция прошла успешно"elseecho "При компиляции произошла ошибка"fiКроме оператора ветвления, язык Bourne Shell поддерживает и болеесложные конструкции, в том числе циклы. Например, следующий фрагмент напечатает все числа от 1 до 100:I=0while [ $I -le 101 ]; doecho $II=$(( $I + 1 ))doneИспользовать информацию об успешности выполнения командыможно также с помощью так называемых логических связок && и ||,означающих, соответственно, логические операции “и” и “или”. При этомлогическому значению “истина” соответствует успешное завершение команды, а значению “ложь” – неуспешное. Командная строка$ cmd1 && cmd2заставит интерпретатор выполнить сначала команду cmd1, а затем вслучае ее успешного завершения – команду cmd2; в случае неуспешного завершения первой команды вторая выполняться не будет.

Наоборот,командная строка$ cmd1 || cmd2подразумевает запуск cmd2 в случае неуспешного завершения cmd1.Приоритет логических связок между собой – традиционный (то есть “и”приоритетнее, чем “или”. В то же время, приоритет операций “конвейер” иперенаправлений ввода-вывода выше, чем приоритет логических связок; так,команда$ cmd1 && cmd2 | cmd3представляет собой связку между командой cmd1 и конвейером cmd2 | cmd3как целым. Значение «истинности» конвейера определяется успешностью илинеуспешностью выполнения последней из составляющих его команд.Очередность применения операций, как обычно, можно изменить использованием круглых скобок, например:26$ (cmd1 && cmd2) | cmd3В этом примере стандартный вывод команд cmd1 и cmd2 (если, конечно, онавообще будет выполняться), будет направлен на стандартный ввод cmd3.Для более подробной информации о программировании на языкеBourne Shell следует обратиться к специальной литературе [1].2.9.2Протоколирование сеанса работы (команда script)При выполнении заданий практикума часто требуется представитьпротокол сеанса работы с программой, т.е.

текст, включающий как информацию, вводимую пользователем, так и информацию, выдаваемуюпрограммой. Это легко сделать с помощью команды script.Чтобы начать протоколирование, запустите команду script с однимпараметом, задающим имя файла протокола. Для окончания протоколирования нажмите Ctrl-D ("конец файла"). Например:$ script my_protocol.txtScript started, file is my_protocol.txt$ lsa1.cDocumentsmy_protocol.txt tmp$ echo "abc"abc$ [Ctrl-D]Script done, file is my_protocol.txtФайл my_protocol.txt теперь содержит протокол сеанса работы:Script$ lsa1.c$ echoabc$Script2.9.3started on Wed Nov 17 16:31:54 2005Documents"abc"my_protocol.txt tmpdone on Wed Nov 17 16:32:14 2005Команды head и tailПри работе в среде ОС Unix, особенно в процессе разработки программ, могут оказаться очень полезными команды head и tail.

Эти команды служат для просмотра содержимого в начале и в конце файла,соответственно (по умолчанию показывается 10 первых или последнихстрок). Так, команда27$ head prog.cпокажет 10 первых строк файла prog.c, что может быть полезно, например, чтобы узнать, какие заголовочные файлы в него включаются.Командам head и tail можно указать и несколько файлов за одинраз. Например, можно быстро просмотреть начало всех файлов с программами на языке C в текущей директории, выполнив команду$ head *.c *.hНа экран (точнее, в стандартный вывод) будут выведены первые 10строк9 каждого файла из текущей директории с расширением .c или .h.При этом перед выдачей информации из очередного файла выводитсяимя этого файла.Количество строк, которые следует вывести, можно задать в командной строке. Например, команды$ head -25 prog.c$ tail -25 prog.cвыдадут, соответственно, 25 первых или 25 последних строк файлаprog.c.Команда tail особенно удобна для отслеживания появления новойинформации в конце файла, в который постоянно производится вывод(например, в файле протокола).

Так, команда$ tail -f mylog.txtвыдаст последние 10 строк файла mylog.txt, а затем будет выводитьновые строки по мере того, как они появляются в файле. Завершить работу команды можно стандартным образом – нажав комбинацию клавиш Ctrl-C.Важным свойством этих команд (как и многих других) является то,что они могут работать как фильтры10 . Например, команда$ gcc -c sh.c 2>&1 | head -20выведет на экран первые 20 строк диагностики компилятора gcc (в случае, если есть ошибки, конечно).

Заметим, что здесь понадобилось объединить стандартный поток сообщений об ошибках (2) со потоком стандартного вывода (1) с помощью конструкции 2>&1 (см. § 2.5, табл. 5), посколькуконвейер перенаправляет только поток стандартного вывода.9Вслучае, если в файле меньше 10 строк, будет выведен весь файлфильтом понимается программа, читающая некий поток данных со своегостандартного ввода, выполняющая те или иные преобразования и выдающая результаты в поток стандартного вывода; именно из таких программ строятся конвейеры.10 Под282.9.4Команда catЭта команда копирует содержимое файлов, указанных в команднойстроке, в поток стандартного вывода.

Например, можно просмотретьсодержимое файла без обращения к текстовому редактору, используяследующий конвейер:$ cat sh.c | lessНапомним, что команда less используется для постраничного просмотра текста.В зависимости от опций команда cat может преобразовывать свойввод. Например, команда$ cat -n sh.cвыдаст содержимое файла sh.c, пронумеровав все его строки, начинаяс единицы. Команда$ cat -v fl.txtраспечатает файл fl.txt, показывая все управляющие символы (т.е.символы с кодами из дапазона 0–31), кроме LF (перевод строки) и TAB(табуляция), и символы с кодом больше 127, в пригодном для восприятия виде. Управляющие символы показываются в виде ^СИМВОЛ,причем код символа получается из кода соответствующего управляющего символа прибавлением 64 (0x40). Например, символу с кодом 0соответствует ^@, с кодом 1 – ^A, с кодом 2 – ^B, с кодом 13 – ^M и т.д.(символ @ имеет код 64, латинская заглавная буква A – 65 и т.д.)Символы с кодами больше 127 (из т.н.

национальной половины кодового набора) показываются в виде M-СИМВОЛ, причем код символаполучается из кода соответствующего национального символа вычитанием 129 (0x80). При этом, если получаемый СИМВОЛ относится ккатегории управляющих (и, как следствие, не имеет визуального образа), то он изображается в виде ^СИМВОЛ, как было объяснено выше.Например, если файл binary_file содержит следующую информацию(побайтно в 16-ичном виде):80 FF D0 0Aто команда$ cat -v binary_fileвыдаст следующую строку29M-^@M-^?M-Pтак как код @ – 0x40, код ? – 0x3F, код заглавной латинской буквы P –0x50.Отметим, что и команда cat может работать в режиме фильтра,т.е.

читать информацию из потока стандартного ввода. Это происходит, если в командной строке не задано ни одного имени файла; в этомслучае команда просто копирует поток ввода в поток вывода. С учетомвышеописанных возможностей преобразования такой режим командыможет оказаться весьма полезен. Также команда cat без параметров (тоесть в режиме буквального копирования ввода на вывод) оказываетсяполезной в связке с другими программами; так, связка$ ./prog1 | (head -5 ; cat > /dev/null )позволяет увидеть первые пять строк выдачи команды prog1, при этомдав программе доработать до конца (при отсутствии команды cat программа prog1 получила бы сигнал SIGPIPE после окончания выполнения head и была бы, скорее всего, снята с выполнения).2.9.5Команды wc и yesЭти команды удобно использовать, например, для отладки консольных приложений.Команда wc подсчитывает количество строк, слов и байтов в файледля каждого файла, специфицированного в командной строке:$ wc /etc/resolv.conf8 15 131 /etc/resolv.confЭто означает, что файл /etc/resolv.conf содержит 8 строк, 15 слов и131 байт.

Как и другие программы, wc может использоваться в режимефильтра для подсчета символов, строк и слов в потоке стандартноговвода (в этом случае имя файла не печатается):$ cat /etc/resolv.conf | wc815131Перечислим некоторые пции команды wc:• -c – подсчитывать количество байтов• -m – подсчитывать количество символов (заметим, что количествосимволов может быть меньше количества байтов для некотоыхкодировок, например, UNICODE или UTF-8)30• -w – подсчитывать количество слов• -l – подсчитывать количество строк• -L – вычислить максимальную длину строкиОтметим, что под словом понимается последовательность символов,ограниченная пробельными символами (т.е.

Характеристики

Тип файла
PDF-файл
Размер
585,43 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6372
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее