Основы программирования в Linux
Шрифт:
В предыдущем примере стандартный вывод перенаправлен в файл с помощью оператора
Для дозаписи в конец файла используйте оператор
добавит вывод команды
Для перенаправления стандартного потока ошибок перед оператором
Предположим, что вы хотите применить команду
Команда
поместит вывод и информацию об ошибке в разные файлы.
Если вы предпочитаете собрать оба набора выводимых данных в одном файле, можно применить оператор
поместит свой вывод и стандартный поток ошибок в один и тот же файл. Обратите внимание на порядок следования операторов. Приведенный пример читается как "перенаправить стандартный вывод в файл killerr.txt, а затем перенаправить стандартный поток ошибок туда же, куда и стандартный вывод". Если вы нарушите порядок, перенаправление выполнится не так, как вы ожидаете.
Поскольку обнаружить результат выполнения команды
Перенаправление ввода
Также как вывод вы можете перенаправить ввод. Например,
Понятно, что это тривиальнейший пример для ОС Linux; команда
Каналы
Вы можете соединять процессы с помощью оператора канала (
Если не применять каналы, придется использовать несколько шагов, подобных следующим:
Соединение процессов каналом даст более элегантное решение:
Поскольку вы, вероятно, захотите увидеть на экране вывод, разделенный на страницы, можно подсоединить третий процесс,
Практически нет ограничений на допустимое количество процессов. Предположим, что вы хотите видеть все имена выполняющихся процессов, за исключением командных оболочек. Можно применить следующую командную строку:
В ней берется вывод команды
Как видите, это гораздо более элегантное решение, чем строка из отдельных команд, каждая со своими временными файлами. Но в этом случае имейте в виду следующее. Если строка состоит из команд, файл вывода создается или записывается сразу, как только сформирован набор команд, поэтому в строке из нескольких команд никогда не используйте дважды одно и то же имя файла. Если вы попытаетесь сделать что-то подобное:
то в результате получите пустой файл, т.к. вы перезапишете файл mydata.txt, прежде чем прочтете его.
Командная оболочка как язык программирования
Теперь, когда вы увидели некоторые базовые операции командной оболочки, самое время перейти к реальным программам оболочки. Есть два способа написания таких программ. Вы можете ввести последовательность команд и разрешить командной оболочке выполнить их в интерактивном режиме или сохранить эти команды в файле и затем запускать его как программу.
Интерактивные программы
Легкий и очень полезный во время обучения или тестирования способ проверить работу небольших фрагментов кода — просто набрать с клавиатуры в командной строке сценарий командной оболочки.
Предположим, что у вас большое количество файлов на языке С, и вы хотите проверить наличие в них строки
Егерь. Системный зверолов
1. Зверолов
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Неучтенный
1. Неучтенный
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
рейтинг книги
Второгодка. Книга 3. Ученье свет
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
рейтинг книги
Локки 7. Потомок бога
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
рейтинг книги
Переговоры
Детективы:
политические детективы
рейтинг книги
Диверсант
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги
Гримуар темного лорда III
3. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Я все еще не царь. Книга XXVI
26. Дорогой барон!
Фантастика:
попаданцы
аниме
рейтинг книги
Арбан Саеш. Трилогия
50. В одном томе
Фантастика:
фэнтези
рейтинг книги
Газлайтер. Том 29
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Кодекс Охотника. Книга XV
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
рейтинг книги
Сара
Проза:
современная проза
контркультура
рейтинг книги
Сюжет
Фантастика:
научная фантастика
рейтинг книги