Читаем Linux и UNIX: программирование в shell. Руководство разработчика полностью

$ echo "Отчет создал пользователь $LOGNAME. `date` " >> myfile

Здесь используется переменная среды $LOGNAME, которая содержит регистрационное имя текущего пользователя.

Рассмотрим содержимое файла myfile:

$ cat myfile

Строка занесена в файл.

Отчет создал пользователь root. Sat May 22 18:25:06 GMT 1999

Одной из проблем, с которыми часто сталкиваются начинающие пользователи при работе с командой echo, является включение в строку двойных кавычек. Символы двойных кавычек имеют специальное назначение в интерпретаторе shell,

поэтому должны быть защищены с помощью обратной косой черты. Вот как выводится на экран строка "/dev/rmt0":

$ echo "\"/dev/rmt0\""

"/dev/rmt0"

5.2. Команда read

Команда read читает одну строку из стандартного входного потока и записывает ее содержимое в указанные переменные. Если задана единственная переменная, в нее записывается вся строка. В результате ввода команды read без параметров строка помешается в переменную среды $reply. При указании нескольких переменных в первую из них записывается первое слово строки, во вторую — второе слово и т. д. Последней переменной присваивается остаток строки.

Общий формат команды таков:

read переменная1 переменная2…

В следующем примере в переменную name записывается весь вводимый с клавиатуры текст до тех пор, пока не будет нажата клавиша [Enter]:

$ read name Джон Алан Доу $ echo $name

Джон Алан Доу

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

$ read name surname

Джон Доу

$ echo $name $surname

Джон Доу

Если во входной строке больше слов, чем указано переменных, в последнюю переменную записываются все оставшиеся слова:

$ read name surname Джоя Алан Доу

$ echo $name

Джон

$ echo $surnane

Алан Доу

Следующий сценарий вызывает отдельную команду read для чтения каждой переменной:

$ cat var_test

#!/bin/sh

# var_test

echo "Имя:\c"

read name

echo "Отчество:\c"

read middle

echo "Фамилия:\c"

read surname

В Linux…

Вместо управляющего символа \с в команде echo следует указывать опцию -n:

$ cat var_test

#!/bin/sh

# var_test

echo -n "Имя:"

read name

echo -n "Отчество:"

read middle

echo -n "Фамилия:"

read surname

5.3. Команда cat

Команда cat довольно проста, но универсальна. Эту команду удобно применять как для отображения файла, так и для его создания, а также при отображении файлов, содержащих управляющие символы. Используя команду cat, следует учитывать, что процесс вывода не останавливается по достижении конца страницы — файл пролистывается до конца. Если необходимо просмотреть файл постранично, передайте вывод команды cat какой-нибудь программе постраничной разбивки:

$ cat myfile | more

или

$ cat myfile | pg

Общий формат команды cat таков:

cat [опции] имя_файла1…имя_файла2…

Из опций команды cat в первую очередь заслуживает внимания опция -v, активизирующая режим отображения непечатаемых символов. Вывести файл myfile позволяет вот такая простая команда:

$ cat myfile

Для отображения сразу трех файлов — myfile1, myfile2 и myfile3 — нужно выполнить команду

$ cat myfile1 myfile2 myfile3

Чтобы сформировать файл bigfile, включающий содержимое файлов myfile1, myfile2 и myfile3, следует перенаправить выходной поток предыдущей команды в новый файл:

$ cat myfile1 myfile2 myfile3 >> bigfile

Если необходимо создать новый файл и ввести в него текст, не указывайте входной файл. В таком случае команда cat читает данные не из файла, а из стандартного входного потока (клавиатуры), и вам остается лишь перенаправить его в новый файл:

$ cat >> myfile

Это новый файл

$ pg myfile

Это новый файл

По завершении ввода данных нажмите [Ctrl+D].

Для просмотра управляющих символов в файле воспользуйтесь опцией -v. Следующая команда отображает содержимое файла, в котором встречаются символы (представлены как ^M):

$ cat -v life.tct

ERROR ON REC A$12^M ERROR ON REC AS31^M

5.4. Каналы

Каналом называется способ переадресации данных, при котором результаты работы одной команды передаются другой команде в виде входных данных. Канал организуется с помощью оператора |:

команда1 | команда2

В следующем примере команда ls формирует список всех файлов из текущего каталога. Этот список был бы выведен на экран, если бы не символ канала. Интерпретатор shell обнаруживает канал, перехватывает все выходные потоки команды, стоящей слева от оператора [, и направляет их команде, которая расположена справа от оператора. В данном случае утилита фильтрации grep отбирает в списке файл с именем quarter1.doc:

$ ls | grep quarter1.doc

quarter1.doc

Представим этот пример схематически:

$ ls

Канал

grep quarter1.doc

| Выходные данные команды ls

$ ls accounts.doc acc_LPSO.doc quarter1.doc

quarter1.doc quarter2.doc

При обработке строковых данных можно объединять, каналами такие мощные программы фильтрации, как потоковый редактор sed, редактор awk и утилита grep, создавая сложные критерии отбора информации. В показанной ниже командной строке команда who выводит информацию о пользователях, зарегистрированных в

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии