Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Работа в командной оболочке Bash

Введение

Роберт Бруннер , ученый-исследователь NCSA, старший преподаватель астрономии, Университет штата Иллинойс, г. Урбана-Шампейн
Роберт Дж. Бруннер (Robert J. Brunner) занимается научными исследованиями в Национальном центре по приложениям для суперкомпьютеров и является старшим преподавателем астрономии в университете штата Иллинойс, город Урбана-Шампейн. Автор нескольких книг и множества статей и практических руководств на различные темы.

Описание:  В этой статье содержится введение в командную оболочку Bash, использующуюся практически на любой UNIX®-подобной операционной системе. Bash - это зрелая, мощная, простая и бесплатная командная оболочка. В этом руководстве кратко представлена история возникновения командных оболочек, объясняющая некоторые отличия Bash от других командных оболочек UNIX, а также дается обзор основных возможностей Bash. Представлена информация о файловой системе UNIX, основы работы с каталогами и файлами, а также несколько способов настройки поведения и внешнего вида Bash. Наконец, в руководстве рассматривается базовая функциональность Bash по управлению заданиями.

Дата:  26.06.2008
Уровень сложности:  средний

Активность:  24895 просмотров
Комментарии:  

Управление заданиями в Bash

Одна из наиболее мощных возможностей Bash - это возможность помочь пользователю в управлении исполнением различных команд. На рисунке 1 показана базовая модель исполнения команд в UNIX. В этой модели каждая команда имеет стандартный механизм для обработки ввода-вывода:

  • STDIN (стандартное устройство ввода) позволяет программе получать входные данные из командной оболочки.
  • STDOUT (стандартное устройство вывода) позволяет программе передавать свои выходные данные командной оболочке.
  • STDERR (стандартное устройство вывода ошибок) позволяет программе передавать командной оболочке информацию о возникающих ошибках.

Обычно STDIN - это клавиатура, с помощью которой передается информация команде (как это делается в строке приглашения Bash), а STDOUT и STDERR - это экран, на который выводятся результаты. Однако можно изменить этот механизм ввода-вывода, например, так, чтобы команда читала и записывала данные в файл.


Рисунок 1. Стандартное выполнение команды
Рисунок 1. Стандартное выполнение команды

Для изменения стандартного механизма ввода-вывода в Bash используются команды перенаправления, список которых представлен в таблице 4.



Таблица 4. Перенаправление ввода-вывода в Bash
ПоследовательностьОписание
command < file command < file перенаправляет STDIN на чтение из файла.
command > file command > file перенаправляет STDOUT на запись в файл.
command >> file command >> file перенаправляет STDOUT на дозапись в файл.
command 2> file command 2> file перенаправляет STDERR на запись в файл..
command1 | command2 command1 | command2 connects STDOUT подсоединяет STDOUT команды command1 к STDIN команды command2.

Последний пункт в таблице 4 известен как конвейер и используется для объединения команд. Объединение команд с помощью конвейера - это ключевая техника программирования в командной оболочке UNIX, использующаяся, как продемонстрировано на рисунке 2. В этой модели каждая команда выполняет одну простую задачу и передает результат своей работы другой команде, которая также выполняет простую задачу, и так далее. Например, можно с помощью программы cat передать через конвейер содержимое файла команде grep, которая через конвейер передает все найденные строки команде wc, которая подсчитывает и выводит на экран количество строк в файле, содержащих заданную подстроку.


Рисунок 2. Объединение команд через конвейер
Рисунок 2. Объединение команд через конвейер

Асинхронное выполнение

Исполнение команд, которое описывалось выше, является синхронным, то есть в каждый момент времени выполняется только одна программа. Иногда команда или программа должна работать в течение долгого времени. Чтобы не отказываться от интерактивного использования, командной оболочки можно выполнять команды асинхронно. Для этого нужно дополнить команду знаком амперсанда (&). Это указывает командной оболочке запустить команду в фоновом режиме, что позволит продолжить работу в Bash. Листинг 5 демонстрирует эту и другие техники управления заданиями.


Листинг 5. Демонстрация управления заданиями в Bash
                    
rb$ grep paper.pdf /var/log/httpd/access.log | wc -l
5
rb$ python demo.py &    
[1] 20451
rb$ jobs
[1]+  Running                 python demo.py &
rb$ fg 1
python demo.py

Листинг 5 демонстрирует две различные техники управления заданиями. В первом примере команда grep ищет строку paper.pdf в лог-файле Web-сервера Apache Web. Результат работы этой команды передается через конвейер команде wc -l, которая считает количество строк. Таким образом, целиком команда подсчитывает число строк, содержащих paper.pdf в лог-файле.

Во втором примере программа на языке Python запускается в фоне для долговременной работы. Bash запускает это задание асинхронно в фоне и указывает идентификатор задания. Используя команду jobs, можно просмотреть список всех запущенных команд. В этом примере запущена только одна программа, она выводится из фоновой работы в синхронное выполнение с помощью команды fg. В этом руководстве было рассказано только об основных возможностях Bash по управлению заданиями. Чтобы стать мастером командной строки, необходимо более подробно изучить эту область.

6 из 9 | предыдущая | следующая

Комментарии



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=316702
TutorialTitle=Работа в командной оболочке Bash
publish-date=06262008
author1-email=rb@ncsa.uiuc.edu
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).