Каналы.
Свойства каналов
Программа du, при вызове ее с ключомs, сообщает суммарный объем каждого каталога или файла, перечисленного в ее параметрах. Ключn команды sort означает, что сортировка должна быть арифметической, т. е. строки должны рассматриваться как числа, а не как последовательности символов (Например, 12>5 в то время как строка '12'<'5' т. к. сравнение строк производится посимвольно и '1'<'5'). Ключr… Читать ещё >
Каналы. Свойства каналов (реферат, курсовая, диплом, контрольная)
Стандартные потоки можно перенаправлять не только в файлы, но и на вход других программ. Если поток вывода одной программы соединить с потоком ввода другой программы, получится конструкция, называемая каналом, конвейером или пайпом англ. Pipe — труба. В bash канал выглядит как последовательность команд, отделенных друг от друга символом «| «:
· Команда1 | Команда2 | Команда 3.
Стандартный поток вывода команды подключается к стандартному потоку ввода команды, стандартный поток вывода команды 2 в свою очередь соответственно подключается к потоку ввода команды 3 и т. д. В UNIX присутствует целый класс команд, предназначенных для преобразования стандартных и нестандартных потоков данных в каналы. Такие программы, как известно, называют — фильтры. Программа-фильтр прочитывает данные, поступающие со стандартного потока ввода (на вход) одной программы, преобразовывает их необходимым образом и выводит на стандартный поток вывода (на выход) другой программы. Существует множество очень хорошо известных фильтров, призванных решать определенные задачи, и являются незаменимым инструментом в руках, как опытного пользователя, так и не очень опытного пользователя ОС. Каналы в UNIX подобных ОС представляют собой одной из наиболее часто применяемых конструкций, а фильтры — наиболее часто применяемых программ. Большинство повседневных задач в UNIX подобных ОС легко решаются при помощи конструкций построенных на основе нескольких фильтров. Программы, образующие канал или каналы, выполняются параллельно как независимые процессы. Можно создавать ответвление в каналах, тем самым, добавляя больше производительности процессу. Команда «tee» позволяет или дают возможность пользователю, сохранять/копировать информацию, передающиеся в канале:
· tee [флаги/опции] файл Программа «tee» копирует данные, поступающие на стандартный поток ввода, в указанные в качестве аргументов команды файлы, и одновременно передает данные на стандартный поток вывода. Рассмотренный ниже пример: сортируется файл unsortedlines и результат записывается в sortedlines.
· %$ cat unsorted | sort > sortlines.
Этот канал или команда выполняет те же действия, но запись является более наглядной. Вот пример посложнее. Вывести название и размер пользовательского каталога, занимающее наибольшее место на диске.
· $ dus /home/* | sortnr | headl.
Программа du, при вызове ее с ключомs, сообщает суммарный объем каждого каталога или файла, перечисленного в ее параметрах. Ключn команды sort означает, что сортировка должна быть арифметической, т. е. строки должны рассматриваться как числа, а не как последовательности символов (Например, 12>5 в то время как строка '12'<'5' т. к. сравнение строк производится посимвольно и '1'<'5'). Ключr означает изменения порядка сортировки — с возрастающего на убывающий. Команда head выводит несколько первых строк поступающего на ее вход потока, отбрасывая все остальные. Ключ -1 означает, что надо вывести только одну строку. Таким образом, список пользовательских каталогов с их суммарным объемом арифметически сортируется по убыванию, и из полученного списка берется первая строка, т. е. строка с наибольшим числом, соответствующая самому объемному каталогу. Еще один пример использования команды tee:
· $ sort text | tee sorted_text | headn 1.
Содержимое файла text сортируется, и результат сортировки перезаписывается в файл sorted_text.