Читаем Внутреннее устройство Linux полностью

Может потребоваться добавить два дефиса (—) в конце команды xargs, если есть вероятность того, что название какого-либо целевого файла начинается с дефиса (-). Двойной дефис (—) можно применять, чтобы сообщить какой-либо команде, что аргументы, которые за ним следуют, являются именами файлов, а не параметрами. При этом помните, что не все команды поддерживают использование двойного дефиса.

Есть альтернатива команде xargs при применении команды find: параметр -exec. Однако ее синтаксис довольно мудреный, так как вам необходимо использовать символы {} для подстановки имени файла и литерал ;, чтобы указать окончание команды. Вот как выполняется предыдущая задача с помощью одной лишь команды find:

$ find . -name '*.gif' -exec file {} \;


11.10.5. Команда expr

Если вам необходимо использовать арифметические операторы в сценариях оболочки, может прийти на помощь команда expr (которая выполняет даже некоторые операции со строками). Например, команда expr 1 + 2 выводит результат 3. Запу­стите команду expr -help, чтобы получить полный перечень операций.

Применение команды expr — это неуклюжий и медленный способ выполнения математических вычислений. Если вам часто приходится заниматься ими, то, вероятно, лучше использовать что-либо вроде языка Python вместо сценария оболочки.


11.10.6. Команда exec

Команда exec является встроенной в оболочку функцией, которая заменяет текущий процесс оболочки той командой, которую вы укажете после команды exec. Она осуществляет системный вызов exec, о котором вы узнали из главы 1. Эта функция предназначена для сохранения системных ресурсов, однако помните о ее необратимости: если запустить команду exec в сценарии оболочки, то этот сценарий и сама оболочка прекратят работу, уступив место новой команде.

Чтобы проверить это в окне оболочки, попробуйте запустить команду exec cat. После нажатия сочетания клавиш Ctrl+D или Ctrl+C для завершения команды cat окно оболочки должно исчезнуть, поскольку его дочерний процесс больше не существует.


11.11. Подоболочки

Предположим, вам необходимо немного изменить среду в оболочке, но это изменение не должно стать постоянным. Можно изменить, а потом вернуть в исходное состояние часть среды (например, путь или рабочий каталог), используя переменные оболочки, однако такой способ довольно груб. Простой вариант выполнения подобных задач заключается в применении подоболочки, совершенно нового процесса оболочки, который можно создать только для того, чтобы выполнить одну-две команды. Новая оболочка обладает копией среды исходной оболочки, и когда новая оболочка существует, любые изменения, которые будут сделаны в ее среде, не отразятся на обычной работе исходной оболочки.

Чтобы использовать подоболочку, поместите в скобки те команды, которые она должна выполнить. Например, следующая строка выполняет команду uglyprogram в каталоге uglydir, оставляя исходную оболочку без изменений:

$ (cd uglydir; uglyprogram)

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

$ (PATH=/usr/confusing:$PATH; uglyprogram)

Использование подоболочки для выполнения одноразового изменения среды является настолько распространенным, что существует даже встроенный синтаксис, который не прибегает к подоболочке:

$ PATH=/usr/confusing:$PATH uglyprogram

Каналы и фоновые процессы также работают в подоболочках. Следующий пример использует команду tar для архивирования всего дерева каталогов внутри каталога orig, а затем распаковывает этот архив в новый каталог target, дублируя тем самым файлы и папки каталога orig (это оправданно, поскольку при этом сохраняются сведения о владельцах и правах доступа, и это обычно выполняется быстрее, чем команда типа cp -r):

$ tar cf–orig | (cd target; tar xvf -)


внимание

Тщательно проверяйте подобные команды перед их запуском, чтобы убедиться в том, что каталог target существует и он абсолютно отличается от каталога orig.


11.12. Включение других файлов в сценарии

Если вам необходимо включить другой файл в сценарий оболочки, используйте оператор «точка» (.). Например, такая строка выполняет команды из файла config.sh:

. config.sh

Подобный синтаксис «включения» не запускает подоболочку и может быть полезен для группы сценариев, которым необходимо использовать единственный файл конфигурации.


11.13. Чтение пользовательского ввода

Команда read считывает строку текста из стандартного ввода и сохраняет ее текст в переменной. Например, следующая команда сохраняет ввод в переменной $var:

$ read var

Эта встроенная в оболочку команда может оказаться полезной в сочетании с другими функциями оболочки, не упомянутыми в данной книге.


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

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

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT
Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети / Книги по IT