Опубликован: 15.08.2003 | Уровень: для всех | Доступ: платный | ВУЗ: Российский государственный гуманитарный университет
Лекция 2:

Введение в программирование CGI-скриптов и программирование скриптов на bash

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Конвейеры

Одним из наиболее полезных свойств командных языков является организация конвейеров и перенаправление ввода/вывода. Под конвейером понимают последовательность программ (команд), соединенных друг с другом через ввод/вывод. Стандартный поток вывода первой программы подается на стандартный поток ввода второй программы, стандартный поток вывода второй программы, в свою очередь, подается на стандартный поток ввода третьей и т.д. Выглядит это примерно следующим образом:

ps -ax | grep httpd | wc -l

В данном случае вывод статистики об активных процессах подается на ввод фильтра grep, который выводит только те строки, где встречается программа httpd. В свою очередь, выход grep подается на вход счетчика строк (атрибут -l ), который в итоге сообщает, сколько в данный момент в системе крутится HTTP-серверов. Символы "|" как раз и обозначают конвейеризацию выполнения программ.

Кроме конвейеров, к стандартному вводу/выводу можно применять перенаправление. Так, символ "<" означает чтение из стандартного потока ввода, а символ ">" — вывод в файл. Этот метод стоит использовать при перенаправлении стандартного потока ошибок в стандартный поток вывода:

ls hhjhj > intuit 2>&1

В данном случае задана заведомо ошибочная с точки зрения синтаксиса команда. Стандартный вывод перенаправляется в файл "intuit", а стандартный поток ошибок перенаправляется в стандартный вывод и, следовательно, тоже попадает в файл "intuit".

Файлы и каталоги

Работа с файлами и каталогами в bash опирается на механизм перенаправления и команды Unix. Проверку состояния файлов удобно выполнять с помощью команды test. Для чтения данных из файла достаточно направить его содержимое в стандартный поток ввода:

Bash> intuit.cgi < intuit.txt

Можно для этих же целей построить конвейер:

Bash> cat intuit.txt | intuit.cgi

В данном случае команда cat читает данные из файла и передает их на поток стандартного ввода скрипта.

Для создания файлов в bash можно применять функцию копирования из пустого файла в нормальный файл:

bash>cp /dev/null intuit.txt

Для прохода по дереву каталогов используют команду cd, а получить список файлов с их атрибутами можно при помощи команды ls:

#!/usr/freeware/bin/bash
echo Content-type: text/html
echo
echo '<HTML><HEAD></HEAD><BODY>'
echo '<UL>'
ls | while read x
do
if test -f $x; then 
  echo '<LI><A HREF=./'$x'>'$x'</A>'; fi
done
echo '</UL>'
echo '</BODY></HTML>'

В результате выполнения этого скрипта в HTML-документ будет вставлен фрагмент из отчета команды ls. При этом будут отображаться только регулярные (обыкновенные) файлы. Каталоги и специальные файлы в список файлов каталога не попадут.

Удалить файл можно при помощи команды rm "имя_файла", переименовать — mv "имя_старое" "имя_новое" и т.п. Все это типовые команды Unix.

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Екатерина Cколова
Екатерина Cколова
Россия, Москва
Dima Semenchenok
Dima Semenchenok
Россия