Архив рубрики: Статьи о Linux

Командные оболочки в Linux

Командные оболочки в Linux

Для работы в консоли Linux имеет не одну программу. Такие приложения называют также командными оболочками. Оболочки позволяют пользователю взаимодействовать с системой посредством ввода команд. К их числу можно отнести программы sh и bash, исполняемые файлы которых находятся в каталоге /bin. Практически всегда по умолчанию ставится оболочка bash – будем использовать ее в примерах. Если вы используете другую оболочку, это не имеет значения, так как ее возможности, скорее всего, не уступают bash.

Команды, которые вводятся в строку консоли, – это чаще всего названия программ или ссылок на них. После загрузки системы устанавливается системная переменная PATH (англ. путь), описывающая все пути, по которым можно найти определенную программу. Если в каталоге, в котором вы находитесь, нет нужной программы, она ищется по всем путям, и исполняется первая найденная. После загрузки доступны программы из «обязательного набора», который находится в каталоге /bin. При осуществлении базовых операций (создание каталога, файла, установка даты и времени) всегда используются программы из этой папки.

Что такое аргументы в Linux

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

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

Аргументы, как вы уже поняли, делятся на две группы – обязательные и необязательные. Обязательные аргументы указывают программе необходимую для работы информацию; без указания какого-то из обязательных аргументов приложение попросит ввести их отдельно либо выдаст ошибку. Необязательные аргументы часто только уточняют ход работы программы. Все аргументы вводятся после имени программы. Если аргумент содержит пробел, то весь аргумент следует заключить в кавычки.

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

Пример использования аргументов в Linux

Развивая предыдущий пример с магазином, рассмотрим гипотетическую программу go_shop, которая выполняет «поход в магазин»:

go_shop -goods=молоко,яйца,сыр –shop=через_дорогу -now

Программой здесь является goshop; для нее указывается обязательный аргумент goods, значением которого является список покупок, и два необязательных – shop, обозначающий месторасположение требуемого магазина, и now, который сообщает, что сходить нужно прямо сейчас.

Следует иметь в виду, что практически каждая консольная (и не только консольная) утилита имеет следующие стандартные аргументы:

––help либо -h – эти аргументы указывают программе не выполнять свои характерные действия, а вывести справку, в которой отображается назначение программы и/или ее аргументы;

––version – предписывает программе не выполнять никаких действий, кроме вывода на экран номера своей версии.

Перенаправление ввода/вывода в Linux

Перенаправление ввода/вывода в Linux

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

foo < textfile

Практически так же реализуется перенаправление вывода. Если программа foo выводит на экран информацию, а вы хотите, чтобы программа направляла ее в файл (назовем его outfile), то следует выполнить такую операцию:

foo > outfile

Таким образом можно решить некоторые проблемы, например когда программа выводит на экран длинный текст, который не помещается в консоли, что нередко случается при вызове программы с параметром –help с целью получения справки по использованию (впрочем, есть лучший метод решения данной проблемы). При необходимости можно также направить вывод в файл /dev/null, чтобы приложение не выводило на экран вообще ничего.

Никогда не перенаправляйте вывод на файлы устройств – такие, как, например, /dev/hda, /dev/hdb и т. д. Этим вы повредите данные на носителе информации. Есть еще один способ перенаправления вывода:

foo >> outfile

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

Ввод результата работы другого приложения

При работе с командной строкой в операционной системе Linux есть еще одна примечательная возможность. Иногда в качестве входного текста для какой-либо программы требуется ввести результат работы другого приложения, который оно отображает на экране. Сделать это в Linux несложно.

Пусть некоторая программа program1 выводит на экран какие-либо данные. Пусть существует также некоторая программа program2 которая требует ввести с устройства ввода какие-то данные. И, наконец, пусть данные, выводимые на экран первой программой, пригодны в качестве входных данных для второй. Задачу можно выполнить с помощью следующей строки:

program1 | program2

При этом данные, которые первая программа пытается вывести на экран, отображаться не будут, а вместо этого по окончании работы первой программы они будут введены в качестве входных данных для второй.